Linux ld链接问题

我在编译一个执行文件的时候需要链接两个库文件 libfilelist.so和libsqlite3.so。其中libfilelist.so为自己编译出来的库文件。libsqlite3.so为SQLite3库文件,

这两个文件都存在,而且链接的路径也已经修改(/etc/ld.so.conf.d/中添加了libfilelist.so路径),链接时也成功。如

#gcc -o main main.c -I../inc -L../lib -lfilelist -lsqlite3

编译链接成功,但是执行的时候出问题

./main: symbol lookup error: /home/pyc/myWorkspace/filelist/lib/libfilelist.so: undefined symbol: sqlite3_open

# ldd main
linux-gate.so.1 =>  (0xb77c6000)
libfilelist.so => /home/pyc/myWorkspace/filelist/lib/libfilelist.so (0xb7780000)
libc.so.6 => /lib/i386-linux-gnu/libc.so.6 (0xb75d6000)
/lib/ld-linux.so.2 (0xb77c7000)

发现成功链接了libfilelist.so文件,但是libsqlite3.so没有链接上。

ldd -r main
undefined symbol: sqlite3_open (/home/pyc/myWorkspace/filelist/lib/libfilelist.so)
linux-gate.so.1 =>  (0xb7782000)
libfilelist.so => /home/pyc/myWorkspace/filelist/lib/libfilelist.so (0xb773c000)
libc.so.6 => /lib/i386-linux-gnu/libc.so.6 (0xb7592000)
/lib/ld-linux.so.2 (0xb7783000)
undefined symbol: sqlite3_errmsg (/home/pyc/myWorkspace/filelist/lib/libfilelist.so)
undefined symbol: sqlite3_prepare_v2 (/home/pyc/myWorkspace/filelist/lib/libfilelist.so)
undefined symbol: sqlite3_column_int (/home/pyc/myWorkspace/filelist/lib/libfilelist.so)
undefined symbol: sqlite3_step (/home/pyc/myWorkspace/filelist/lib/libfilelist.so)
undefined symbol: sqlite3_reset (/home/pyc/myWorkspace/filelist/lib/libfilelist.so)
undefined symbol: sqlite3_clear_bindings (/home/pyc/myWorkspace/filelist/lib/libfilelist.so)
undefined symbol: sqlite3_finalize (/home/pyc/myWorkspace/filelist/lib/libfilelist.so)
undefined symbol: sqlite3_column_blob (/home/pyc/myWorkspace/filelist/lib/libfilelist.so)
undefined symbol: sqlite3_column_text (/home/pyc/myWorkspace/filelist/lib/libfilelist.so

发现因为没有链接libsqlite3.so所以导致了很多的函数没有找到定义。这其中原因应该是Ubuntu上安装了binutils-gold,执行ld -v可以看到不一样的地方

#ld -v

GNU gold (GNU Binutils for Ubuntu 2.22) 1.11

正常机器是

#ld -v

GNU ld (GNU Binutils for Ubuntu) 2.22

这应该安装了binutils-gold之后导致了ld链接出了问题。所以我们将binutils-gold删除掉即可。

#sudo apt-get remove binutils-gold

再重新编译执行,OK了


本文参考:http://stackoverflow.com/questions/14405601/gnu-scientific-library-cblas-symbol-lookup-error



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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值