gpt4 book ai didi

gcc - 使用gcc和as编译汇编有什么区别

转载 作者:行者123 更新时间:2023-12-05 08:31:38 24 4
gpt4 key购买 nike

我正在学习如何使用汇编语言(顺便在 Raspberry Pi 上),我想知道使用 gccas 进行编译之间有什么区别。

到目前为止,我注意到的差异是:

  • 我应该使用 as 执行额外的链接步骤。
  • 在 Raspberry Pi 上,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 检查生成的可执行文件。

关于gcc - 使用gcc和as编译汇编有什么区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56862288/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com