使用 boost 库编译 C++ 代码
Compiling C++ code with boost library
所以我安装了boost库如下
cd /usr/local/
sudo tar --bzip2 -xf ~/Downloads/boost_1_52_0.tar.bz2
sudo ./bootsrap.sh
sudo ./b2 install
现在,我想编译一个使用boost库的代码,makefile有这两行来标识boost的位置:(INC=.. and BOOSTLIB=..)
OBJS = utility.o PtDebug.o
CC = g++
INC = /usr/local/boost_1_52_0/
BOOSTLIB = /usr/local/include/boost/
CFLAGS = -Werror -g
all: my_program
makefile 中链接到 boos 的示例行是
$(CC) $(FLAGS) $(OBJS) ipMT.o -o ipmt -L$(BOOSTLIB) -lboost_date_time -lboost_thread
但是当我尝试制作时,它失败并出现以下错误:
g++ -Werror -g utility.o PtDebug.o ratioWeightedCombIP.o -o rwcip -L/usr/local/include/boost/ -lboost_date_time -lboost_thread
/usr/bin/ld: utility.o: undefined reference to symbol '_ZN5boost6system15system_categoryEv'
//usr/local/lib/libboost_system.so.1.57.0: error adding symbols: DSO missing from command line
collect2: error: ld returned 1 exit status
make: *** [misp] Error 1
你快到了。添加
-lboost_system
到你的 link 行让步(现在有缩进)
$(CC) $(FLAGS) $(OBJS) ipMT.o -o ipmt \
-L$(BOOSTLIB) -lboost_date_time -lboost_thread -lboost_system
错误信息给了你一个提示:No symbol '_ZN5boost6system15system_categoryEv'
which indicates that
- 该符号来自 Boost System 命名空间,因此建议您需要 link 这个,并且
- 通过
c++filt
等工具提供提示
如果您有 c++filt
,您可以看到扩展的错位标识符:
edd@max:~$ c++filt _ZN5boost6system15system_categoryEv
boost::system::system_category()
edd@max:~$
所以我安装了boost库如下
cd /usr/local/
sudo tar --bzip2 -xf ~/Downloads/boost_1_52_0.tar.bz2
sudo ./bootsrap.sh
sudo ./b2 install
现在,我想编译一个使用boost库的代码,makefile有这两行来标识boost的位置:(INC=.. and BOOSTLIB=..)
OBJS = utility.o PtDebug.o
CC = g++
INC = /usr/local/boost_1_52_0/
BOOSTLIB = /usr/local/include/boost/
CFLAGS = -Werror -g
all: my_program
makefile 中链接到 boos 的示例行是
$(CC) $(FLAGS) $(OBJS) ipMT.o -o ipmt -L$(BOOSTLIB) -lboost_date_time -lboost_thread
但是当我尝试制作时,它失败并出现以下错误:
g++ -Werror -g utility.o PtDebug.o ratioWeightedCombIP.o -o rwcip -L/usr/local/include/boost/ -lboost_date_time -lboost_thread
/usr/bin/ld: utility.o: undefined reference to symbol '_ZN5boost6system15system_categoryEv'
//usr/local/lib/libboost_system.so.1.57.0: error adding symbols: DSO missing from command line
collect2: error: ld returned 1 exit status
make: *** [misp] Error 1
你快到了。添加
-lboost_system
到你的 link 行让步(现在有缩进)
$(CC) $(FLAGS) $(OBJS) ipMT.o -o ipmt \
-L$(BOOSTLIB) -lboost_date_time -lboost_thread -lboost_system
错误信息给了你一个提示:No symbol '_ZN5boost6system15system_categoryEv'
which indicates that
- 该符号来自 Boost System 命名空间,因此建议您需要 link 这个,并且
- 通过
c++filt
等工具提供提示
如果您有 c++filt
,您可以看到扩展的错位标识符:
edd@max:~$ c++filt _ZN5boost6system15system_categoryEv
boost::system::system_category()
edd@max:~$