4

似たような質問がたくさんあることは知っていますが、私の質問は少し異なり、役に立ちませんでした。

私は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

私について:

  • OS: Debian 7 ウィージー
  • プログラム。言語: C++
  • コンパイラ: g++ (Debian 4.7.2-5) 4.7.2
  • リンカ: GNU ld (Debian 用 GNU Binutils) 2.22
  • ブースト ライブラリ バージョン: 1.49 (debian リポジトリから)

ありがとう!

編集:

正しいオプションは-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
4

1 に答える 1