3
所以我想編譯和運行一個簡單的升壓定時程序故障使用升壓,無法打開共享對象文件
#include <iostream>
#include <boost/asio.hpp>
#include <boost/date_time/posix_time/posix_time.hpp>
int main() {
using namespace boost::asio;
io_service io;
deadline_timer t(io, boost::posix_time::seconds(5));
t.wait();
std::cout << "Hello World!" << std::endl;
return 0;
}
我想的第一件事,當編譯這個程序是做
g++ -I /home/vagrant/boost_1_60_0 main.cpp
這給了我的
/tmp/cc8Ytqko.o: In function `__static_initialization_and_destruction_0(int, int)':
main.cpp:(.text+0xfc): undefined reference to `boost::system::generic_category()'
main.cpp:(.text+0x108): undefined reference to `boost::system::generic_category()'
main.cpp:(.text+0x114): undefined reference to `boost::system::system_category()'
/tmp/cc8Ytqko.o: In function `boost::system::error_code::error_code()':
main.cpp:(.text._ZN5boost6system10error_codeC2Ev[_ZN5boost6system10error_codeC5Ev]+0x17): undefined reference to `boost::system::system_category()'
/tmp/cc8Ytqko.o: In function `boost::asio::error::get_system_category()':
main.cpp:(.text._ZN5boost4asio5error19get_system_categoryEv[_ZN5boost4asio5error19get_system_categoryEv]+0x5): undefined reference to `boost::system::system_category()'
collect2: error: ld returned 1 exit status
錯誤於是我做了一些研究,似乎我需要建立boost_system二進制文件,所以我去了目錄boost定位於就跑
./bootstrap.sh
./b2 --with-system
然後我再
g++ -I /home/vagrant/boost_1_60_0 main.cpp -L/home/vagrant/boost_1_60_0/stage/lib/ -lboost_system
編譯,這並沒有給我任何錯誤,但是當我跑的可執行
[email protected]:/vagrant$ ./a.out
./a.out: error while loading shared libraries: libboost_system.so.1.60.0: cannot open shared object file: No such file or directory
不知道我在這裏需要做什麼
如果我想靜態鏈接庫而不是使用動態鏈接,應該做什麼? – vicg
將[link = static](http://www.boost.org/build/doc/html/bbv2/tutorial/linkage.html)添加到boost構建選項,然後[直接指定.a文件](http ://stackoverflow.com/questions/4156055/gcc-static-linking-only-some-libraries)而不是'-l'命令。 –