从 linux 交叉编译 win32 时找不到链接描述文件

问题描述 投票:0回答:1

无法为 win32 编译简单的 hello.c,请帮忙。针对 Windows 64 位进行编译效果很好。

选项错误?

-m32
应该足够了吗?我也尝试了一些
march
。我应该尝试使用 ldconfig 还是将 sysroot 更改为 ld?为
-T i386pe.x
指定
ld
也不起作用。我想我已经安装了所有软件包。只是为什么
ld
找不到脚本?还是我还缺少其他东西?

$ x86_64-w64-mingw32-gcc hello.c -m32
/usr/bin/x86_64-w64-mingw32-ld: cannot open linker script file ldscripts/i386pe.x: No such file or directory
collect2: error: ld returned 1 exit status
$ locate i386pe.x|ag x$
/snap/gnome-3-38-2004/143/usr/lib/x86_64-linux-gnu/ldscripts/i386pe.x
/snap/gnome-42-2204/120/usr/lib/x86_64-linux-gnu/ldscripts/i386pe.x
/snap/gnome-42-2204/141/usr/lib/x86_64-linux-gnu/ldscripts/i386pe.x
/usr/lib/x86_64-linux-gnu/ldscripts/i386pe.x
$ lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description:    Ubuntu 22.04.4 LTS
Release:        22.04
Codename:       jammy
$ sudo apt list --installed | grep mingw

WARNING: apt does not have a stable CLI interface. Use with caution in scripts.

binutils-mingw-w64-i686/jammy,now 2.38-3ubuntu1+9build1 amd64 [installed]
binutils-mingw-w64-x86-64/jammy,now 2.38-3ubuntu1+9build1 amd64 [installed,automatic]
g++-mingw-w64-i686-posix/jammy,now 10.3.0-14ubuntu1+24.3 amd64 [installed,automatic]
g++-mingw-w64-i686-win32/jammy,now 10.3.0-14ubuntu1+24.3 amd64 [installed,automatic]
g++-mingw-w64-i686/jammy,jammy,now 10.3.0-14ubuntu1+24.3 all [installed,automatic]
g++-mingw-w64-x86-64-posix/jammy,now 10.3.0-14ubuntu1+24.3 amd64 [installed,automatic]
g++-mingw-w64-x86-64-win32/jammy,now 10.3.0-14ubuntu1+24.3 amd64 [installed,automatic]
g++-mingw-w64-x86-64/jammy,jammy,now 10.3.0-14ubuntu1+24.3 all [installed,automatic]
g++-mingw-w64/jammy,jammy,now 10.3.0-14ubuntu1+24.3 all [installed,automatic]
gcc-mingw-w64-base/jammy,now 10.3.0-14ubuntu1+24.3 amd64 [installed,automatic]
gcc-mingw-w64-i686-posix-runtime/jammy,now 10.3.0-14ubuntu1+24.3 amd64 [installed,automatic]
gcc-mingw-w64-i686-posix/jammy,now 10.3.0-14ubuntu1+24.3 amd64 [installed,automatic]
gcc-mingw-w64-i686-win32-runtime/jammy,now 10.3.0-14ubuntu1+24.3 amd64 [installed,automatic]
gcc-mingw-w64-i686-win32/jammy,now 10.3.0-14ubuntu1+24.3 amd64 [installed]
gcc-mingw-w64-i686/jammy,jammy,now 10.3.0-14ubuntu1+24.3 all [installed]
gcc-mingw-w64-x86-64-posix-runtime/jammy,now 10.3.0-14ubuntu1+24.3 amd64 [installed,automatic]
gcc-mingw-w64-x86-64-posix/jammy,now 10.3.0-14ubuntu1+24.3 amd64 [installed,automatic]
gcc-mingw-w64-x86-64-win32-runtime/jammy,now 10.3.0-14ubuntu1+24.3 amd64 [installed,automatic]
gcc-mingw-w64-x86-64-win32/jammy,now 10.3.0-14ubuntu1+24.3 amd64 [installed,automatic]
gcc-mingw-w64-x86-64/jammy,jammy,now 10.3.0-14ubuntu1+24.3 all [installed,automatic]
gcc-mingw-w64/jammy,jammy,now 10.3.0-14ubuntu1+24.3 all [installed,automatic]
libz-mingw-w64/jammy,jammy,now 1.2.11+dfsg-4 all [installed,auto-removable]
mingw-w64-common/jammy,jammy,now 8.0.0-1 all [installed,automatic]
mingw-w64-i686-dev/jammy,jammy,now 8.0.0-1 all [installed]
mingw-w64-x86-64-dev/jammy,jammy,now 8.0.0-1 all [installed,automatic]
mingw-w64/jammy,jammy,now 8.0.0-1 all [installed]
linux cross-compiling mingw-w64
1个回答
0
投票

只需使用

i686-w64-mingw32-gcc
代替
x86_64-w64-mingw32-gcc

© www.soinside.com 2019 - 2024. All rights reserved.