GCC命令选项
控制输出类型的选项
-c选项
作用:指示编译器仅编译或汇编源文件,但不进行链接操作。默认情况下,生成文件名为源文件的后缀‘.c’、‘.i’、‘.s’等替换为‘.o’。
示例:gcc -c main.c将生成main.o,或gcc -c main.c -o main.o。
预处理器选项
-M选项
作用:生成源文件的依赖关系,包含了该源文件所有的依赖,默认会发送到标准输出(stdout)。
示例1:在ubuntu中,新建如下main.c、main.h、head1.h、head2.h文件。
main.c文件:
#include <stdio.h>
#include "main.h"
void main(void)
{
printf("Hello word!rn");
}
main.h文件:
#include "head1.h"
#include "head2.h"
head1.h、head2.h都是空的头文件。
在控制台执行gcc -M main.c命令,输出如下。
user@ubuntu:~/*path*$ gcc -M main.c
main.o: main.c /usr/include/stdc-predef.h /usr/include/stdio.h
/usr/include/x86_64-linux-gnu/bits/libc-header-start.h
/usr/include/features.h /usr/include/x86_64-linux-gnu/sys/cdefs.h
/usr/include/x86_64-linux-gnu/bits/wordsize.h
/usr/include/x86_64-linux-gnu/bits/long-double.h
/usr/include/x86_64-linux-gnu/gnu/stubs.h
/usr/include/x86_64-linux-gnu/gnu/stubs-64.h
/usr/lib/gcc/x86_64-linux-gnu/7/include/stddef.h
/usr/include/x86_64-linux-gnu/bits/types.h
/usr/include/x86_64-linux-gnu/bits/typesizes.h
/usr/include/x86_64-linux-gnu/bits/types/__FILE.h
/usr/include/x86_64-linux-gnu/bits/types/FILE.h
/usr/include/x86_64-linux-gnu/bits/libio.h
/usr/include/x86_64-linux-gnu/bits/_G_config.h
/usr/include/x86_64-linux-gnu/bits/types/__mbstate_t.h
/usr/lib/gcc/x86_64-linux-gnu/7/include/stdarg.h
/usr/include/x86_64-linux-gnu/bits/stdio_lim.h
/usr/include/x86_64-linux-gnu/bits/sys_errlist.h main.h head1.h head2.h
-MM选项
作用:生成源文件的依赖关系,不包含标准系统头文件的依赖,默认会发送到标准输出(stdout)。
示例:同示例1代码。
在控制台执行gcc -MM main.c命令,输出如下。
user@ubuntu:~/*path*$ gcc -MM main.c
main.o: main.c main.h head1.h head2.h
-MD选项
作用:生成源文件的依赖关系,包含了该源文件所有的依赖,输出到一个.d后缀的文件中。
示例:同示例1代码。
在控制台执行gcc -MD main.c命令,将在同级目录生成main.d文件,该文件的内容和-M选项输出的内容一致。
-MMD选项
作用:生成源文件的依赖关系,不包含标准系统头文件的依赖,输出到一个.d后缀的文件中。
示例:同示例1代码。
在控制台执行gcc -MMD main.c命令,将在同级目录生成main.d文件,该文件的内容和-MM选项输出的内容一致。
-MF选项
作用:用于指定生成依赖关系文件的名称。
示例:gcc -c -MMD -MF name.d main.c
-MP选项
作用:生成源文件的依赖关系,为每个头文件生成一个伪目标,这将避免删除了头文件而没有更新”Makefile“导致make出错的情况。
示例:同示例1代码。
在控制台执行gcc -c -MMD main.c -MP命令,执行结果如下。
main.d文件
main.o: main.c main.h head1.h head2.h
main.h:
head1.h:
head2.h:
假如我们在main.c中删除了main.h头文件相关的代码,但是我们没有重新生成main.d文件,在执行make时将不会报错。
ARM处理器相关的选项
-mcpu=name[+extension…]选项
作用:此选项用于指定目标ARM处理器的名称。
示例:-mcpu=cortex-m3
-mthumb 与 -marm选项
作用:生成在ARM状态或Thumb状态下执行的代码。
示例:-mthumb
AS命令选项
-Wa选项
作用:传递给汇编器(assembler)的选项前缀,其后的汇编器参数必须用逗号相互分隔。
示例:gcc -c -g -O -Wa,-alh,-L file.c
-a[cdghlmns]选项
作用:生成list文件。
示例:gcc -c main.c -Wa,-a,-ad,-alms=main.lst -o main.o
-a[cdghlmns]
Turn on listings, in any of a variety of ways:
以多种方式开启listings功能:
-ac omit false conditionals // 忽略无效条件分支
-ad omit debugging directives // 忽略调试指令
-ag include general information, like as version and options passed // 包含一般信息,如汇编器版本和传递的选项
-ah include high-level source // 包含高级源代码信息
-al include assembly // 包含汇编代码
-am include macro expansions // 包含宏展开内容
-an omit forms processing // 忽略表格处理形式
-as include symbols // 包含符号信息
=file
set the name of the listing file // 设置listing文件的名称
You may combine these options; for example, use -aln for assembly
listing without forms processing. The =file option, if used, must
be the last one. By itself, -a defaults to -ahls.
这些选项可以组合使用;例如,使用 `-aln` 来获取不包含表格处理形式的汇编代码列表。
如果使用`=file` 选项,它必须是最后一个选项。单独使用 `-a` 默认等同于 `-ahls`。
参考文献
[1] Using the GNU Compiler Collection For gcc version 9.2.1 (GNU Tools for Arm Embedded Processors 9-2019-q4-major)
[2] Using as The gnu Assembler (GNU Tools for Arm Embedded Processors 9-2019-q4-major) Version 2.33.1
原文地址:https://blog.csdn.net/qq_24629659/article/details/135570196
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.7code.cn/show_57210.html
如若内容造成侵权/违法违规/事实不符,请联系代码007邮箱:suwngjj01@126.com进行投诉反馈,一经查实,立即删除!