怎么用MinGW64编译32位程序?
本帖最后由 轻装前行 于 2024-10-12 21:59 编辑64位的可以,就是32位的不行,网上都搜不到解决方法,
部分错误日志:
cmd /c chcp 65001>nul && C:\mingw64\bin\g++.exe -fdiagnostics-color=always -g -m32 C:\Users\xxx\Desktop\cdm\demo.cpp -o C:\Users\xxx\Desktop\cdm\demo.exe
C:/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/14.2.0/../../../../x86_64-w64-mingw32/bin/ld.exe: cannot find -lkernel32: No such file or directory
C:/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/14.2.0/../../../../x86_64-w64-mingw32/bin/ld.exe: skipping incompatible C:/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/14.2.0/../../../../x86_64-w64-mingw32/lib/libkernel32.a when searching for -lkernel32
collect2.exe: error: ld returned 1 exit status
总结就是:
cannot find lmingw32,liconv,lkernel32,luser32,lshell32,ladvapi32,lmsvcrt,lmingwex,lgcc,lgcc_s,lmingw32一大堆看不懂的依赖
然后ld.exe返回了1,编译失败退出。
有没有解决办法? 还是只能换mingw32了 编译32位程序遇到的问题通常是因为没有安装适合编译32位程序的库和工具。以下是解决方法:
1. **安装32位的MinGW工具链**:
- 你需要一个能够编译32位程序的MinGW工具链。可以使用MinGW-w64 i686版本。
- 使用`mingw-get`工具,或者到(https://mingw-w64.org/doku.php/download)下载i686版本的MinGW-w64。
2. **配置环境变量**:
- 安装完成后,将32位版本的MinGW的 `bin` 目录路径添加到系统的环境变量 `PATH` 中。确保这个路径在64位版本的路径之前。
3. **使用正确的编译器选项**:
- 确保在编译时使用 `-m32` 选项,以指定要生成32位构建。
- 检查你是否使用了正确的库路径和库文件,可以通过`-L`选项和`-l`选项来手动指定。
4. **确认库兼容性**:
- 确保链接的库都是32位的。因为链接32位程序所需的库必须都是32位格式,尝试使用32位的系统库。
尝试以上方法后,应该可以解决无法编译32位程序的问题。如果还有问题,检查环境变量配置是否有误,或提供更多错误日志以便更具体的分析。
以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。 编译器用的是github.com/niXman/mingw-builds-binaries/releases/download/14.2.0-rt_v12-rev0/x86_64-14.2.0-release-win32-seh-ucrt-rt_v12-rev0.7z 轻装前行 发表于 2024-10-12 22:17
编译器用的是github.com/niXman/mingw-builds-binarie ...
你使用的编译器是64位的MinGW版本,默认情况下可能不支持编译32位程序。要解决这个问题,你可以尝试以下步骤:
1. **下载32位版本的MinGW**:
- 从MinGW-w64项目的下载页面获取32位版本的工具链。选择i686架构的版本。
2. **安装32位工具链**:
- 解压下载的32位工具链,并将其路径添加到系统的环境变量`PATH`中。确保这个路径在64位工具链的路径之前。
3. **编译时指定32位架构**:
- 使用`-m32`选项来指定编译32位程序。例如:
g++ -m32 -o demo.exe demo.cpp
4. **检查库路径**:
- 确保链接的库都是32位的。你可能需要手动指定库路径,使用`-L`选项来指向32位库的目录。
5. **验证工具链配置**:
- 确保工具链的配置文件中没有错误,特别是`specs`文件中是否正确配置了32位的库路径。
通过这些步骤,你应该能够成功编译32位程序。如果问题仍然存在,建议检查是否有其他依赖项需要32位版本,或者尝试使用其他版本的MinGW工具链。
以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
页:
[1]