在编译pwnat时遇到的问题
1. 在windows下用cl编译
在win10 ltsc2021,
VS v17.9.2环境下,
使用作者默认配置进行编译,
在终端下键入nmake /f makefile.win32
编译成功。
2. 在linux下用gcc编译
在wsl Ubuntu-20.04,
默认的gcc9.4.0环境下,
使用作者默认配置进行编译,
在终端下键入make -f makefile
编译成功。
3. 在ubuntu下交叉编译到windows
在WSL 版本: 2.2.4.0,
内核版本: 5.15.153.1-2,
的Ubuntu-20.04下,
输入sudo apt-get install mingw-w64安装mingw-w64,
输入i686-w64-mingw32-gcc -v查看版本,
返回gcc version 9.3-win32 20200320 (GCC)
3.1 准备编译,
输入./cross-compile-mingw.sh
提示 error: socket.c: No such file or directory
3.2 查看文件,
发现需要在src文件夹里执行,
输入cd src
输入../cross-compile-mingw.sh
提示fatal error: corecrt_stdio_config.h: No such file or directory
3.3 经过查询,
是因为没有自动添加环境,
输入export C_INCLUDE_PATH=$C_INCLUDE_PATH:/usr/share/mingw-w64/include
追加 临时变量
再次输入../cross-compile-mingw.sh
抛出两个错误,
error: redefinition of ‘struct timezone’
error: too many arguments to function ‘WSAGetLastError’
note: declared here 1049 | WINSOCK_API_LINKAGE int WSAAPI WSAGetLastError(void);
3.4 经过查询,
struct timezone在这个版本的mingw下已被定义,
遂注销该定义,
‘WSAGetLastError’在这个版本的mingw下不允许有参数,
遂删除参数,
再次输入../cross-compile-mingw.sh
编译成功。
4. 在windows下用mingw编译
在win10 ltsc2021,
x86_64-12.2.0-release-posix-seh-ucrt-rt_v10-rev2环境下,
https://github.com/niXman/mingw-builds-binaries/releases/tag/12.2.0-rt_v10-rev2
环境下载
主要差异,
需要和在Windows下编译一样,
引入
"C:\Program Files (x86)\Windows Kits\1o\Lib\1o.o.22621.o\um\x86"
静态库
浙公网安备 33010602011771号