将问题与GCC 4.6.1联系起来

时间:2011-12-05 01:27:15

标签: c++ gcc boost linker

我一直在努力编译和链接在Ubuntu Server 11.01 64位版本下使用Boost库的C ++应用程序。 起初没有使用预先打包的Boost库,我决定自己编译它。 Boost编译没有问题,但是当我尝试编译应用程序时,链接器开始喷出错误,好像没有包含库一样。

builtinFunctions.o: In function `__static_initialization_and_destruction_0(int, int)':
builtinFunctions.cpp:(.text+0xcaab): undefined reference to `boost::system::generic_category()'
builtinFunctions.cpp:(.text+0xcab7): undefined reference to `boost::system::generic_category()'
builtinFunctions.cpp:(.text+0xcac3): undefined reference to `boost::system::system_category()'
builtinFunctions.o: In function `boost::system::error_code::error_code()':
builtinFunctions.cpp:(.text._ZN5boost6system10error_codeC2Ev[_ZN5boost6system10error_codeC5Ev]+0x17): undefined reference to `boost::system::system_category()'
builtinFunctions.o: In function `boost::filesystem3::exists(boost::filesystem3::path const&)':
...

这是我使用的Makefile:

CC=g++
CFLAGS=-std=c++0x -c -Wall -I . -I ./boost_1_48_0/ -DBOOST_THREAD_USE_LIB

all: project

project: builtinFunctions.o main.o operators.o conversionUtils.o
        $(CC)   -L./boost_1_48_0/stage/lib/ \
                -lpthread -lboost_date_time-gcc46-mt-s-1_48 -lboost_program_options-gcc46-mt-s-1_48 \
                -lboost_filesystem-gcc46-mt-s-1_48 -lboost_system-gcc46-mt-s-1_48 builtinFunctions.o \
                main.o operators.o conversionUtils.o -o project

main.o: main.cpp
        $(CC) $(CFLAGS) main.cpp

operators.o: operators.cpp
        $(CC) $(CFLAGS) operators.cpp

conversionUtils.o: conversionUtils.cpp
        $(CC) $(CFLAGS) conversionUtils.cpp

builtinFunctions.o: builtinFunctions.cpp
        $(CC) $(CFLAGS) builtinFunctions.cpp

clean:
        rm -rf *o project

除了早期版本的GCC,我还能尝试其他什么吗?谢谢。

1 个答案:

答案 0 :(得分:4)

链接行matters上的图书馆顺序和您的图书馆顺序错误。