2016-11-21 41 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