1

最新の GnuPG (2.1.1 modern ) をビルドしようとしているときに、リンクしようとするとビルドが失敗します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

pinentryまた、インストールされているものが見つからないため、を除いて、すべての依存関係を再構築しました(Mavericksで構築したため)libiconv。私のconfigure出力はそのターゲットがDarwin (x86_64-apple-darwin14.0.0)であるため、これは機能するはずです。また、すべての最新の前提条件を取得し、すべてを独自のディレクトリ (--prefix=/usr/local/gnupg-2.1.1) にインストールしようとし、すべての依存関係と GnuPG を 32 ビットとしてビルドします (再び、同じエラーで失敗します)。 )、別のビルドフォルダーを作成してそこにビルドしようとしましたが、これまでのところエラーを解決できたのは1つだけです.ビルド方法を見てくださいlibgpgrl.a-それは唯一のコンポーネントですcommon/gpgrlhelp.c-だから私はcd'edg10でビルドしようとしましたgpg2、 に置き換え../common/libgpgrl.a../common/gpgrlhelp.o、のlib common.a機能しなかったすべてのライブラリのすべてのオブジェクト ファイルを含む。次に、いくつかのプログラムがlibksba libgcryptlibassuanにリンクしていなかったので、リンクできるように 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 をコンパイルできましたが、Yosemite でビルドされる GnuPG のバージョンはありません。

助けてください、私は本当に混乱しています。

4

3 に答える 3

3

Yosemite 10.10.2 (この記事を書いている時点での最新のパブリック ベータ版) でGnuPG 2.1を約 1 週間実行してきましたが、問題なく動作しています。

次の使用方法に従うbrew tapか、未加工の URL を使用できます: brew install https://github.com/mtigas/homebrew-gpg21/raw/master/Formula/gnupg2.rb.

この式はGnuPG 2.1をインストールすることに注意してください。GnuPG 2.1.1 ではなく、最初に問い合わせたバージョンです。2.1 を使用する一部のキーサーバーで失敗するこのバグを確認できます (明らかに 2.1.1 で修正されています) が、90% はそこに到達します。gpg2 --refresh-keys

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

私が持っていたことがわかりましranlib/usr/local/bin/ranlib。どうやってそこにたどり着いたのかわかりません(ある時点でgccをビルドしようとしましたが、サポートしていないためmake uninstall、おそらくそれが理由です)。私はちょうど走った:

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

次に、すべての依存関係を再構築したところ、うまくいきました。

于 2014-12-30T20:53:04.350 に答える
1

個人的には、彼らのウェブサイト ( http://brew.sh )homebrewからワンライナーで貼り付けた をインストールしてから実行します。

brew install gnupg

問題がある場合は、実行します

brew doctor

そして、良き医師のアドバイスに耳を傾けてください。

于 2014-12-01T20:05:18.383 に答える