我使用MinGW-get在Windows10系统上安装了MinGW。然后我下载了libnet(在github的ZIP文件中(,并尝试对其进行编译。文件中说以"开头/配置&;make";,但即使在我之后从cmd.exe切换到MinGW附带的bash(bash 3.1提示(,它说"/configure:没有这样的文件或目录";。这并不让我感到惊讶,因为没有名为";配置";,只有"配置.ac";。我试着打"/配置.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存储库安装了整个东西。我想这意味着在某个地方(哪里?(一定有一个更新版本的autoconf;我在哪里拿到它?我可以从我的Fedora Linux系统?
事实上,我这样做了,它给了我同样的错误信息!即使在我也复制通过autom4te脚本。
帮助?
我建议使用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*(.*$/t1/p" include/libnet.h >> libnet.def &&
sed -n -e "s/^.*externs*.*s*(net_[^;[]*)([.*])*;.*$/t1 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