如何使用 MinGW 在 Linux 上构建 Crypto++ 库?

2024-02-01

我正在尝试将 c++ 项目从 Visual Studio 2013 移植到 ubuntu 上的 netbeans。目标是一个Windows可执行文件,到目前为止我能够使用mingw作为编译器从netbeans编译Windows exe文件。

该项目需要 Crypto++ 库,而我只有 Visual Studio 的 .lib 版本。为了在 netbeans 中包含该库,我首先需要以 .a 格式构建 Crypto++ 库。

我不清楚我应该怎么做。 我找到了有关如何使用 mingw 为 linux 构建库的信息,但没有找到有关如何使用 mingw 交叉编译的信息。提供的 GNUmakefile 不起作用。 我应该使用 windows 和 mingw 设置一个虚拟机并以这种方式编译库吗?或者可以按照此处的建议使用 qmake“hack”http://www.qtcentre.org/threads/28809-Compiling-amp-using-Crypto-with-mingw-version-of-Qt http://www.qtcentre.org/threads/28809-Compiling-amp-using-Crypto-with-mingw-version-of-Qt?最后一个好的 Crypto++ 版本表明已经很旧了。这很令人困惑,移植整个项目比拥有所需的库更容易。 我愿意接受任何建议。

tldr:如何在 Linux 上构建 libcryptopp.a 以交叉编译 Windows exe 项目

编辑: 例如,如果我交叉编译某些内容,则 /usr/i686-w64-mingw32/lib/ 文件夹中会有 Windows 库,例如 libuser32.a。我需要制作等效的 libcryptopp.a...抱歉,如果有点不清楚。 如果我只是使用答案中的步骤(以及在wiki中)进行构建,我最终会得到一个 libcryptopp.a 文件,但我怀疑它仅适用于 linux,因为如果我在 .exe 文件中的 netbeans 中链接该库,则我会结束交叉编译到处都是对 cryptopp 东西的未定义引用。路径是正确的,我怀疑该库需要替换为与交叉编译兼容的等效 libcryptopp.a 。

edit2:我试图遵循这里的答案,现在我被困在这里。在这个命令之后构建 cryptopp。

    make CXX=/usr/bin/i686-w64-mingw32-gcc INCLUDES="-I /usr/i686-w64-mingw32/include" LIBS="-L /usr/i686-w64-mingw32/lib" CXXFLAGS="-std=c++0x"

和它的许多变体我总是会遇到这个错误

trap.h:26:25: 致命错误: Windows.h: 没有这样的文件或目录 # 包括

这让我认为它使用正确的编译器来制作 .a lib 文件,以便将 windows .exe 与 lib 交叉编译。 但是我不明白现在缺少标题是怎么回事..:(

另外,如果我尝试链接 lib 文件(与 Visual Studio 一起使用),我会收到很多链接错误,对 cryptopp 内容的未定义引用。

如果有人知道怎么做,我会提供一杯象征性的啤酒(几美元的比特币)。


灵感来自http://wiki.amule.org/wiki/Cross-compilation_for_windows_with_mingw http://wiki.amule.org/wiki/Cross-compilation_for_windows_with_mingw:

sudo apt-get install mingw-w64
git clone https://github.com/weidai11/cryptopp
cd cryptopp
export TARGET=i686-w64-mingw32
CXX=$TARGET-g++ RANLIB=$TARGET-ranlib AR=$TARGET-ar LDLIBS=-lws2_32 make -f GNUmakefile
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何使用 MinGW 在 Linux 上构建 Crypto++ 库? 的相关文章

随机推荐