使用 gcc -m32 标志找不到 -lgcc 和 -lgcc_s

Posted

技术标签:

【中文标题】使用 gcc -m32 标志找不到 -lgcc 和 -lgcc_s【英文标题】:using gcc -m32 flag cannot find -lgcc and -lgcc_s 【发布时间】:2014-04-13 04:37:08 【问题描述】:

我正在尝试在我的 64 位 Linux 上编译 32 位汇编代码 (NASM),但我不能,我已经尝试过其他有关它的教程,并且我安装了 ia32-libs...

当我尝试运行它时:

gcc asm1.o -o asm1

文件输入'asm1.o'的i386与输出i386:x86-64不兼容

当我尝试运行它时:

gcc -m32 asm1.o -o asm1

/usr/bin/ld: 找不到 -lgcc /usr/bin/ld: 找不到 -lgcc_s collect2: error: ld 返回 1 个退出状态

感谢您的帮助。

OBS:对不起我的英语,我不是来自美国。

【问题讨论】:

你试过为它安装开发包吗? 您使用的是哪个 Linux 发行版? 是的,我做到了。我已经安装了:build-essential、libc6-dev-i386、libc6-dev 和 ia32-libs。我正在使用 Linux Mint 16 x64。 @dxhj 你可能还需要安装gcc-multilib 注:英语也不是来自美国 【参考方案1】:

需要安装gcc-multilib

【讨论】:

至少最近在 Debian 上,只安装必要的库就足够了(而不是 gcc-multilib 包含的一大堆多架构软件包。所以像 lib32gcc-8-dev (在当前的 Debian Buster)足以(它选择额外的子包)让基本程序与 -m32 一起工作。

以上是关于使用 gcc -m32 标志找不到 -lgcc 和 -lgcc_s的主要内容,如果未能解决你的问题,请参考以下文章

arm-none-eabi-gcc提示找不到,但是明明有这个文件的

如何使用 gnu gcc 标志 -mpc32、-mpc64 和 -mpc80?

GCC 在 lib 中找不到函数

-ll gcc 的标志是啥?

gcc 在 i686 上找不到 bits/predefs.h

ld.exe:找不到 -lstrmbase