【发布时间】:2010-06-17 20:42:03
【问题描述】:
我有这个程序使用 Boost::Asio 作为套接字。我几乎修改了 Boost 示例中的一些代码。该程序在 VS 中的编译和运行就像在 Windows 上一样。但是,当我在 Linux 上编译程序并运行它时,我得到了分段错误。
我发布了代码here
我用来编译它的命令是这样的:
c++ -I/appl/htopopt/Linux_x86_64/NTL-5.4.2/include
-I/appl/htopopt/Linux_x86_64/boost_1_43_0/include
mpqs.cpp mpqs_polynomial.cpp mpqs_host.cpp -o mpqs_host
-L/appl/htopopt/Linux_x86_64/NTL-5.4.2/lib -lntl
-L/appl/htopopt/Linux_x86_64/gmp-4.2.1/lib -lgmp -lm
-L/appl/htopopt/Linux_x86_64/boost_1_43_0/lib -lboost_system
-lboost_thread -static -lpthread
通过注释掉代码,我发现由于以下行导致出现分段错误:
boost::asio::io_service io_service;
谁能提供任何帮助,可能是什么问题(和解决方案)?
谢谢!
编辑:我尝试将程序更改为最小示例,不使用其他库或头文件,只使用 boost/asio.hpp:
#define DEBUG 0
#include <boost/asio.hpp>
int main(int argc, char* argv[]) {
boost::asio::io_service io_service;
return 0;
}
我还在编译时删除了其他库包含和链接,但是这个最小的示例仍然给我一个分段错误。
【问题讨论】:
-
我怀疑这是否是答案,但在 linux 上使用 boost 和黄金链接器时,我遇到了和你一样的大问题。切换回旧的 ld 链接器为我解决了所有问题。
-
您使用的是哪种编译器和 Linux 操作系统?如果您的最小示例仍然存在段错误,我将开始查看您的环境。
标签: c++ linux boost linker boost-asio