在Linux中安装和构建Boost库

在Linux中安装和构建Boost库,linux,boost,Linux,Boost,我在关注这篇文章。 我用Bjam安装了它,可以看到包含文件和库文件(.a、.so) 我得到这个错误: /tmp/ccJFVVid.o: In function `boost::basic_regex<char, boost::regex_traits<char, boost::cpp_regex_traits<char> > >::assign(char const*, char const*, unsigned int)': test_boost2.

我在关注这篇文章。 我用Bjam安装了它,可以看到包含文件和库文件(.a、.so)

我得到这个错误:

/tmp/ccJFVVid.o: In function `boost::basic_regex<char, boost::regex_traits<char, boost::cpp_regex_traits<char> > >::assign(char const*, char const*, unsigned int)':
    test_boost2.cc:(.text._ZN5boost11basic_regexIcNS_12regex_traitsIcNS_16cpp_regex_traitsIcEEEEE6assignEPKcS7_j[boost::basic_regex<char, boost::regex_traits<char, boost::cpp_regex_traits<char> > >::assign(char const*, char const*, unsigned int)]+0x22): undefined reference to `boost::basic_regex<char, boost::regex_traits<char, boost::cpp_regex_traits<char> > >::do_assign(char const*, char const*, unsigned int)'
    collect2: ld returned 1 exit status
/tmp/ccJFVVid.o:boost::basic_regex::assign(char const*,char const*,unsigned int)函数中:
test_boost2.cc:(.text.zn5boost11基本的(正则表达式)12regex(traitsIcNS)16cpp regex(traitsiceee6assignepkcs7)[boost::basic regex::assign(char const*,char const*,unsigned int)]+0x22):对'boost::basic的未定义引用
collect2:ld返回了1个退出状态
在我的Windows机器下工作正常

怎么了

gcc版本4.3.2(Debian 4.3.2-1.1)

Linux xxxxxxxx 2.6.26-1-686#1 SMP周五3月13日18:08:45 UTC 2009 i686 GNU/Linux

sudo apt-get install libboost-regex-dev
不要费心从更智能的系统可以做得更好的地方安装

要编译,只需使用

g++ -lboost_regex boost.cpp -o boost
要获取可用软件包名称列表(boost的更多部分):

Dislaimer:我假设您使用Debian,因为这是您的GCC版本报告的内容。

-L./boost/lib

看起来很可疑。构建Boost时,这些库被放在stage/lib目录中。另外,默认构建过程不会创建静态库,因此您最好将
-static
从命令行中删除。如果这不能解决问题,我建议您按照中的步骤进行故障排除。

我发现了问题!g++命令问题!:(对不起。
如果我将-l选项移到行的末尾,它不会抱怨更多:)

它可以工作!但是如果我想安装最新版本的Boost(1.39),我该怎么做?因为我真正想使用的是Boost.Asio库。:)如果您使用的是lenny,那么您可以使用'libboost1.35-dev',如果您使用的是squeeze,那么就有'libboost1.38-dev'。还有asio的独立版本“libasio dev”。lenny中的版本非常旧。链接库应该在编译结束时,不是吗?因此,在我单独编译正则表达式并使用其结果之后,它将是:g++boost.cpp-o boost-lboost_regexAfter,同样的错误。g++-I./boost_1_39_0./boost_1_39_0/libs/regex/build/gcc/libboost_regex-gcc-1_38.a-o test_boost2 test_boost2.ccg++-I./boost_1_39_0-o test_boost2 test_boost2.cc./boost_1_39_0/libs/regex/build/gcc/libboost_regex-gcc-1_-gcc-38.a^这很有效!!!!!!这是因为对于静态库,在链接器的命令行上指定它们的位置很重要。再次,请参阅博客文章。
g++ -lboost_regex boost.cpp -o boost
apt-cache search libboost | grep -- -dev
-L./boost/lib