在尝试构建最新的 GnuPG(2.1.1 现代(时,我的构建在尝试链接t-stringhelp
时失败。 make
输出:
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
我还重建了所有的 deandance(因为我在 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.o
,lib common.a
及其所有目标文件,适用于所有不起作用的库。然后有些程序没有链接到libksba
libgcrypt
和libassuan
,所以我更改了Makefiles,以便它们可以链接。我现在可以很好地编译所有代码,我安装了所有代码,但是当我尝试运行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上。
请帮忙,我真的很困惑。
我已经在 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.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
。
就个人而言,我会安装 homebrew
,这是从他们的网站粘贴的单行代码 (http://brew.sh( 然后做
brew install gnupg
如果有任何问题,请运行
brew doctor
并听从好医生的建议。
原来我在/usr/local/bin/ranlib
有ranlib
.它坏了,我不知道它是如何到达那里的(我确实在某个时候尝试构建 gcc,它不支持 make uninstall
,所以这可能就是原因(。我刚刚跑了:
sudo mv /usr/local/ranlib /usr/local/ranlib_old
然后我只是重建了所有的依赖项,它奏效了!