소켓 용으로 Boost :: Asio를 사용하는이 프로그램이 있습니다. 나는 Boost 예제에서 약간의 코드를 변경했다. 이 프로그램은 VS에서 Windows와 마찬가지로 컴파일되고 실행됩니다. 그러나 Linux에서 프로그램을 컴파일하고 실행하면 Segmentation 오류가 발생합니다. 이유는 다음 라인에부스트 프로그램이 리눅스에서 작동하지 않습니다
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
코드를 주석으로, 나는 내가 분할 오류를 얻을 것을 발견 : 나는 코드 here
내가 그것을 컴파일하는 데 사용하는 명령을 게시
이있다 :boost::asio::io_service io_service;
누구든지 문제 (및 해결책)에 대해 도움을 줄 수 있습니까?
감사합니다.
편집 : 그러나이 나는 또한 다른 라이브러리 포함 및 편집에 연결을 제거
#define DEBUG 0
#include <boost/asio.hpp>
int main(int argc, char* argv[]) {
boost::asio::io_service io_service;
return 0;
}
: 나는 최소한의 예에 프로그램을 변경하는 다른 라이브러리 나 헤더를 사용하지 않는 시도, 단지/asio.hpp을 향상 최소한의 예는 나에게 여전히 세분화 오류를 준다. -static
옵션의 GCC 온라인 문서에서
이 질문에 대한 답변이 의심 스럽지만 리눅스에서 금형 링커와 부스트를 사용하는 것과 같은 큰 문제가있었습니다. 이전의 ld 링커로 다시 전환하면 모든 문제가 해결되었습니다. – McBeth
어떤 컴파일러 및 Linux OS를 사용하고 있습니까? 최소한의 예제 만 여전히 segfaults라면, 나는 당신의 환경을 살펴보기 시작할 것입니다. –