1

プログラムに libgcrypt のいくつかの機能を実装したいのですが、現在は Windows、OSX、および Linux (Arch/Xubuntu) で実行されているため、3 つのプラットフォームすべてでビルドできる場合にのみ実装できます。OSX と Linux では問題ありませんでした。

libgcryptlibgpg-errorの github ページからソースを取得し、 Linux と OSX の両方でライブラリを正常にビルドして実行したので、テスト コードが有効であることがわかりました(現在、Windows で問題が発生しています)。 w/MinGW)。

Xubuntuで次のことを行いました(Archでも同様ですが、apt-getの代わりにpacmanを使用しています):

sudo apt-get install mingw32 mingw32-runtime mingw32-binutils

クロス コンパイル ツール チェーンを取得し、

git clone https://github.com/Chronic-Dev/libgcrypt.git
git clone https://github.com/Chronic-Dev/libgpg-error.git
cd libgpg-error
autoreconf -vfi
./autogen.sh --build-w32
make
sudo make install
cd ../libgcrypt
autoreconf -vfi
./autogen.sh --build-w32
make
sudo make install

ビルドすると、これらのファイルが home/myuser/w32root/ に正常にビルドされます。

  • libgcrypt.a
  • libgcrypt.def
  • libgcrypt.dll.a
  • libgcrypt.la
  • libgpg-error.dll.a
  • libgpg-error.la
  • 含む/

    • gcrypt.h
    • gcrypt-module.h
    • gpg-error.h

これらのファイルを Windows に引き継いで、テスト コード (ローカルで main.c という名前) をコンパイルしてみました。

gcc main.c -o main.exe -lgcrypt

しかし、未定義の参照エラーが発生し、ライブラリが正しくリンクされていないという結論に至りました (最初は libgcrypt.a のみを使用していました)。デフ、他。動作するようになったので、それらをすべて C:\Mingw\lib にドロップして、違いがあるかどうかを確認しました。しませんでした。以下も、リンクするライブラリ ファイルを見つける際に沈黙していましたが、未定義の参照を解決しませんでした。

gcc main.c -o main.exe -lgcrypt -lgpg-error

だから、ここからどこへ行けばいいのか本当にわかりません。readme は、Windows 側にいるときにどのファイルをコピーしてリンクするかなど、クロス コンパイルにあまり関与しません。任意のポインター (私が見逃したドキュメントへの参照) を歓迎します! 私の文章の壁を読んでくれてありがとう。

4

0 に答える 0