[英]What are the differences between compiling assembly using gcc and as
我正在学习如何使用汇编语言(上树莓派顺便说一句),我想知道有什么区别之间使用gcc
和as
做编译。
到目前为止,我注意到的差异是:
as
做额外的链接步骤。as
似乎比gcc
本身更能识别架构。 我必须先告诉gcc
架构,然后才能使用整数除法之类的指令。gcc
我可以轻松访问 C 标准库函数。 我认为这可以使用as
但我还没有弄清楚。我想坚持使用特定的编译器。 我应该注意哪些其他差异。 使用两者是否有优势/劣势?
gcc
只是一个前端,它as
(和ld
运行as
除非您使用-c
在没有链接的情况下停止目标文件)。 使用gcc -v
查看它运行的内容以及它传递的命令行选项。
如果要链接库,一般使用gcc
。 它知道传递给ld
以设置库路径的正确命令行选项,以及将内容放入ld
命令行的顺序。
您可能会发现gcc -nostdlib
或-nostartfiles
很有用,例如,如果您想编写自己的_start
但仍然链接库。 此外-no-pie
和/或-static
取决于您想要如何链接。
如果您想了解有关工具链和链接的更多信息,请务必尝试使用ld
选项并查看更改选项时会出现什么问题。 和/或使用readelf -a
检查生成的可执行文件。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.