나는이 문제를 해결하는 방법'collect2 : ld가 1 개의 종료 상태를 반환했습니다'를 해결하는 방법?
qstring.cpp:(.text+0x2c01): undefined reference to `terminate(void)'
collect2: ld returned 1 exit status
같은 오류가 발생했습니다 리눅스에 내 소스 코드를 빌드 할 때?
나는이 문제를 해결하는 방법'collect2 : ld가 1 개의 종료 상태를 반환했습니다'를 해결하는 방법?
qstring.cpp:(.text+0x2c01): undefined reference to `terminate(void)'
collect2: ld returned 1 exit status
같은 오류가 발생했습니다 리눅스에 내 소스 코드를 빌드 할 때?
어떤 오브젝트 파일이나 라이브러리 terminate
이 살고 있는지 알아야하고 컴파일/링크 명령에 포함시켜야합니다.
는 객체 또는 소스 파일에 있다면, 당신의이 gcc
정상에 따라 명령을 (당신이 방법은 아마도 유사합니다하지 않을 경우,gcc
를 사용하여 실제로 있어 가정)에 제공합니다. 라이브러리에있는 경우 -L
(라이브러리 경로) 및 -l
(라이브러리 이름) 옵션을 조사해야합니다.
void terminate(void) { raise(9); }
terminate
이 사용한다, C++ 표준 라이브러리에 정의 된, 그래서 당신의 것을 연결하고 있는지 확인하십시오. 당신이 컴파일하기 위해 GCC를 사용하는 가정하는 g++
소스 코드를 컴파일 실행, 하지gcc
실행 : g++
로 실행하면
g++ source.cc -o output
, 링커가 자동으로 (된 libstdC++) C++ 표준 라이브러리에 연결합니다. 대신 일반 gcc
로 GCC를 실행하거나 직접 링커 ld
를 호출 할 경우에, 당신은
gcc source.cc -o output -lstdc++ # Compile directly from source
ld source1.o source2.o -o output -lstdc++ # Link together object files
: 예컨대, 자신이 라이브러리에 링크
-lstdc++
를 추가해야