首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用Boost.build构建,并针对boost进行链接

使用Boost.build构建,并针对boost进行链接
EN

Stack Overflow用户
提问于 2012-06-05 23:34:24
回答 1查看 2K关注 0票数 3

当我使用boost lib启动一个项目时,我的设置似乎不起作用:

main.cpp:

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

Jamfile:

代码语言:javascript
复制
exe node
: main.cpp ;

bjam将产生:

代码语言:javascript
复制
...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哪里可以找到boost:

Jamfile:

代码语言:javascript
复制
use-project /boost : /usr/lib/boost ;

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

但是bjam现在会产生:

代码语言:javascript
复制
/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

它不理解bjam想要重建boost,这就是为什么它要在/usr/lib/boost中寻找一个Jamfile。

有什么东西丢了吗?我如何告诉bjam缺失的lib链接在哪里?

前段时间,我用过

代码语言:javascript
复制
LINKLIBS = -lboost_system -lboost_filesystem ;

但我不知道如何将其翻译为Boost.build v2。

谢谢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-06-14 23:04:27

最后,我得到了解决方案。我期望<linkflags>能够接受多个库,但我错了。

下面是修复方法,我将我的Jamfile更改为:

代码语言:javascript
复制
exe node
: main.cpp
: <linkflags>-lpthread
  <linkflags>-lboost_system
;
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10900313

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档