zoukankan      html  css  js  c++  java
  • 记boost在gcc的一个库链接问题generic_category()

    报错大致如下:

    main.cpp:(.text+0x49): undefined reference to `boost::system::generic_category()'
    main.cpp:(.text+0x53): undefined reference to `boost::system::generic_category()'
    main.cpp:(.text+0x5d): undefined reference to `boost::system::system_category()'

    当时搞了很久,各种库各种一通链接,始终没解决问题

    解决方案:

    "boost/filesystem.hpp" 这个文件依赖于boost_system,编译的时候,需要 -lboost_system选项,但是你的编译选项里头已经指定该选项,为什么还会出现链接错误呢。我也纳闷了半天,后来发现,原来是-l选项的顺序问题。在g++的man帮助信息里面,我发现了下面的话:

    引用It makes a difference where in the command you write this option; the linker searches and processes libraries and object files in the order they are specified. Thus, foo.o -lz bar.o searches library z after file foo.o but before bar.o. If bar.o refers to functions in z, those functions may not be loaded.

    读完这段话,应该就明白出错原因了。所以,解决方案就是用下面的命令来编译:

    引用g++ main.cpp -lboost_system -lboost_filesystem
  • 相关阅读:
    Ubuntu 18.04 LTS 启用BBR
    MySQL with JDBC <一>
    HTML 实录 <一>
    Nginx CloudFlare 客户端真实IP
    Ubuntu 16.04 释放升级到 18.04 后, man: command exited with status 4
    JSP 从入门到精通 <一>
    Nginx URL重写
    JavaScript 修改 CSS 伪类属性
    i-83.net quadhost子产品
    HTML 重定向 页面跳转
  • 原文地址:https://www.cnblogs.com/mfryf/p/5379322.html
Copyright © 2011-2022 走看看