11

Boostに依存するアプリケーションを構築しようとしています。そこで、Boost 1_41_0をLinuxボックスにダウンロードし、UnixバリアントのBoostサイト( http://www.boost.org/doc/libs/1_41_0/more/getting_started/unix-variants.html )にある指示に従いました。

彼らは基本的に私が行った./bjaminstallを実行することを提案します。ビルドは正常に完了しました。ただし、ライブラリ名は、上記のドキュメントと、ビルドしようとしているアプリケーションのmakefileで指定されているものの両方で説明されているBoost命名規則と一致していないようです。

bjamに指定できるオプションがたくさんあることに気づき、それらを試してみましたが、何が起こってもうまくいかないようです。私の理解では、ライブラリは$ BOOST_ROOT/libディレクトリに配置する必要があります。これはライブラリが表示される場所ですが、名前は次のとおりです。

libboost_thread.a
libboost_thread.so
libboost_thread.so.1.41.0

libboost_thread-gcc41-mt-d-1_41_0などの名前が付けられると思います。

./bjam --build-type = complete --layout = tagsを試してみましたが、次のように表示されます。

libboost_thread.a
libboost_thread-mt.a
libboost_thread-mt-d.a
libboost_thread-mt-d.so
libboost_thread-mt-d.so.1.41.0
libboost_thread-mt-s.a
libboost_thread-mt-sd.a
libboost_thread-mt.so
libboost_thread-mt.so.1.41.0
libboost_thread.so
libboost_thread.so.1.41.0

だから、私はステージを私の-Lディレクトリにするべきかどうかわかりませんか?これをより詳細に説明しているドキュメントはありますか?

4

3 に答える 3

7

名前は1.40.0で変更されました-リリースノートを参照してください:

ビルドシステム

Unixライクな環境でのライブラリのデフォルトの命名は、システムの規則と一致するようになり、さまざまな装飾が含まれていません。

彼らはおそらくビルドドキュメントのこの部分を更新するのを忘れていました。

于 2009-11-20T07:56:58.517 に答える
2

ここには 2 つの変数があります。最初は「インストール」と「ステージ」(デフォルト) です。"install" は、ライブラリとヘッダーの両方をディレクトリ (デフォルトでは /usr/local) にコピーします。その後、ソース ツリーを削除できます。「stage」はライブラリを「stage/lib」に置き、「-L /stage/lib -I」フラグを追加する必要があります。

2 番目は --layout=versioned と --layout=system です。彼らが何をしているのかをすでに発見したようです。実際、システムは1.40以降のデフォルトです。入門ガイドではこれについて言及されていないため、更新するためのアクション アイテムを追加しました。理想的には、アプリケーションの作成者と話し合って、boost ライブラリのシステム命名を使用する必要があります。それが不可能な場合は、 --layout=versioned でビルドすることが唯一のオプションです。

于 2009-11-20T20:25:13.420 に答える
1

http://www.boost.org/doc/libs/1_35_0/more/getting_started/windows.html#library-namingの Boost ドキュメントから、規則は次のとおりです。

-mt Threading タグ: ライブラリがマルチスレッド サポートを有効にしてビルドされたことを示します。マルチスレッド サポートなしでビルドされたライブラリは、-mt がないことで識別できます。

-d ABI タグ: ライブラリと他のコンパイル済みコードとの相互運用性に影響する詳細をエンコードします。このような機能ごとに、1 文字がタグに追加されます。

キー 次の場合にこのライブラリを使用します。
■ C++ 標準ライブラリおよびコンパイラ ランタイム サポート ライブラリへの静的リンク。
g 標準およびランタイム サポート ライブラリのデバッグ バージョンを使用します。
y Python の特別なデバッグ ビルドを使用します。
d コードのデバッグ バージョンをビルドします。
p コンパイラで提供されるデフォルトのライブラリではなく、STLPort 標準ライブラリを使用します。
n STLPort の非推奨の「ネイティブ iostream」機能を使用します。

たとえば、スタティック ランタイム ライブラリのデバッグ バージョンと STLPort 標準ライブラリを「ネイティブ iostream」モードで使用するためにコードのデバッグ バージョンをビルドする場合、タグは -sgdpn になります。上記のいずれにも該当しない場合、ABI タグは省略されます。

于 2013-02-22T07:54:04.147 に答える