在编译pwnat时遇到的问题

1. 在windows下用cl编译

在win10 ltsc2021,
VS v17.9.2环境下,

https://github.com/samyk/pwnat
获取该项目

使用作者默认配置进行编译,
在终端下键入nmake /f makefile.win32

编译成功。

2. 在linux下用gcc编译

在wsl Ubuntu-20.04,
默认的gcc9.4.0环境下,

https://github.com/samyk/pwnat
获取该项目

使用作者默认配置进行编译,
在终端下键入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
环境下载

过程同*3. 在ubuntu下交叉编译到windows

主要差异,
需要和在Windows下编译一样,
引入

"C:\Program Files (x86)\Windows Kits\1o\Lib\1o.o.22621.o\um\x86"

静态库

posted @ 2024-06-24 21:10  监司  阅读(117)  评论(0)    收藏  举报