1

私のシステムでは、expat は次の場所にあります。

/usr/include/expat.h
/usr/include/expat_external.h
/usr/lib/libexpat.1.5.0.dylib
/usr/lib/libexpat.1.dylib
/usr/lib/libexpat.dylib
/usr/lib/libexpat.la

だから私はブーストに必要な変数をエクスポートしてgraphmlを構築します

export EXPAT_INCLUDE=/usr/include
export EXPAT_LIBPATH=/usr/lib

次に実行します ($DIR と $BOOST は、インクルードとライブラリを移動するパスを生成します)

./configure --includedir=$DIR/$BOOST --libdir=$DIR/$BOOST/lib \
            --with-libraries=テスト、グラフ

次のエラーが表示されます。

ld: -lexpat collect2 のライブラリが見つかりません: ld は 1 つの終了ステータスを返しました

どのブーストが言うのは、次の行が原因です。

g++ -dynamiclib -install_name "libboost_graph-mt-1_35.dylib" -L"/usr/lib"
    -o "bin.v2/libs/graph/build/darwin/release/macosx-version-10.4/threading-multi/libboost_graph-mt-1_35.dylib"
    「bin.v2/libs/graph/build/darwin/release/macosx-version-10.4/threading-multi/read_graphviz_spirit.o」
    「bin.v2/libs/graph/build/darwin/release/macosx-version-10.4/threading-multi/graphml.o」   
    -lexpat -isysroot /Developer/SDKs/MacOSX10.4u.sdk -mmacosx-version-min=10.4 -Wl,-dead_strip -no_dead_strip_inits_and_terms

-L"/usr/lib"および-lexpat引数としてexpatライブラリを見つけられない方法がわかりませんか? 私の理解では、 /usr/lib/libexpat.dylib は正確に and として参照され-L"/usr/lib"てい-lexpatます。

graphml をビルドするための Jamfile はこちらです。EXPAT_INCLUDEとが設定されていない場合、EXPAT_LIBPATH警告が表示されます (jamfile の 39 ~ 41 行目)。

警告: グラフ ライブラリには、オプションの GraphML リーダーが含まれていません。
注: GraphML サポートを有効にするには、EXPAT_INCLUDE を設定し、
注: Expat ヘッダーとライブラリをそれぞれ含むディレクトリを設定します。

4

1 に答える 1

1

別の更新: EXPAT の場所のリストに .so または .a ファイルが表示されません...それは少し奇妙に思えませんか? 通常、ライブラリ名のエイリアスを作成します

例えば ​​/usr/lib/libblah.so -> /usr/lib/libblaah.so.1.2

dynalib はいくつかの Macintoshism です (私は Mac をあまり使用しません)。

このプラットフォームの静的バージョン拡張子は .la ですか?

アップデート:

パスを引用符で囲むのは面倒なようです... -L"/usr/lib"

これを -L/usr/lib および -L /usr/lib に変更してみてください

古いもの:

リンク ステップ中にパスを含めるためのリンカのディレクティブは -L です。-L path_to_expat を含めるように更新するには、いくつかのリンカー フラグを探す必要があります。リンカは LD_LIBRARY_PATH に注意を払っていないと思います。EXPAT_INCLUDE または EXPAT_LIBPATH を設定するためにどのドキュメントを読んだかわかりません。

于 2009-04-05T03:14:45.520 に答える