版权声明:本文为博主原创文章,未经博主允许不得转载。 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
来查找。
好了,今天总结就是这样了。