Linux交叉编译总结

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/xiao3404/article/details/86187096

背景

在项目中使用了VLC开源库,该项目在Ubuntu 14.0平台进行交叉编译,生成的exe最终应用在window平台;交叉编译使用了以下库:

 gcc-mingw-w64-i686 
 g++-mingw-w64-i686 
 mingw-w64-tools

大小写敏感

linux 平台对大小敏感,window平台对大小不敏感。比如头文件包含

window平台的头文件:

#include <Windows.h>
#include <Winnls.h>

linux平台的头文件:

#include <windows.h>
#include <winnls.h>

如果不加注意,vs编译通过的代码在linux 平台不一定通过,linux平台一般都是小写

添加链接库

windows平台我们需要链接库时,使用pragma comment或者vs中配置链接选项,代码如下:

#pragma comment(lib,"Kernel32.lib")

在linux平台,使用#pragma comment将不会生效,在window平台链接库是xxx.lib,对应到linux平台则是lxxx形式,均转换为小写。

例如:
在window平台链接库Kernel32.lib对应到linux是lkernel32,其真实链接库名称如下:

/usr/i686-w64-mingw32/lib/libkernel32.a
/usr/i686-w64-mingw32/lib/libws2_32.a

在linux平台下链接库的配置一般是在MakeFile.am文件中,其形式如下:

libstream_out_transcode_plugin_la_LIBADD = $(AM_LIBADD) -lws2_32

其中-lws2_32就是我们添加的链接库,该链接库添加的位置有什么特点呢?

我们可以通过关键字LIBADD来查找。

好了,今天总结就是这样了。

猜你喜欢

转载自blog.csdn.net/xiao3404/article/details/86187096
今日推荐