gpt4 book ai didi

c++ - 什么决定了在 64 位机器上构建的 32 位库是否需要 x86_64 或 i386 依赖项?

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:20:37 24 4
gpt4 key购买 nike

我第一次更新一些旧的 C++ 项目以在 64 位 Linux 机器上构建,我没有太多的 Linux 经验。我需要将所有内容构建为 32 位二进制文​​件,因此我在编译器和链接器标志中使用 -m32 构建所有内容。我发现,在链接到它们的依赖项时,有些必须链接到 i386 共享对象,有些必须链接到 x86_64 共享对象。如果我只在链接路径中包含错误的文件夹 (-L/path/to/wrong/folder),它说

/usr/bin/ld: skipping incompatible xxx.so when searching for -lxxx

我已经明白了 means the architecture doesn't match what I'm trying to build .

两个这样不同的项目的 makefile 几乎完全相同,所以看起来我在那里做的事情并没有明显的错误,-m32 出现在对 gcc< 的调用中g++ 在终端中。是什么导致了这种差异?我应该担心,还是这种情况很常见?

如果需要更多信息来回答,请告诉我;由于对 Linux 和 gcc 缺乏经验,我不太确定,所以提前致歉。

最佳答案

感谢@Wyzard 和@duskwuff 的提示。我确实能够通过在我的 .o 文件上使用 file 找到我的问题。这只是一个愚蠢的错误;我无意中恢复了对其中一个项目的 make 文件所做的更改,其中包括添加 -m32 标志。我想我误解了“x86_64”库的用途,这让我感到困惑(我以为它的意思是“64 位机器的 32 位进程”)。

关于c++ - 什么决定了在 64 位机器上构建的 32 位库是否需要 x86_64 或 i386 依赖项?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43552574/

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