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

基思

我正在更新一些旧的 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

我已经理解这意味着架构与我试图构建的不匹配

对于两个如此不同的项目,makefile 几乎相同,因此我似乎没有在那里做明显错误的事情,并且-m32出现在对终端的调用gccg++终端中。什么可能导致这种差异?我应该担心,还是这种情况发生是典型的?

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

基思

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

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

为什么即使我仅在x86_64系统上,iOS模拟器也需要i386和x86_64符号?

来自分类Dev

在Ubuntu 64位14.04.3上缺少qtdeclarative-dev:i386的依赖项

来自分类Dev

机器类型(C ++库):i386与x86_64

来自分类Dev

为什么在x86_64系统上安装i386版本的软件?

来自分类Dev

即使添加i386,也无法在x86_x64服务器上运行ELF 32位

来自分类Dev

如何安装build-essential:i386以在64位系统上编译32位可执行文件?

来自分类Dev

x86_64和i386有什么区别?

来自分类Dev

如何使`go get`针对x86_64而不是i386构建

来自分类Dev

如何在x86-64机器上为i386目标构建rpm?

来自分类Dev

Intel(x86_64)64位与32位整数算术性能差异

来自分类Dev

x86_64,i386,ia64和其他此类术语代表什么?

来自分类Dev

x86_64,i386,ia64和其他此类术语代表什么?

来自分类Dev

在x86_64中,如果条件为假,则32位cmov是否清除最高位?

来自分类Dev

在x86_64中,如果条件为假,则32位cmov是否清除最高位?

来自分类Dev

x86_64 amd64和64位有什么区别?

来自分类Dev

x86_64 amd64和64位有什么区别?

来自分类Dev

用于 x86_64 上 32 位和 64 位值的非临时加载的 C/C++ 内在函数?

来自分类Dev

如何将32位参数传递给x86_64上的Linux syscall?

来自分类Dev

Xcode 6.1:文件是为x86_64构建的,该文件不是要链接的体系结构(i386)

来自分类Dev

我安装了错误的ISO吗?64位PC(AMD64)桌面映像与32位PC(i386)桌面映像

来自分类Dev

我是否需要为 64 位机器上的 32 位应用程序部署 32 位或 64 位 VC++ 运行时?

来自分类Dev

使用NASM为x86_64环境编译32位程序集

来自分类Dev

运行x86_64 linux并出现错误:32位Linux Android仿真器

来自分类Dev

将 rrd 文件从 32 位 ARM 转换为 x86_64

来自分类Dev

为什么cmake在64位系统上查找32位库而不是64位库?

来自分类Dev

为什么i386软件包会自动安装在64位计算机上?

来自分类Dev

无法在64位12.04上运行“ dpkg --add-architecture i386”以运行Eclipse ADT

来自分类Dev

在dpkg --add-architecture i386的64位中断上安装Skype

来自分类Dev

无法在64位12.04上运行“ dpkg --add-architecture i386”以运行Eclipse ADT

Related 相关文章

  1. 1

    为什么即使我仅在x86_64系统上,iOS模拟器也需要i386和x86_64符号?

  2. 2

    在Ubuntu 64位14.04.3上缺少qtdeclarative-dev:i386的依赖项

  3. 3

    机器类型(C ++库):i386与x86_64

  4. 4

    为什么在x86_64系统上安装i386版本的软件?

  5. 5

    即使添加i386,也无法在x86_x64服务器上运行ELF 32位

  6. 6

    如何安装build-essential:i386以在64位系统上编译32位可执行文件?

  7. 7

    x86_64和i386有什么区别?

  8. 8

    如何使`go get`针对x86_64而不是i386构建

  9. 9

    如何在x86-64机器上为i386目标构建rpm?

  10. 10

    Intel(x86_64)64位与32位整数算术性能差异

  11. 11

    x86_64,i386,ia64和其他此类术语代表什么?

  12. 12

    x86_64,i386,ia64和其他此类术语代表什么?

  13. 13

    在x86_64中,如果条件为假,则32位cmov是否清除最高位?

  14. 14

    在x86_64中,如果条件为假,则32位cmov是否清除最高位?

  15. 15

    x86_64 amd64和64位有什么区别?

  16. 16

    x86_64 amd64和64位有什么区别?

  17. 17

    用于 x86_64 上 32 位和 64 位值的非临时加载的 C/C++ 内在函数?

  18. 18

    如何将32位参数传递给x86_64上的Linux syscall?

  19. 19

    Xcode 6.1:文件是为x86_64构建的,该文件不是要链接的体系结构(i386)

  20. 20

    我安装了错误的ISO吗?64位PC(AMD64)桌面映像与32位PC(i386)桌面映像

  21. 21

    我是否需要为 64 位机器上的 32 位应用程序部署 32 位或 64 位 VC++ 运行时?

  22. 22

    使用NASM为x86_64环境编译32位程序集

  23. 23

    运行x86_64 linux并出现错误:32位Linux Android仿真器

  24. 24

    将 rrd 文件从 32 位 ARM 转换为 x86_64

  25. 25

    为什么cmake在64位系统上查找32位库而不是64位库?

  26. 26

    为什么i386软件包会自动安装在64位计算机上?

  27. 27

    无法在64位12.04上运行“ dpkg --add-architecture i386”以运行Eclipse ADT

  28. 28

    在dpkg --add-architecture i386的64位中断上安装Skype

  29. 29

    无法在64位12.04上运行“ dpkg --add-architecture i386”以运行Eclipse ADT

热门标签

归档