使用gcc和as编译程序集有什么区别
我正在学习如何使用汇编语言(顺便说一句,在Raspberry Pi上),我想知道使用使用gcc和as编译程序集有什么区别,gcc,assembly,raspberry-pi,gnu-assembler,Gcc,Assembly,Raspberry Pi,Gnu Assembler,我正在学习如何使用汇编语言(顺便说一句,在Raspberry Pi上),我想知道使用gcc和as进行编译有什么区别 到目前为止,我注意到的区别是: 我应该使用作为执行额外的链接步骤 在Raspberry Pi上,as似乎比gcc本身更能识别体系结构。在使用整数除法之类的指令之前,我必须先告诉gcc架构 使用gcc我可以轻松访问C标准库函数。我假设使用作为是可能的,但我还没有弄明白 我想坚持使用特定的编译器。我还应该注意哪些其他差异。使用这两种方法都有优点/缺点吗?gcc只是一个前端,作为运行
gcc
和as
进行编译有什么区别
到目前为止,我注意到的区别是:
- 我应该使用
执行额外的链接步骤作为
- 在Raspberry Pi上,
似乎比as
本身更能识别体系结构。在使用整数除法之类的指令之前,我必须先告诉gcc架构gcc
- 使用
我可以轻松访问C标准库函数。我假设使用gcc
作为
是可能的,但我还没有弄明白
我想坚持使用特定的编译器。我还应该注意哪些其他差异。使用这两种方法都有优点/缺点吗?
gcc
只是一个前端,作为运行(和ld
,除非您使用-c
停止对象文件而不链接)。使用gcc-v
查看它运行什么以及传递什么命令行选项
如果要链接库,通常使用gcc
。它知道传递到ld
以设置库路径的正确命令行选项,以及在ld
命令行中放置内容的顺序
您可能会发现gcc-nostlib
或-nostartfiles
很有用,例如,如果您想编写自己的\u start
但仍然链接库。另外,-无饼图
和/或-静态
,具体取决于您希望链接的方式
如果您想了解更多有关工具链和链接的信息,请务必使用ld
选项,并查看更改选项时出现的中断。和/或使用readelf-a
检查生成的可执行文件。gcc
只是作为运行的前端(和ld
,除非使用-c
停止在对象文件上而不链接)。使用gcc-v
查看它运行什么以及传递什么命令行选项
如果要链接库,通常使用gcc
。它知道传递到ld
以设置库路径的正确命令行选项,以及在ld
命令行中放置内容的顺序
您可能会发现gcc-nostlib
或-nostartfiles
很有用,例如,如果您想编写自己的\u start
但仍然链接库。另外,-无饼图
和/或-静态
,具体取决于您希望链接的方式
如果您想了解更多有关工具链和链接的信息,请务必使用ld
选项,并查看更改选项时出现的中断。和/或使用readelf-a
检查生成的可执行文件。您也可以访问汇编中的C标准库函数。只需遵循并使用标准的printf
。
要创建一个对象文件,首先必须使用as
编译汇编程序。之后,您可以使用链接器链接所有必需的库(stdio
) 您也可以访问汇编中的C标准库函数。只需遵循并使用标准的printf
。
要创建一个对象文件,首先必须使用as
编译汇编程序。之后,您可以使用链接器链接所有必需的库(stdio
) stdio函数是标准C库的一部分。在像RPi这样的GNU/Linux系统上,库是libc.so
。ld
的链接选项是-lc
stdio函数是标准C库的一部分。在像RPi这样的GNU/Linux系统上,库是libc.so
。ld
的链接选项是-lc
是关于gcc
和ld
之间链接差异的一些更详细信息。也许这是有益的。关于gcc
和ld
之间的差异链接,有一些更详细的信息。也许这是有益的。