我想使用(在 Linux Debian Squeeze g++4.4 中)单独编译的 Boost(1.54.0)库:
- Boost.Chrono
- Boost.Context
- Boost.文件系统
- Boost.GraphParallel
- Boost.IOStreams
- Boost.Locale
- Boost.MPI
- Boost.ProgramOptions
- Boost.Python
- 升压正则表达式
- Boost.序列化
- 升压信号
- 升压系统
- Boost.Thread
- 升压定时器
- 升压波
为了做到这一点,根据Easy Build and Install,我输入了终端
$ cd path/to/boost_1_54_0
$ ./bootstrap.sh --prefix=~/boost
$ ./b2 install
结果是两个文件夹include
,lib
并在~/boost
. 里面有~/boost/lib
文件:
libboost_name.a
libboost_name.so
libboost_name.so.1.54.0
对于每个提升库。
然后我在我的 test.cpp 文件中包含一些库(例如正则表达式):
#include<boost/regex.hpp> //may be also chrono, filesystem or whatever
我告诉编译器在 ~/boost/lib 中搜索正则表达式库
$ g++ -I path/to/boost_1_54_0 test.cpp -o test -L~/boost/lib -lboost_regex
但这会导致编译错误:
test.cpp:(.text+0x49): undefined reference to `boost::system::generic_category()'
test.cpp:(.text+0x53): undefined reference to `boost::system::generic_category()'
test.cpp:(.text+0x5d): undefined reference to `boost::system::system_category()'
collect2: ld returned 1 exit status
怎么了?我的 中没有stage
文件夹~/boost
,也没有像Easy Build and Installlibboost_regex-gcc34-mt-d-1_36.a
中提到的任何东西。这是共鸣吗?
这是test.cpp的内容
//I need a general solution/idea that works for any of these libraries
#include <boost/regex.hpp>
//#include <boost/chrono.hpp>
//#include <boost/filesystem.hpp>
//#include<boost/some-other-separately-compiled-library>
int main()
{
}
是否有一种简单的方法可以链接适用于所有必须单独构建的 Boost 库的 boost 库?