プログラムに libgcrypt のいくつかの機能を実装したいのですが、現在は Windows、OSX、および Linux (Arch/Xubuntu) で実行されているため、3 つのプラットフォームすべてでビルドできる場合にのみ実装できます。OSX と Linux では問題ありませんでした。
libgcryptとlibgpg-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 側にいるときにどのファイルをコピーしてリンクするかなど、クロス コンパイルにあまり関与しません。任意のポインター (私が見逃したドキュメントへの参照) を歓迎します! 私の文章の壁を読んでくれてありがとう。