- 首先,我構建了需要通過編譯
/usr/local/boost_1_49_0/
並運行bootstrap.sh
來構建的Boost庫。這沒問題。 - 步驟(1)創造了
/usr/local/boost_1_49_0/stage/lib
- 我測試鏈接到的庫中的所有
.so
和.a
文件,說lboost_regex
和#include <boost/regex>
在我的源代碼。這也沒有問題。 最後嘗試對ASIO的例子,我想:C++鏈接增強庫
g++ -I/usr/local/boost_1_49_0 MAIN.cpp -o MAIN -L/usr/local/boost_1_49_0/stage/lib -lboost_thread -lboost_system -lpthread
(4)編制好了。但是,當我與./MAIN
運行程序時,我得到以下錯誤:
./MAIN: error while loading shared libraries: libboost_system.so.1.49.0: cannot open shared object file: No such file or directory
剛想rpath的警告 - 不要做,如果你打算二進制文件運送到其他人(或其他機器)。跟蹤rpath錯誤可能會非常棘手和痛苦。 – 2012-07-07 05:06:30
但是,通過將$ ORIGIN嵌入到二進制文件的運行時路徑中可以避免該問題。雖然$ ORIGIN路徑仍然是易碎的,但它至少使搜索路徑相對於「二進制位置在哪裏」而不是系統上的特定位置。 – 2012-07-07 05:09:28
@KevinGrant好的,謝謝你把問題整理出來。儘管沒有什麼像麻煩free --static flag – 2012-07-08 04:33:15