0

我自己使用 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)

我已经阅读: 尝试使用 Boost.Filesystem 但它似乎没有链接? C ++ / Boost:示例中的未定义符号? 和许多其他人,但仍然没有找到解决方案。

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

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

对不起我的英语不好 :(

4

2 回答 2

5

您还需要-lboost_system在您拥有的位置之后添加-lboost_thread.

于 2013-08-23T21:58:03.207 回答
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) 
于 2013-08-23T22:06:20.627 回答