g++编译问题:skipping incompatible /usr/lib//libboost_system.so when searching for -lboost_system

29 篇文章 0 订阅

原文:https://www.cnblogs.com/chutianyao/p/4680927.html

连接器无法识别libboost_system.so,虽然找到了动态库文件libboost_system.so但不兼容,导致无法完成链接。

这种情况一般都是二进制不兼容(通俗的讲就是,在一台机器(比如32位)上编译得到的so,放在另一台机器(比如64位)上链接)。

查看库文件的属性:

chu@:~/SCFF_proj/trunk/example/echo/websvc[06:21:18]$ readelf -h /usr/lib//libboost_thread-mt.so.1.53.0
ELF 头:
  Magic:  7f 45 4c 46 01 01 01 03 00 00 00 00 00 00 00 00 
  Class:                             ELF32
  Data:                              2's complement, little endian
  Version:                           1 (current)
  OS/ABI:                            UNIX - GNU
  ABI Version:                       0
  Type:                              DYN (共享目标文件)
  Machine:                           Intel 80386
  Version:                           0x1
  入口点地址:              0x8ee0
  程序头起点:              52 (bytes into file)
  Start of section headers:          83820 (bytes into file)
  标志:             0x0
  本头的大小:       52 (字节)
  程序头大小:       32 (字节)
  Number of program headers:         7
  节头大小:         40 (字节)
  节头数量:         29
  字符串表索引节头: 28

可以看到这个库文件是为32位操作系统编译的。

 

而我的机器是64位的:

chu@:~/SCFF_proj/trunk/example/echo/websvc[06:21:41]$ uname -a
Linux localhost.localdomain 3.10.0-123.el7.x86_64 #1 SMP Mon Jun 30 12:09:22 UTC 2014 x86_64 x86_64 x86_64 GNU/Linux

总结下原因就是:

在64位的机器上安装了32位的boost库,能编译才怪。。。。(我为什么会干这种事呢~^~)

 

解决办法:

卸载32位的库,重新安装64位的。

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值