在 64 位 open suse linux 上构建 32 exe 会出现 link 错误

building 32 exe on 64 bit open suse linux gives link error

在我的虚拟机中,我安装了 open suse linux 64 位。 尝试为 32 位构建一个 exe。

但是在 运行 命令上: g++ prg1.cpp -o prg1 -m32

我收到以下错误:

/usr/lib64/gcc/x86_64-suse-linux/4.8/../../../../x86_64-suse-linux/bin/ld: skipping incompatible /usr/lib64/gcc/x86_64-suse-linux/4.8/libstdc++.so when searching for -lstdc++ /usr/lib64/gcc/x86_64-suse-linux/4.8/../../../../x86_64-suse-linux/bin/ld: skipping incompatible /usr/lib64/gcc/x86_64-suse-linux/4.8/libstdc++.a when searching for -lstdc++ /usr/lib64/gcc/x86_64-suse-linux/4.8/../../../../x86_64-suse-linux/bin/ld: cannot find -lstdc++ collect2: error: ld returned 1 exit status

为了构建 32,我已经为 32 位安装了必要的 rpms。

在 运行 g++ -print-search-dirs ,输出为

install: /usr/lib64/gcc/x86_64-suse-linux/4.8/ programs: =/usr/lib64/gcc/x86_64-suse-linux/4.8/:/usr/lib64/gcc/x86_64-suse-linux/4.8/:/usr/lib64/gcc/x86_64-suse-linux/:/usr/lib64/gcc/x86_64-suse-linux/4.8/:/usr/lib64/gcc/x86_64-suse-linux/:/usr/lib64/gcc/x86_64-suse-linux/4.8/../../../../x86_64-suse-linux/bin/x86_64-suse-linux/4.8/:/usr/lib64/gcc/x86_64-suse-linux/4.8/../../../../x86_64-suse-linux/bin/ libraries: =/usr/lib64/gcc/x86_64-suse-linux/4.8/:/usr/lib64/gcc/x86_64-suse-linux/4.8/../../../../x86_64-suse-linux/lib/x86_64-suse-linux/4.8/:/usr/lib64/gcc/x86_64-suse-linux/4.8/../../../../x86_64-suse-linux/lib/../lib64/:/usr/lib64/gcc/x86_64-suse-linux/4.8/../../../x86_64-suse-linux/4.8/:/usr/lib64/gcc/x86_64-suse-linux/4.8/../../../../lib64/:/lib/x86_64-suse-linux/4.8/:/lib/../lib64/:/usr/lib/x86_64-suse-linux/4.8/:/usr/lib/../lib64/:/usr/lib64/gcc/x86_64-suse-linux/4.8/../../../../x86_64-suse-linux/lib/:/usr/lib64/gcc/x86_64-suse-linux/4.8/../../../:/lib/:/usr/lib/

虽然也安装了 32 位 libstdc++,但是linker 无法link。是否需要任何特定标志来告诉 linker 构建 32 位 或者我必须安装任何其他软件包?

To build for 32 i have installed the necessary rpms for 32 bit.

不,你没有。

请注意,为了构建程序,您需要 32 位运行时 开发库。我猜你已经安装了前者,但没有安装后者。