在Boost Build中链接libexpat的问题 - 用于构建graphml

时间:2009-04-05 03:08:32

标签: boost boost-build graphml

在我的系统上,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

所以我将boost所需的变量导出到构建 graphml

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

然后我运行($ DIR和$ BOOST生成我希望包含和libs的路径)

./configure --includedir=$DIR/$BOOST --libdir=$DIR/$BOOST/lib \ 
            --with-libraries=test,graph

我收到此错误:

ld: library not found for -lexpat collect2: ld returned 1 exit status

提升说是由线路引起的:

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被完全引用为-L"/usr/lib"-lexpat

用于构建graphml的Jamfile是here。如果未设置EXPAT_INCLUDEEXPAT_LIBPATH,则会向您发出警告(jamfile的第39-41行)

  

警告:图表库不包含可选的GraphML阅读器   注意:要启用GraphML支持,请设置EXPAT_INCLUDE和
  注意:分别包含Expat标头和库的目录。

1 个答案:

答案 0 :(得分:1)

另一次更新: 我没有在EXPAT所在的列表中看到.so或.a文件......这看起来有点奇怪吗?通常它会为库名称

创建一个别名

例如/usr/lib/libblah.so - > /usr/lib/libblaah.so.1.2

dynalib是一些Macintoshism(我不使用Macs)

是.la这个平台上的静态版本扩展吗?

<强>更新

路径周围的引语似乎很麻烦...... -L“/ usr / lib”

尝试将其更改为-L / usr / lib和-L / usr / lib

较旧的东西:

链接器在链接步骤中包含路径的指令是-L。您需要查找一些链接器标志以进行更新以包含-L path_to_expat。我不认为链接器会关注LD_LIBRARY_PATH。我不确定您已阅读哪些文档来设置EXPAT_INCLUDE或EXPAT_LIBPATH。