2011-03-20 3 views
3
gcc -o fig fig.c -I./include ./lib/libmylib.a -g 

gcc -g fig.c -o fig -I./include ./lib/libmylib.a 

gcc -g -o fig fig.c -I./include ./lib/libmylib.a 

gcc는 다른 종류의 시퀀스를 허용하는 것으로 보입니다. 그러나 허용되지 않는 시퀀스는 무엇입니까? 논쟁의 순서가 중요합니까?gcc를 사용할 때 args 순서가 중요합니까?

+0

gcc의 플래그 처리 기능은 현대적인 linux 명령 플래그 처리와 비슷하지만 특별한 것은 없습니다. – Drakosha

+0

일반적으로 빌드 시스템에서는 별도의 단계로 컴파일 및 링크를 수행합니다. –

+0

@Drakosha : 그건 사실이 아니야. 예제에서 알 수 있듯이 혼합 된 옵션과 인수를 사용할 수 있습니다. 이는 매우 특이합니다. – Cascabel

답변

4

-static 연결을 지정하면 라이브러리를 배치하는 순서가 중요합니다.

기본적으로 라이브러리를 정적으로 연결하도록 선택하면 GCC가 코드를 먼저 검사하여 외부 라이브러리 종속성을 검사 한 다음 가져올 라이브러리를 확인하므로 라이브러리를 코드 뒤에 지정해야합니다. 그것들을 필요로하는 코드는 GCC가 검사하고 어떤 라이브러리도 필요 없다고 결정할 것이고 링커 에러로 끝날 것입니다.

+0

나는이 오류로 인해 많은 고통을 겪었고 결국 인수 순서로 인한 것이라고 생각했습니다. 주변을 검색해 보니 답변을 얻었습니다. 감사합니다. 평행 한 우주에서 - 아닌 - 나 - 그러나 - 어떤 - 다른 일종의 방법. –

관련 문제