链接boost线程库期间gcc 4.8链接器错误

时间:2013-08-23 21:56:38

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

我自己编译了boost库,使用g ++ 4.8编译成功完成。一切都在〜/ 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)

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

对不起我的英文:(

2 个答案:

答案 0 :(得分:5)

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

答案 1 :(得分:0)

您的问题与boost 系统类别有关,因此您也需要链接到(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)