我有這個程序,它使用套接字的Boost :: Asio。我幾乎改變了Boost示例中的一些代碼。該程序編譯和運行就像它應該在Windows中的VS.但是,當我在Linux上編譯程序並運行它時,出現分段錯誤。升壓程序將無法在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;
任何人都可以提供任何幫助,至於什麼可能是問題(和解決方案)?
謝謝!
編輯:我試圖改變程序的小例子,不使用其他庫或標題,只是提升/ 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和gold鏈接器一樣。切換回舊的ld鏈接器爲我解決了所有的問題。 – McBeth 2010-06-17 21:08:33
你正在使用哪種編譯器和Linux操作系統?如果你最小的例子仍然是段錯誤,我會開始看你的環境。 – 2010-06-17 21:18:29