mingw 不会在我的 Windows10 上编译 libnet

Posted

技术标签:

【中文标题】mingw 不会在我的 Windows10 上编译 libnet【英文标题】:mingw will not compile libnet on my Windows10 【发布时间】:2020-11-07 00:38:34 【问题描述】:

我使用 mingw-get 在我的 Windows10 系统上安装了 MinGW。 然后我下载了 libnet(在 github 的 ZIP 文件中)并尝试编译它。 文档说以“./configure && make”开头,但即使在我之后 从 cmd.exe 切换到 MinGW 附带的 bash(bash 3.1,说 提示),它说“./configure:没有这样的文件或目录”。 这并不让我感到惊讶,因为没有名为“配置”的文件,只有 “配置.ac”。 我尝试输入“./configure.ac”并得到一个语法错误。 好的,它在文件中说“使用 autoconf 处理此文件以生成 配置脚本”,所以我尝试“./autoconf configure.ac”。这给了我

  configure.ac:18: error: Autoconf version 2.69 or higher is required
  configure.ac:18: the top level
  autom4te-2.68: /bin/m4 failed with exit status 63

我该如何前进?我刚刚从 MinGW 存储库安装了整个东西。 我认为这意味着某处(在哪里?)必须有更新版本的 自动配置;我在哪里得到它?我可以从我的 Fedora Linux 系统?

事实上,我这样做了,它给了我同样的错误信息!即使在我也复制之后 通过 autom4te 脚本。

帮忙?

【问题讨论】:

【参考方案1】:

我建议使用 MinGW-w64 代替旧的 MinGW,使用 MSYS2 代替旧的 MSYS。

在这种环境下,我可以编译 libnet 0.10.11 - 作为静态库和共享库 - 像这样:

# change the next line the install path
INSTALLPREFIX=/usr/local
sed -e 's/-Werror//' makfiles/mingw.mak > port.mak
( make MINGDIR=$MINGWDIR || make MINGDIR=$MINGWDIR ) &&
mkdir -p $INSTALLPREFIX/lib $INSTALLPREFIX/include $INSTALLPREFIX/bin &&
cp lib/libnet.a $INSTALLPREFIX/lib/libnet.a &&
cp include/libnet.h $INSTALLPREFIX/include/libnet.h &&
echo "EXPORTS" > libnet.def &&
sed -n -e "s/^.*\s\**\(net_[^(]*\)\s*(.*$/\t\1/p" include/libnet.h >> libnet.def &&
sed -n -e "s/^.*extern\s*.*\s*\(net_[^;\[]*\)\(\[.*\]\)*;.*$/\t\1 DATA/p" include/libnet.h >> libnet.def &&
gcc -shared -s -mwindows -def libnet.def -o libnet.dll lib/libnet.a -lws2_32 &&
dlltool --dllname $INSTALLPREFIX/bin/libnet.dll --output-lib $INSTALLPREFIX/lib/libnet.dll.a --input-def libnet.def &&
echo Done

【讨论】:

我的 MinGW 安装实际上是 MinGW-w64。我会看看我是否可以将它切换到 MSYS2 - 有什么区别?我应该提到,应用程序需要在 32 位模式下编译,因为许多依赖于 int 是 int32,包括在 PDU 的布局中。 MSYS2 要快得多,并且有更新的自动工具,这是您最初的问题。 MinGW-w64 也可以构建 32 位,所以这应该不是问题。

以上是关于mingw 不会在我的 Windows10 上编译 libnet的主要内容,如果未能解决你的问题,请参考以下文章

如何在 QT Creator 中使用 mingw 在多核上编译

如何在windows上编译Chromium 并加入MP3支持

如何使用Mingw-64在 Kali Linux上编译Windows漏洞

如何使用 MinGW 在命令行上编译 C 程序?

在windows上用CodeBlocks+MinGW+WxWidgets开发的程序,是不是可以在Linux和Mac上编译

GCC/MingW 在不同版本上编译