使用GCC交叉编译C应用程序

时间:2011-08-28 05:39:32

标签: c gcc cross-compiling

我想为i386架构构建一个应用程序但是目前我正在运行x86_64操作系统和共享库,我用来链接生成应用程序二进制文件是为i386架构而构建的。如果我在共享库上运行file命令,我会使用以下输出

ELF 32-bit LSB shared object, Intel 80386, version 1 (S│Size: 13064788 SV), dynamically linked, not stripped 

但是gcc会跳过这个共享库,说它是不兼容的。所以我只是想知道是否有任何选项我可以告诉GCC编译i386架构而不是我的本机机器架构?

是的我在这个论坛上经历过很多交叉编译问题,但我并不完全理解基础知识,因为我是新手来编译的东西。交叉编译是否需要我有一个gcc,它是为与我正在尝试编译的架构相同的架构而构建的?是否需要使用像binutils这样的工具链进行交叉编译?

我使用的是简单的手写make文件,而不使用任何特定于工具的工具链。

先谢谢

3 个答案:

答案 0 :(得分:2)

实际上,您可以在gcc build命令中简单地指定“-m32”。试试吧:))

如果出现链接错误,请尝试安装32位C运行时库;然后重试你的“gcc -m32”版本:

sudo apt-get install ia32-libs

答案 1 :(得分:2)

-m32选项告诉编译器生成32位代码而不是64位代码。如果您特别需要80386代码(和优化),您可能还需要-march=i386

答案 2 :(得分:1)

GCC支持-m32标志,使其可以编译为32位平台。