2011-08-28 177 views
1

C应用程序,我想建立i386架构,但我目前正在运行的x86_64的操作系统和我使用链接到生成应用程序二进制文件是针对i386架构构建的共享库的应用程序。如果我的共享库运行文件命令我用我获得以下输出交叉编译使用GCC

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

但是GCC跳过此共享库说它是不相容的。所以我只是想知道是否有任何选择我可以告诉GCC编译i386架构而不是我的本地机器架构?

是的,我已经通过这个论坛,许多交叉编译的问题走了,但我没有完全理解丰达,因为我是新来的交叉编译的东西。交叉编译是否需要我有一个与我试图编译的体系结构相同的体系结构的gcc?交叉编译是否必须使用像binutils这样的工具链?

我用一个简单的手写make文件和不使用任何工具的工具链。

由于提前

回答

2

其实,你也许能简单地指定您的gcc编译命令“-m32”脱身。试试吧:)

如果你得到链接错误,然后尝试安装32位C运行时库;然后重试“的gcc -m32”编译:

sudo apt-get install ia32-libs 
+0

由于其工作:) ..是的,它没有抱怨失踪32位的库所以安装IA32-库。其实感谢所有回答:)的人:) – copyninja

1

GCC支持-m32标志这使得它编译一个32位平台。

2

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