在QtCreator中使用libtorrent库的时候,
项目配置中 libs项配置如下:
LIBS += -liconv -ltorrent-rasterbar -lboost_system -lboost_filesystem
编译的时候出现如下错误:
/usr/local/lib/libtorrent-rasterbar.so:-1: error: undefined reference to `libiconv_open'
/usr/local/lib/libtorrent-rasterbar.so:-1: error: undefined reference to `libiconv'
:-1: error: collect2: error: ld returned 1 exit status
最初是以为libiconv没有装
查看一下
$ ls /usr/local/include/iconv* /usr/local/lib/libiconv*
结果如下:
/usr/local/include/iconv.h /usr/local/lib/libiconv.so /usr/local/lib/libiconv.so.2.5.1
/usr/local/lib/libiconv.la /usr/local/lib/libiconv.so.2
libiconv已经安装了
那就看看是不是没有链接到/use/local/lib中的库吧
查看 /etc/ld.so.config
发现 /usr/local/lib已经写入
也不是ld.so.config的问题,接下来尝试重新编译安装 libtorrent 和 libconv,问题还是没解决。
google一下 , 找的许多文章都是关于php的,而且解决方法不奏效,
然后发现了这篇帖子 :
http://www.cnblogs.com/lovemdx/archive/2013/06/09/3128371.html
该贴的解决方案是讲自己安装的libiconv卸载,使用libc提供的libiconv,依然无法解决我这个问题,
但是贴中讲的先后顺序的问题给了我点启发,于是尝试着调整一下 LIBS 中的库链接选项的顺序 ,
试着把 -liconv 移到最后
LIBS += -ltorrent-rasterbar -lboost_system -lboost_filesyste -liconv
问题解决