短い質問: どのように位置をllvm-ld
特定しますlibstdc++
か?
詳細:
次のエラー メッセージが表示されます。
llvm-ld: error: Cannot find library 'stdc++'
実行中llvm-ld
。llvm-ld
を検索する方法を理解しようとしていますlibstdc++
。
新しいシステムをセットアップし、別のシステムで動作するコンパイル手順に従っています。最終的に、Cadence やその他のさまざまなソフトウェアを含む多数のディレクトリを含む古いシステムにLD_LIBRARY_PATH
設定されていた との違いに気付きました。.bashrc
を使用したくありません。適切なコマンド ライン パラメータを に指定しLD_LIBRARY_PATH
てリンクできるようにしたいのです。libstdc++
llvm-ld
私が実行しているコマンドは次のとおりです。
llvm-ld -disable-internalize -native -o foo foo.bc4 -L/usr/lib/x86_64-linux-gnu -lpthread -lrt -lstdc++ -lm -v
次の出力が得られます。
Linking bitcode file 'foo.bc4'
Linked in file 'foo.bc4'
Linking archive file '/usr/lib/x86_64-linux-gnu/libpthread.a'
Linking archive file '/usr/lib/x86_64-linux-gnu/librt.a'
llvm-ld: error: Cannot find library 'stdc++'
ただし、実行ls -l /usr/lib/x86_64-linux-gnu/libstdc++*
すると次のようになります。
lrwxrwxrwx 1 root root 19 Apr 15 16:34 /usr/lib/x86_64-linux-gnu/libstdc++.so.6 -> libstdc++.so.6.0.16
-rw-r--r-- 1 root root 962656 Apr 15 16:36 /usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.16
llvm-ld
では、なぜこのファイルが見つからないのかわかりませんか? 特に、LD_LIBRARY_PATH
セットを使用してコンパイルしldd
、結果の実行可能ファイルを実行すると、次の出力が得られるためです。
linux-vdso.so.1 => (0x00007ffff7ffe000)
libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 (0x00007ffff7dc1000)
libstdc++.so.6 => /usr/lib/x86_64-linux-gnu/libstdc++.so.6 (0x00007ffff7ac0000)
libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007ffff77c6000)
libgcc_s.so.1 => /lib/x86_64-linux-gnu/libgcc_s.so.1 (0x00007ffff75b0000)
libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007ffff71f0000)
/lib64/ld-linux-x86-64.so.2 (0x0000555555554000)
libstdc++
これは、私が望むバージョンが であることを示しているようですが、検索パスでそれを見つけられない/usr/lib/x86_64-linux-gnu/libstdc++.so.6
理由がわかりません。llvm-ld
-L/usr/lib/x86_64-linux-gnu
参考uname -a
までに:結果は次のとおりです。Linux FOO 3.2.0-30-generic #48-Ubuntu SMP Fri Aug 24 16:52:48 UTC 2012 x86_64 x86_64 x86_64 GNU/Linux
そしてllvm-ld --version
:
LLVM (http://llvm.org/):
LLVM version 3.1svn
Optimized build.
Built Sep 14 2012 (13:22:38).
Default target: x86_64-unknown-linux-gnu
Host CPU: core2