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

时间:2015-10-12 18:34:53

标签: c++ netbeans mingw cross-compiling crypto++

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

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

我不清楚我该怎么做。 我已经找到了关于如何使用mingw为linux构建库的信息,但没有找到与mingw交叉编译的信息。提供的GNUmakefile不起作用。 我应该用windows和mingw设置一个vm并以这种方式编译库吗?或者也许使用qmake" hack"正如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 ..抱歉,如果有点不清楚。 如果我只是使用回答(并在维基)中的步骤构建我最终得到一个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:没有这样的文件或目录  #include

这让我觉得它使用正确的编译器制作.a lib文件,用于与lib交叉编译windows .exe。 但是我不明白现在发生了什么,缺少标题.. :(

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

如果有人发现如何做,那就提供象征性的啤酒(几美元的比特币)。

1 个答案:

答案 0 :(得分:0)

  

我已经找到了关于如何使用mingw为linux构建库的信息,但没有找到与mingw交叉编译的信息。

它比较容易......

  1. 将Crypto ++ ZIP导入MinGW。
  2. 解压缩Crypto ++ ZIP。
  3. 更改目录。
  4. 建立图书馆。
  5. 验证 All tests passed
  6. (1)和(2)可能很棘手,因为Cygwin和MinGW缺少很多工具。因此curl https://www.cryptopp.com/cryptopp563.zip -o cryptopp563.zip可能无效。

    对于(2),我似乎记得缺少ZIP,因此unzip -aoq cryptopp563.zip -d cryptopp-5.6.3可能无效。

    在步骤(4),只需执行make static dynamic test并确保完成 All tests passed

    我用Cygwin和MinGW做了很多测试。我有一个脚本可以将Crypto ++从我的桌面复制到环境中。我无法找到一种自动化方法。关于自动化问题的最新问题已经结束,因此没有人可以提供答案(参见How to automate software testing for Cygwin and MinGW)。