【问题标题】:gcc 4.8 linker error during linking boost thread library链接boost线程库期间的gcc 4.8链接器错误
【发布时间】:2013-08-23 21:56:38
【问题描述】:

我自己使用 g++4.8 编译成功完成了 boost 库。一切都位于 ~/bin/boost 中。编译后所有文件都位于 /Users/$(USER)/bin/boost/stage/lib/

以下必要的制作部分:

CC=g++-4.8
LD=g++-4.8

BOOST_LIB_PATH=/Users/$(USER)/bin/boost/stage/lib/
BOOST_HEADER_PATH=/Users/$(USER)/bin/boost/

LFLAGS=-L$(BOOST_LIB_PATH) -lboost_thread

release: $(OBJ)
        $(LD) $(OBJ) obj/main.o $(LFLAGS) -o $(RELEASE_NAME) 

编译期间一切正常,但链接过程失败。基本上所有错误看起来都一样:

ndefined symbols for architecture x86_64:
  "boost::system::system_category()", referenced from:
      __static_initialization_and_destruction_0(int, int)

我已经阅读: Attempting to use Boost.Filesystem however it doesn't seem to link? C++ / Boost: Undefined Symbols in example? 和许多其他人,但仍然没有找到解决方案。

我不知道问题出在哪里,我改变了链接顺序,我尝试直接链接线程库,但我仍然得到相同的结果。 mac os x 10.8.4下编译https://github.com/dbedla/snake-cpp11时出现问题(我要修改makefile)

如果有任何解决问题的建议,我将不胜感激。

对不起我的英语:(

【问题讨论】:

  • 您需要在链接器命令中添加-lboost_system
  • 您似乎没有为您的问题选择答案。还缺少什么?我们还能为您做些什么?

标签: c++ macos gcc boost linker-errors


【解决方案1】:

您还需要在 -lboost_thread 之后添加 -lboost_system

【讨论】:

    【解决方案2】:

    您的问题与 boost system 类别有关,因此您也需要链接到该类别 (libboost_system)。

    CC=g++-4.8
    LD=g++-4.8
    
    BOOST_LIB_PATH=/Users/$(USER)/bin/boost/stage/lib/
    BOOST_HEADER_PATH=/Users/$(USER)/bin/boost/
    
    LFLAGS=-L$(BOOST_LIB_PATH) -lboost_thread -lboost_system
    
    release: $(OBJ)
            $(LD) $(OBJ) obj/main.o $(LFLAGS) -o $(RELEASE_NAME) 
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-05-14
      • 2012-07-01
      • 2014-05-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多