1

64 ビット x86 マシンで gcc 4.5.1 を使用して、最初に次のように ao を作成します: g++ -fPIC -c a.cc -o ao

次に、次のように liba.so を作成してみてください: g++ -static-libstdc++ -shared -W1,-soname,liba.so -o liba.so.1.0.0 ao

次の情報で失敗しました: 再配置 R_X86_64_32S に対する `vtable for __gnu_cxx::stdio_filebuf >' は、共有オブジェクトを作成するときに使用できません。-fPIC で再コンパイル

-fPIC を追加して libstdc++ ライブラリを再コンパイルしようとしましたが、とにかく失敗しました

4

2 に答える 2

0

静的libstdc++ライブラリはでビルドされていない-fPICため、共有ライブラリにリンクできないと思います。

理論的には、PICでコンパイルされていないコードをダイナミックライブラリに入れることはできますが、共有できないため(それを使用する各プログラムには独自のコピーが必要です)、実装されないことがよくあります。

共有C++ライブラリに対してリンクするか、独自のライブラリを静的ライブラリにするか、またはlibstdc ++を自分で再構築して、ビルドディレクトリから.oファイルを取得する必要があります。

于 2012-05-09T11:04:25.443 に答える
0

libstdc++ の静的リンクに関する外部サイトを参照する、stackoverflow に関するこのトピックに関する同様の質問があります。

于 2012-05-09T13:39:36.180 に答える