2012-05-02 2 views
1
Undefined symbols for architecture x86_64: "_libintl_dgettext", referenced from: 
     _gpg_strerror in libgpg-error.a(libgpg_error_la-strerror.o) 
     _gpg_strerror_r in libgpg-error.a(libgpg_error_la-strerror.o) 
     _gpg_strsource in libgpg-error.a(libgpg_error_la-strsource.o) ld: symbol(s) not found for architecture x86_64 collect2: ld returned 1 exit status 

질문에 명시된 바와 같이, Xcode를 사용하여 MacOSX 10.6에서 libgpgme를 필요로하는 firebreath 프로젝트를 빌드 할 때 위의 오류가 발생합니다. 내 include/search 경로는 콘솔에서 다음 명령을 실행할 수 있기 때문에 유효합니다.libgpgme를 포함하여 Firebreath를 빌드 할 때

g++ -o test test.cpp `gpgme-config --libs` 

출력 gpgme - 구성 형태를 -L/옵션/지방/LIB -lgpgme -lassuan -lgpg 에러이다. 어떤 다른 정보가 필요한지, 의견 및 필요한대로 업데이트됩니다.

답변

1

문제는 32 비트와 64 비트 모두를위한 유니버설 바이너리를 작성하고 포함하고있는 라이브러리가 64 비트 용으로 빌드되지 않았다는 것입니다. prepmac.sh 명령 행에 -D CMAKE_OSX_ARCHITECTURES = "i386"을 추가하여 i386을 빌드 할 수 있습니다.

새 인수를 사용하여 prepmac.sh를 실행하기 전에 빌드 디렉토리를 삭제해야합니다. 그렇지 않으면 걸릴 수 있습니다.

자세한 내용은 firebreath.org의 Prep Scripts 페이지를 참조하십시오.

+0

감사 포인터, i386 라이브러리를 가져와야합니다. 현재 x64 라이브러리 만 설치되었으므로 x64에서는 괜찮 았지만 i386에서는 실패했습니다. – RC1140

+0

메시지에 따르면 그것은 다른 방법입니다. 그 오류는 x86_64 라이브러리가 존재하지 않는다고 말합니다. – taxilian

+0

그것은 특히 그것을 놓치고있는 gpgme가 아닐 수도 있습니다; 그것을 찾을 수 없다고 말하고 그 것들이 64 비트에서 누락되었다고 말하는 심볼을 보아라. – taxilian