1

在尝试构建最新的 GnuPG(2.1.1现代)时,我的构建在尝试链接时失败t-stringhelpmake输出:

ld: warning: ignoring file libcommon.a, file was built for archive which is not the architecture being linked (x86_64): libcommon.a
Undefined symbols for architecture x86_64:
  "_compare_filenames", referenced from:
      _main in t-stringhelp.o
  "_make_absfilename_try", referenced from:
      _main in t-stringhelp.o
  "_make_filename_try", referenced from:
      _main in t-stringhelp.o
  "_percent_escape", referenced from:
      _main in t-stringhelp.o
  "_strconcat", referenced from:
      _main in t-stringhelp.o
  "_xstrconcat", referenced from:
      _main in t-stringhelp.o

我不知道如何解决这个问题,因为libcommon它是源代码的一部分,所以它应该可以正常构建。当用CFLAGS="-m64"(-arch x86_64什么都不做) 构建时,我得到了这个:

ld: warning: ignoring file ../common/libgpgrl.a, file was built for archive which is not the architecture being linked (x86_64): ../common/libgpgrl.a
Undefined symbols for architecture x86_64:
  "_gnupg_rl_initialize", referenced from:
      _main in gpg.o

我还重建了所有的 depandancies(就像我在 Mavericks 上构建的那样),除了pinentry,因为它找不到libiconv哪个也安装了。我的configure输出是它的目标Darwin (x86_64-apple-darwin14.0.0),所以这应该有效。我还获得了所有最新的先决条件,尝试将所有内容安装在自己的目录中(--prefix=/usr/local/gnupg-2.1.1),将所有依赖项和 GnuPG 构建为 32 位(再次,同样的错误失败),创建了一个单独的构建文件夹并尝试在其中构建,但到目前为止只有一件事解决了错误:查看libgpgrl.a构建方式 - 它是唯一的组件common/gpgrlhelp.c- 所以我cd进入g10并尝试构建,gpg2替换../common/libgpgrl.a../common/gpgrlhelp.olib common.a及其所有目标文件,用于所有不起作用的库。然后有些程序没有链接到libksba libgcryptand libassuan,所以我更改了 Makefile,以便它们可以链接。我现在可以很好地编译所有代码,我安装了所有东西,但是当我尝试运行时出现新错误gpg2

dyld: lazy symbol binding failed: Symbol not found: __gcry_mpi_init
  Referenced from: /usr/local/gnupg-2.1.1/lib/libgcrypt.20.dylib
  Expected in: flat namespace

dyld: Symbol not found: __gcry_mpi_init
  Referenced from: /usr/local/gnupg-2.1.1/lib/libgcrypt.20.dylib
  Expected in: flat namespace

我的道路上有一切,即:

/usr/local/gnupg-2.1.1/bin:/usr/local/gnupg-2.1.1/lib:/Library/Frameworks/Python.framework/Versions/3.4/bin:/Library/Frameworks/Python.framework/Versions/2.7/bin:/usr/local/bin:/usr/local/mysql/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/opt/X11/bin

我可以在 Mavericks 上编译 GnuPG-2.0.22,但没有任何版本的 GnuPG 构建在 Yosemite 上。

请帮忙,我真的很困惑。

4

3 回答 3

3

我已经在Yosemite 10.10.2(撰写本文时的最新公开测试版)上运行 GnuPG 2.1 大约一周了,一切都很好。

您可以按照这些使用说明进行操作brew tap,也可以使用原始 URL brew install https://github.com/mtigas/homebrew-gpg21/raw/master/Formula/gnupg2.rb:.

注意这个公式安装GnuPG 2.1;不是 GnuPG 2.1.1,最初询问的版本。我可以确认这个错误,其中gpg2 --refresh-keys一些使用 2.1 的密钥服务器失败(显然已在 2.1.1 中修复),但它会让你达到 90%。

更新公式以安装 2.1.1 应该不难。

更新 有人提交了一个请求 GNuPG 2.1.1 支持的请求——我刚刚试了一下,效果很好。简短的回答:brew install https://raw.githubusercontent.com/calebthompson/homebrew-gpg21/2.1.1/Formula/gnupg2.rb

于 2014-12-30T07:02:06.350 回答
1

就个人而言,我会安装homebrew,这是从他们的网站(http://brew.sh)粘贴的单线然后执行

brew install gnupg

如果有任何问题,请运行

brew doctor

并听从好医生的建议。

于 2014-12-01T20:05:18.383 回答
1

原来我有一个ranlibin /usr/local/bin/ranlib。它坏了,我不知道它是如何到达那里的(我确实在某个时候尝试构建 gcc,它不支持make uninstall,所以这可能就是原因)。我刚跑:

sudo mv /usr/local/ranlib /usr/local/ranlib_old

然后我只是重建了所有的依赖关系,它奏效了!

于 2014-12-30T20:53:04.350 回答