9
$ gcc -c hello.c -o hello.o
그것은이 ELF 재배치 파일을 hello.o를 생성합니다
다음 전화 문의 :
$ gcc hello.o -o hello [1]
는 LD와 hello.o 링크하고 ELF 실행 파일을 안녕 그러나 내가 LD 직접 [2]
대신 [1]
의 호출하는 경우
생성 할 것이다 : 나는 이러한 오류를 얻을
$ ld hello.o -o hello [2]
를 :
/usr/bin/ld.bfd.real: warning: cannot find entry symbol _start
test.c:(.text+0xa): undefined reference to `puts'
gcc 필수 (예를 들어 C 라이브러리를 링크하기 위해) ld에 다른 옵션을 전달해야한다.
정확하게 명령 줄 gcc가 명령 [1]
에서 ld로 전달되는 것을 정확하게 결정할 수 있습니까?
내 우분투에서 보이는 것 같습니다. 12.10 64 상자'collect2'는'ld'의 간단한 별칭이 아닙니다. 'collect2'는 실행 가능한 반면'ld'는 perl 스크립트 인'hardened-ld '에 대한 심볼릭 링크 인'ld.bfd'에 대한 sym 링크입니다. 무슨 일이 일어나고 있는지 전혀 몰라. –
죄송합니다. 리터럴 별칭을 의미하지 않습니다. 대신에'ld' 명령으로 같은 명령을 실행하면 같은 결과를 얻을 수 있습니다. 문서 : http://gcc.gnu.org/onlinedocs/gcc-4.3.5/gccint/Collect2.html –
'collect2'와'ld'의 차이점은 무엇입니까? gccint를 읽은 후 쉽게 이해할 수 없었습니다. –