在我的系统上,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_INCLUDE
和EXPAT_LIBPATH
,则会向您发出警告(jamfile的第39-41行)
警告:图表库不包含可选的GraphML阅读器 注意:要启用GraphML支持,请设置EXPAT_INCLUDE和
注意:分别包含Expat标头和库的目录。
答案 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。