Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/assembly/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用gcc和as编译程序集有什么区别_Gcc_Assembly_Raspberry Pi_Gnu Assembler - Fatal编程技术网

使用gcc和as编译程序集有什么区别

使用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只是一个前端,作为运行

我正在学习如何使用汇编语言(顺便说一句,在Raspberry Pi上),我想知道使用
gcc
as
进行编译有什么区别

到目前为止,我注意到的区别是:

  • 我应该使用
    作为
    执行额外的链接步骤
  • 在Raspberry Pi上,
    as
    似乎比
    gcc
    本身更能识别体系结构。在使用整数除法之类的指令之前,我必须先告诉gcc架构
  • 使用
    gcc
    我可以轻松访问C标准库函数。我假设使用
    作为
    是可能的,但我还没有弄明白

我想坚持使用特定的编译器。我还应该注意哪些其他差异。使用这两种方法都有优点/缺点吗?

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
之间的差异链接,有一些更详细的信息。也许这是有益的。