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 项目时,出现上述错误。我的包含/搜索路径是有效的,因为我可以从控制台运行以下命令并且它工作正常。

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

gpgme-config 的输出是 -L/opt/local/lib -lgpgme -lassuan -lgpg-error。不知道还需要什么其他信息,发表评论,我会根据需要更新。

4

1 回答 1

1

您的问题是您正在为 32 位和 64 位构建通用二进制文件,而您包含的库不是为 64 位构建的。您只能通过在 prepmac.sh 命令行中添加 -D CMAKE_OSX_ARCHITECTURES="i386" 来构建 i386。

确保在使用新参数运行 prepmac.sh 之前删除您的构建目录,否则可能不会。

有关详细信息,请参阅 firebreath.org 上的Prep Scripts页面。

于 2012-05-02T16:12:30.223 回答