2016-05-20 5 views
0

内部的にブーストを使用するライブラリをビルドしたいとします(ブースト:: asioで特に)。ライブラリのパブリックインターフェイスは、任意のブーストタイプに依存しません。cmake:静的にリンクされたブースト(または埋め込みブースト)を使用してライブラリを作成する方法

ライブラリはQtアプリケーションで使用されていると想定されています。アプリケーションのビルドスクリプト(現在はqmakeを使用しています)にブースト依存関係を導入する必要はなく、依存関係のみにするには "mylib"が必要です。 ライブラリビルドシステムはCMakeです。私は、静的にリンクブーストと共有ライブラリを構築しようとしましたが、私のようなエラーを取得しています:(少なくともにMinGW64プライマリターゲットターゲット/ツールチェインがGCCのx64(Linux)のですが、クロスプラットフォーム・ソリューションを持って良いでしょう

/usr/bin/ld: /usr/lib/x86_64-linux-gnu/libboost_system.a(error_code.o): relocation R_X86_64_32 against `.rodata.str1.1' can not be used when making a shared object; recompile with -fPIC 
/usr/lib/x86_64-linux-gnu/libboost_system.a: error adding symbols: Bad value 

とMacOS X)。静的ライブラリを作成する

もオプションですが、私は「MYLIB」

+1

これをチェックアウトする[http://stackoverflow.com/a/31544491/4635560] –

答えて

0

あなたは動的ライブラリ内の静的ライブラリのために構築されたコードを使用することはできませんへの静的ブーストLIBSを含めるする方法を見つけ出すことができませんでした。共有ライブラリには、位置に依存しないコードが必要です。 Boost共有ライブラリを構築するために使用されたオブジェクトファイルを取得し、それらをすべて.aファイルに入れて使用することができます。または、静的ライブラリをコンパイルするフラグに-fPICを追加するためにBoostビルドを作成してください。

関連する問題