2016-11-21 61 views
0

每当我使用Boost Python构建简单的C++程序,我总是不得不手动进去,更改取其Boost库的路径我用下面的命令执行的构建:在构建期间更改Boost库的路径?

install_name_tool -change [old_boost_library_path] [new_boost_library_path] foo.cpp 

防止我撞上任何Library not loaded: [boost_library]错误。

但是,正如您可以想象的那样,手动更改每个错误引用的boost库路径的位置(特别是在处理多个库时)会变得冗长乏味。

所以我的问题是。有没有什么办法可以在构建期间更改构建中使用的boost库的路径,所以我不必在此之后执行此操作?这样可以节省很多时间和打字。

在我的Makefile中我已经设置一个变量,包括需要的库,类似于:

LD_LIBS=-L/boost_1_62_0/stage/lib -lboost_python3 -lboost_system -L/Library/Frameworks/Python.framework/Versions/3.5/lib -lpython3.5m 

运行otool -L foo.cpp的输出是:

Foo.cpp: 
libboost_python3.dylib (compatibility version 0.0.0, current version 0.0.0) 
libboost_system.dylib (compatibility version 0.0.0, current version 0.0.0) 
/Library/Frameworks/Python.framework/Versions/3.5/Python (compatibility version 3.5.0, current version 3.5.0) 
/usr/lib/libc++.1.dylib (compatibility version 1.0.0, current version 120.1.0) 
/usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 1226.10.1) 

上述Boost库的路径应是/boost_1_62_0/stage/lib/[library_name]而不是[library_name]

这是可以修复的吗?任何帮助,将不胜感激。

回答

0

答案(对于我的具体情况)找到了!

我只需将我的增强库/boost_1_62_0/stage/lib的路径附加到我的.bash_profile中的$DYLD_LIBRARY_PATH变量中。

有关使用DYLD_LIBRARY_PATH(及相关路径变量)的更多信息,请参阅this SO问题。

希望这可以帮助别人。

+0

在编译命令行中使用'-Wl,-rpath,/ boost_1_62_0/stage/lib'可能会好得多。但是,我非常确定,如果您在特定的非舞台位置构建并安装了boost,它将在.dylib中具有相关的路径名称,这将消除额外工作的需要。 – Petesh