64位linux下的GCC如何编译出一个32位可执行程序?

64位linux下的GCC如何编译出一个32位可执行程序?,第1张

理论上安装支持环境,之后64位的gcc编译成32位程序,就加-m32参数即可。

当然还一个办法是装个32位的gcc。

另外,交叉编译也适用于x86架构。

不过这么编译经常会出现各种问题,所以编译32位的程序,最好还是用32位系统。

不一定重装,用chroot和setarch命令配合即可弄出一个32位的子系统。

一般64位系统最好不要安装32位库的-dev,经常有冲突,强行安装会破坏64位环境,头文件并不像共享库分得那么完美。

我觉得比较好的做法是,重新把某一个文件夹当成rootfs,在里面安装各种32位的库和库-dev,然后给gcc传递参数"--sysroot=路径"就可以让gcc重新选取那个文件夹为rootfs,而不再认为/为rootfs。

GCC编译器不支持生成 .sy 文件格式,因为 .sy 文件并不是一种标准的可执行文件格式。GCC可以生成多种可执行文件格式,包括 ELF、COFF、Mach-O 等。其中,ELF 是 Linux 系统上最常用的可执行文件格式。

如果你想生成 .sy 文件,可能需要使用其他编译器或工具链来完成。.sy 文件通常是为了在特定的硬件平台上运行特定的 *** 作系统而生成的,因此你需要选择适合你的硬件平台和 *** 作系统的编译器或工具链。

另外,你也可以考虑使用其他文件格式,例如二进制文件或汇编语言文件,这些文件格式在 GCC 编译器中都有支持。如果你想生成二进制文件,可以使用以下命令:

plaintext

Copy code

gcc -o output.bin input.c

其中,-o 参数用于指定输出文件的名称,output.bin 是输出文件的名称,input.c 是输入文件的名称。

如果你想生成汇编语言文件,可以使用以下命令:

plaintext

Copy code

gcc -S input.c

其中,-S 参数用于生成汇编语言文件,input.c 是输入文件的名称。

gcc 是 Linux 系统下面的 C 语言编译器。它和 WINDOWS 系统下面的 Microsoft Visual Studio C++ 6.0 不同,在 WINDOWS 系统下面对任何的一个源程序,经编译、链接、到最终生成的所有可执行程序必定都是以 *.exe 结尾的,*.exe 是 WINDOWS 系统下面的可执行程序的后缀;而 gcc 对 C 语言进行编译,并没有规定可执行程序的具体名字到底是什么。举例如下:

$gcc my_program.c <cr>

如果在命令行中,没有带任何参数的话,如果 C 语言源程序没有任何语法错误的话,那么生成的缺省的可执行文件就是:a.out;

$gcc my_program.c -o my_runfile <cr>

如果在命令行中,指定:-o 参数,代表对 my_program.c 进行编译后,生成的可执行文件名为:my_runfile。

同理,在进行命令行编译过程中,只要指定了 -o 参数,那么你后面的可执行文件名,就随便由你自己决定了,这个就没有一定之规了。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/11416358.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-15
下一篇 2023-05-15

发表评论

登录后才能评论

评论列表(0条)

保存