【发布时间】:2012-01-12 21:14:12
【问题描述】:
我一直在努力编译和链接在 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,我还能尝试什么?谢谢。
【问题讨论】:
-
GCC 版本是
gcc version 4.6.1 (Ubuntu/Linaro 4.6.1-9ubuntu3) -
图书馆总是在结束,毕竟对象...
-
谢谢!现在可以了!
-
Kerrek,您应该发布一个答案,以便 Tibor 可以将其标记为该问题的答案。 Tibor - 你应该修改你的问题以表明这是一个一般的链接问题。
-
我究竟该如何修改问题?谢谢你的建议。