2009-07-18 4 views
2

저는 iPhone OS 3.0 용 응용 프로그램을 만듭니다. GCC 4.2.1의 버그로 인해 링커에 -all_load 플래그를 추가하여 iPhone OS 3.0에서 빌드합니다. 하지만 그렇다면 /Users/TMC2/Programming/Client/test/build/Debug-iphoneos/test.a(ioapi.o) 및/Users/TMC2/Programming/Client/test/build/Debug-iphoneos/test에 중복 기호 _fill_fopen_filefunc을 가져 오십시오. .a (ioapi.o)GCC 4.2.1 darwin 중복 기호를 피하십시오

중복되는 기호를 피하는 방법은 무엇입니까? Andy suggestions?

+0

이 정확한 문제가 있습니다. -all_load 플래그가있는 버그 인 것 같습니다. – fried

답변

1

라이브러리 중 하나를 제외하고 링커 명령을 다시 실행하고 어떤 결과가 발생하는지 확인하십시오. 빌드 출력을 파일로 파이프하고 링커 문을 편집하는 경우 상당히 간단합니다.

소스를 작성 중이므로 ioapi.o를 생성하는 소스 파일 중 하나를 공백 만 포함 된 것으로 바꾸십시오. 정적 라이브러리는 무언가가로드 가능한 모듈을 링크 할 때까지 심볼을 해석 할 필요가 없습니다.

귀하의 마일리지는 이들 중 하나에 따라 다를 수 있습니다.

+1

알아 차리면 해당 라이브러리와 동일한 라이브러리 및 오브젝트가 두 번 참조됩니다. 나는이 동일한 문제를 겪고 있으며, -all_load가 지정되었을 때만 자른다. – fried