私のシステムで Debian Wheezy と g++4.7 を使用してプログラムをコンパイルしようとしています。Debian Squeeze を使用して別のシステムで実行できるようにしたい (最近の g++ は使用しない)。Squeeze でプログラムをコンパイルできません。これはC++11
、新しい Boost バージョンと libcrypto++9 だけでなく、古い g++ がサポートしていない特定の機能を使用しているためです。
私が理解している限り、この問題を回避する通常の方法は、他のシステムでサポートされていないライブラリを静的にリンクすることlibstdc
です。boost
crypto++
私の(リンク)コンパイラ呼び出しは今
g++-4.7 .obj/btcmirco.o -Wl,-Bstatic -lboost_program_options -lboost_system -lcrypto++ -Wl,-Bdynamic -lcurl -static-libgcc -std=c++11 -o MyProgram
ただし、未定義の参照エラーが多数スローされるため、何かを見逃しているようです。に動的リンクするとcrypto++
(そして静的リンクのみ)、正常に動作libstdc
しboost
ます。
何が間違っているのか、または私のアプローチに根本的な誤りがあるかどうかを誰かに教えてもらえますか?
私が得るリンカエラーは(短縮)です:
`.text._ZN8CryptoPP22BufferedTransformationD2Ev' referenced in section `.text._ZN8CryptoPP22BufferedTransformationD1Ev[_ZN8CryptoPP22BufferedTransformationD1Ev]' of /usr/lib/gcc/x86_64-linux-gnu/4.7/../../../../lib/libcrypto++.a(cryptlib.o): defined in discarded section `.text._ZN8CryptoPP22BufferedTransformationD2Ev[_ZN8CryptoPP22BufferedTransformationD5Ev]' of /usr/lib/gcc/x86_64-linux-gnu/4.7/../../../../lib/libcrypto++.a(cryptlib.o)
`.text._ZN8CryptoPP25MessageAuthenticationCodeD2Ev' referenced in section `.text._ZN8CryptoPP25MessageAuthenticationCodeD1Ev[_ZN8CryptoPP25MessageAuthenticationCodeD1Ev]' of /usr/lib/gcc/x86_64-linux-gnu/4.7/../../../../lib/libcrypto++.a(cryptlib.o): defined in discarded section `.text._ZN8CryptoPP25MessageAuthenticationCodeD2Ev[_ZN8CryptoPP25MessageAuthenticationCodeD5Ev]' of /usr/lib/gcc/x86_64-linux-gnu/4.7/../../../../lib/libcrypto++.a(cryptlib.o)