【发布时间】:2013-07-30 19:48:12
【问题描述】:
我知道有很多类似的问题,但我的问题几乎没有什么不同,并且没有帮助我。
我正在使用 boost-iostreams 库,这是我的问题,我试图将我的程序与库链接:
ld -I/usr/include/boost/iostreams/ -I/usr/include/boost/iostreams/device/ -L/usr/lib/libboost_iostreams.so -lboost-iostreams fd.o -o x
结果是:
ld: cannot find -lboost-iostreams
当我试图明确地写出来时:
ld -I/usr/include/boost/iostreams/ -I/usr/include/boost/iostreams/device/ --library /usr/lib/libboost_iostreams.so -lboost-iostreams fd.o -o x
它告诉我图书馆不存在:
ld: cannot find -l/usr/lib/libboost_iostreams.so
ld: cannot find -lboost-iostreams
但确实如此:
$ ls -l /usr/lib/libboost_iostreams*
-rw-r--r-- 1 root root 204682 feb 4 05:28 /usr/lib/libboost_iostreams.a
lrwxrwxrwx 1 root root 20 feb 4 05:28 /usr/lib/libboost_iostreams-mt.a -> libboost_iostreams.a
lrwxrwxrwx 1 root root 28 feb 4 05:28 /usr/lib/libboost_iostreams-mt.so -> libboost_iostreams.so.1.49.0
lrwxrwxrwx 1 root root 28 feb 4 05:28 /usr/lib/libboost_iostreams.so -> libboost_iostreams.so.1.49.0
-rw-r--r-- 1 root root 94280 feb 4 05:28 /usr/lib/libboost_iostreams.so.1.49.0
关于我:
- 操作系统:Debian 7 Wheezy
- 编。语言:c++
- 编译器:g++ (Debian 4.7.2-5) 4.7.2
- 链接器:GNU ld(Debian 的 GNU Binutils)2.22
- boost 库版本:1.49(来自 debian repo)
谢谢!
编辑:
正确的选项应该是-lboost_iostreams,而不是-lboost-iostreams
EDIT2:
编辑后我的命令是:
ld fd.o -I/usr/include/boost/iostreams/ -I/usr/include/boost/iostreams/device/ -o x $(LIB_PATH) -lboost_iostreams
其中 libpath 是以下之一:
LIB_PATH=
LIB_PATH=-L/usr/lib/
LIB_PATH=/usr/lib/libboost_iostreams.so
LIB_PATH=/usr/lib/libboost_iostreams.a
但结果还是:
ld: warning: cannot find entry symbol _start; defaulting to 000000000804cc10
fd.o: In function `__static_initialization_and_destruction_0(int, int)':
fd.cpp:(.text+0xd6): undefined reference to `__dso_handle'
ld: x: hidden symbol `__dso_handle' isn't defined
ld: final link failed: Bad value
make: *** [x] Error 1
【问题讨论】:
-
库被称为
libboost_iostreams并带有下划线,但您正在尝试将lboost-iostreams与-链接。
标签: c++ linker linker-errors shared-objects boost-iostreams