gpt4 book ai didi

centos - 如何使用 Red Hat Developer Toolset 构建 32 位二进制文​​件?

转载 作者:行者123 更新时间:2023-12-04 19:36:15 30 4
gpt4 key购买 nike

我找不到任何关于如何使用 Red Hat Developer Toolset(在本例中是在 CentOS 7 上运行的版本 9.0)定位 32 位的文档。发行说明提到:

Generation and manipulation of 32-bit binaries is also supported



它还在以下位置提供所需的 32 位库:
/opt/rh/devtoolset-9/root/usr/lib/gcc/x86_64-redhat-linux/9/32/

但是,构建失败。尝试构建最小 int main() {} 的示例程序:
$ scl enable devtoolset-9 'g++ -m32 tst.cpp'
/opt/rh/devtoolset-9/root/usr/libexec/gcc/x86_64-redhat-linux/9/ld: skipping incompatible /opt/rh/devtoolset-9/root/usr/lib/gcc/x86_64-redhat-linux/9/libstdc++_nonshared.a when searching for -lstdc++_nonshared
/opt/rh/devtoolset-9/root/usr/libexec/gcc/x86_64-redhat-linux/9/ld: cannot find -lstdc++_nonshared
collect2: error: ld returned 1 exit status

它无法找到的库实际上存在:
/opt/rh/devtoolset-9/root/usr/lib/gcc/x86_64-redhat-linux/9/32/libstdc++_nonshared.a

没有 -L flags 修复它(无论如何这将是错误的解决方案;链接器甚至不应该尝试在 -m32 模式下加载 64 位库。)

我在这里想念什么?

最佳答案

我猜你没有注意到 /opt/rh/devtoolset-9/root/usr/lib/gcc/x86_64-redhat-linux/9/32/libstdc++_nonshared.a很可能是一个悬空的符号链接(symbolic link):

$ file /opt/rh/devtoolset-9/root/usr/lib/gcc/x86_64-redhat-linux/9/32/libstdc++_nonshared.a
/opt/rh/devtoolset-9/root/usr/lib/gcc/x86_64-redhat-linux/9/32/libstdc++_nonshared.a: broken symbolic link to `../../../i686-redhat-linux/9/libstdc++_nonshared.a'
$

目标文件 /opt/rh/devtoolset-9/root/usr/lib/gcc/i686-redhat-linux/9/libstdc++_nonshared.a然而不幸的是,任何 CentOS 软件包都没有提供(但它应该在 devtoolset-9-libstdc++-devel.i686 中)。因此它可能是 CentOS 特有的打包错误 RHEA-2019:4134提供问题包 devtoolset-9-libstdc++-devel-9.1.1-2.6.el7.i686.rpm对于 Red Hat Enterprise Linux 7,包括所需的文件(在 RHEL 7 上由 yum install /opt/rh/devtoolset-9/root/usr/lib/gcc/i686-redhat-linux/9/libstdc++_nonshared.a 明确验证)。

关于centos - 如何使用 Red Hat Developer Toolset 构建 32 位二进制文​​件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60229740/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com