use*_*074 1 assembly gcc gnu-assembler raspberry-pi
我正在学习如何使用汇编语言(顺便说一句在Raspberry Pi上),并且想知道使用gcc和as进行编译之间有什么区别。
到目前为止,我注意到的差异是:
as。as似乎比单独识别要好gcc。gcc在使用整数除法之类的指令之前,我必须告诉架构。gcc我可以很方便地在C标准库函数。我认为可以使用,as但我还没有弄清楚。我想坚持使用特定的编译器。我应该知道还有什么其他区别。使用这两种方法都有优点/缺点吗?
gcc只是运行的前端as(ld除非您-c习惯在不链接的情况下停止目标文件)。使用gcc -v看看它运行什么,它通过什么命令行选项。
如果要链接库,通常使用gcc。它知道要传递给ld设置库路径的正确命令行选项,以及将内容放入ld命令行的顺序。
您可能会发现gcc -nostdlib或-nostartfiles有用,例如,如果您想编写自己的_start但仍然链接库。也-no-pie和/或-static取决于您要如何链接。
如果您想了解有关工具链和链接的更多信息,请务必尝试使用ld选项,并查看更改选项时会遇到的问题。和/或用于readelf -a检查生成的可执行文件。