2012-06-05 112 views
3

链接建设成为我开始有增强的lib项目,看来我的设置是不工作:与Boost.build和对升压

main.cpp中:

#include <boost/asio.hpp> 
int main(int argc, char* argv[]) 
{ 
    boost::asio::io_service io_service_; 
    return 0; 
} 

的Jamfile:

exe node 
: main.cpp ; 

bjam会产生:

...found 30 targets... 
...updating 2 targets... 
gcc.compile.c++ bin/gcc-4.7.0/debug/main.o 
gcc.link bin/gcc-4.7.0/debug/node 
bin/gcc-4.7.0/debug/main.o: In function `__static_initialization_and_destruction_0': 
/usr/include/boost/system/error_code.hpp:214: undefined reference to `boost::system::generic_category()' 
/usr/include/boost/system/error_code.hpp:215: undefined reference to `boost::system::generic_category()' 
/usr/include/boost/system/error_code.hpp:216: undefined reference to `boost::system::system_category()' 
bin/gcc-4.7.0/debug/main.o: In function `boost::system::error_code::error_code()': 
/usr/include/boost/system/error_code.hpp:315: undefined reference to `boost::system::system_category()' 
bin/gcc-4.7.0/debug/main.o: In function `boost::asio::error::get_system_category()': 
/usr/include/boost/asio/error.hpp:216: undefined reference to `boost::system::system_category()' 
bin/gcc-4.7.0/debug/main.o: In function `boost::asio::detail::posix_tss_ptr_create(unsigned int&)': 
/usr/include/boost/asio/detail/impl/posix_tss_ptr.ipp:34: undefined reference to `pthread_key_create' 
bin/gcc-4.7.0/debug/main.o: In function `boost::asio::detail::posix_tss_ptr<boost::asio::detail::call_stack<boost::asio::detail::task_io_service, boost::asio::detail::task_io_service::thread_info>::context>::~posix_tss_ptr()': 
/usr/include/boost/asio/detail/posix_tss_ptr.hpp:48: undefined reference to `pthread_key_delete' 
bin/gcc-4.7.0/debug/main.o: In function `boost::asio::detail::posix_tss_ptr<boost::asio::detail::call_stack<boost::asio::detail::strand_service::strand_impl, unsigned char>::context>::~posix_tss_ptr()': 
/usr/include/boost/asio/detail/posix_tss_ptr.hpp:48: undefined reference to `pthread_key_delete' 
collect2: error: ld returned 1 exit status 

    "g++" -o "bin/gcc-4.7.0/debug/node" -Wl,--start-group "bin/gcc-4.7.0/debug/main.o" -Wl,-Bstatic -Wl,-Bdynamic -Wl,--end-group -g 


...failed gcc.link bin/gcc-4.7.0/debug/node... 
...failed updating 1 target... 
...updated 1 target... 

看来,bjam正确地找到头,但不是库。 于是,我就告诉bjam,哪里找升压:

的Jamfile:

use-project /boost : /usr/lib/boost ; 

exe node 
    : main.cpp 
     /boost//system 
    ; 

但bjam的,现在将产生:

/usr/share/boost-build/build/project.jam:270: in find-jamfile from module project 
error: Unable to load Jamfile. 
error: Could not find a Jamfile in directory '/usr/lib/boost'. 
error: Attempted to find it with pattern '[Bb]uild.jam [Jj]amfile.v2 [Jj]amfile [Jj]amfile.jam'. 
error: Please consult the documentation at 'http://www.boost.org'. 
/usr/share/boost-build/build/project.jam:290: in load-jamfile from module project 
/usr/share/boost-build/build/project.jam:68: in project.load from module project 
/usr/share/boost-build/build/project.jam:718: in project.use from module project 
/usr/share/boost-build/build/project.jam:94: in load-used-projects from module project 
/usr/share/boost-build/build/project.jam:79: in load from module project 
/usr/share/boost-build/build/project.jam:170: in project.find from module project 
/usr/share/boost-build/build-system.jam:248: in load from module build-system 
/usr/share/boost-build/kernel/modules.jam:261: in import from module modules 
/usr/share/boost-build/kernel/bootstrap.jam:132: in boost-build from module 
/usr/share/boost-build/boost-build.jam:1: in module scope from module 

它unerstand说的bjam要重建提振,这就是为什么它是在/usr/lib/boost中寻找Jamfile。

有什么遗漏吗? 我怎么能告诉bjam链接的缺失库在哪里?

有些时候以前,我用

LINKLIBS = -lboost_system -lboost_filesystem ; 

但我不知道怎么翻译这个为Boost.build V2。

谢谢。

+0

[这](http://www.boost.org/doc/libs/1_49_0/more/getting_started/windows.html#link你的程序到一个提升库)可能会有所帮助。 –

回答

2

最后,我得到了解决方案。 我预计能够采取多个库,但我错了。

这里是修复,我改变了我的Jamfile到:

exe node 
: main.cpp 
: <linkflags>-lpthread 
    <linkflags>-lboost_system 
;