每当我使用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]
。
这是可以修复的吗?任何帮助,将不胜感激。
在编译命令行中使用'-Wl,-rpath,/ boost_1_62_0/stage/lib'可能会好得多。但是,我非常确定,如果您在特定的非舞台位置构建并安装了boost,它将在.dylib中具有相关的路径名称,这将消除额外工作的需要。 – Petesh