2012-06-27 39 views
0

我在Unix,GCC中使用Boost庫。我閱讀了以下主題:Boost static linking並在我的Makefile中添加了-static。但是,這不起作用。在unix中增強靜態鏈接

這裏是我的Makefile:

all: nbbo 

nbbo: nbbo.o reader.o 
    g++ -static -O3 -ffast-math -funroll-loops -ansi -pedantic-errors -L/usr/lib -lboost_filesystem -lboost_serialization -lboost_iostreams -lz -I /usr/include/boost -o nbbo nbbo.o reader.o 

nbbo.o: nbbo.cpp 
    g++ -static -O3 -ffast-math -funroll-loops -ansi -pedantic-errors -I /usr/include/boost -c -o nbbo.o nbbo.cpp 

reader.o: reader.cc reader.h 
    g++ -static -O3 -ffast-math -funroll-loops -ansi -pedantic-errors -I /usr/include/boost -c -o reader.o reader.cc 

clean: 
    rm *.o 

這裏是錯誤消息:

nbbo.o: In function `__tcf_10': 
nbbo.cpp:(.text+0x3d9): undefined reference to `boost::serialization::extended_type_info::key_unregister() const' 
nbbo.cpp:(.text+0x3e3): undefined reference to `boost::serialization::typeid_system::extended_type_info_typeid_0::type_unregister()' 
nbbo.cpp:(.text+0x3fb): undefined reference to `boost::serialization::typeid_system::extended_type_info_typeid_0::~extended_type_info_typeid_0()' 
etc 

回答

0

「UNIX」 您使用的是哪一種?使用-static標誌應該在linux上正常工作。但不是在OSX上。在OSX上,您必須刪除靜態標誌並將靜態鏈接指向庫的完整路徑。我不知道這將如何工作在其他「UNIX」

例如。

g++ ..... /path/to/your/lib.a ... -o ..