error:/usr/bin/ld:skipping incompatible ./libxxxx.so when searching for -lxxxx

一次在linux上部署环境,需要编译一个测试库;

编译过程中出现这一个提示:

error:/usr/bin/ld:skipping incompatible ./libxxxx.so when searching for -lxxxx

这需要的.so库文件明明在其目录下,并且该目录也添加到编译选项Makefile中了,并且所有的库都给了权限了的。

解决未果,Google了下,经提醒是由于linux位数不一样导致的编译错误。

需要的.so的库是在32bit环境下编译的,而需要部署环境的这台linux系统是64bit的,导致的错误。

将需要的.so库在64bit环境下重新编译之后,测试库的编译也通过了。

 

下面介绍下Google上的查看linux系统的位数的方法。

参考地址:http://www.cnblogs.com/bigcat814/archive/2012/12/04/2800832.html

查看linux系统的位数:在shell中输入:getconf LONG_BIT

得到系统的位数,我的这台是64位的。

查看.so库文件编译时的系统位数:在shell中输入:readelf -h libxxxxxx.so

可以看到CLASS一行显示的是ELF32,可知此库是在32位系统下编译的。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值