链接ColladaDom的错误

时间:2011-12-08 08:00:49

标签: gcc boost linker

我正在尝试构建一个使用colladadom的工具,但我收到链接器错误。这是我的makefile

CXXFLAGS = -Wall -fPIC -g -t 
OBJECTS = mesher.o oar.o primitive.o assigner.o meshmerizer.o primmesher.o colladifier.o        main.o
LIBS = -I/opt/local/include -L/opt/local/lib -lboost_system -lboost_filesystem -    lcollada14dom 

default:    all

all: $(OBJECTS)
$(CXX) $(CXXFLAGS) -o oarcoll $^ $(LIBS)

main.o : src/meshmerizer.h src/primmesher.h src/main.cpp
$(CXX) $(CXXFLAGS) -c $^

colladifier.o : src/colladifier.cpp
$(CXX) $(CXXFLAGS) -c $^

assigner.o : lib/assigner.cpp
$(CXX) $(CXXFLAGS) -c $^

primitive.o : lib/assigner.h src/utils.h src/prim_enum.h src/primitive.cpp
$(CXX) $(CXXFLAGS) -c $^

mesher.o : src/mesher.cpp
$(CXX) $(CXXFLAGS) -c $^

oar.o : src/oar.cpp
$(CXX) $(CXXFLAGS) -c $^

primmesher.o : src/primmesher.cpp
$(CXX) $(CXXFLAGS) -c $^

meshmerizer.o : src/meshmerizer.cpp src/primmesher.h
$(CXX) $(CXXFLAGS) -c $^

clean:
rm -f oarcoll main.o $(OBJECTS) *~

当我编译时,我得到了这个结果:

Undefined symbols for architecture x86_64:
  "boost::system::generic_category()", referenced from:
  __static_initialization_and_destruction_0(int, int)in colladifier.o
  __static_initialization_and_destruction_0(int, int)in main.o
  "boost::system::system_category()", referenced from:
  __static_initialization_and_destruction_0(int, int)in colladifier.o
  __static_initialization_and_destruction_0(int, int)in main.o
ld: symbol(s) not found for architecture x86_64
collect2: ld returned 1 exit status
make: *** [all] Error 1

如果我在一行中完成所有操作并且不生成.o文件并在以后链接它们,我可以编译没有问题。即这个:

g++ domTest.cc -I/opt/local/include -L/opt/local/lib -lboost_system -lcollada15dom -o domTest

在同一台机器上正常工作。

我在libboost_system.dylib上运行nm,并且未定义的符号出现在转储中。

还有其他多个与此类似的线程,我已经看过它们并尝试了解决方案,但它仍然不适用于我。

有什么想法吗?

0 个答案:

没有答案