gcc编译器详述

  1. gcc是linux上常用的编译工具,其实质上不是一个单独的程序,而是多个程序的集合,因此称为工具链;

  1. 程序的预处理、编译、执行过程

①预处理:c语言的源文件(.c)先通过预处理器进行预处理,主要处理#include语句包含的文件内容替换、#define定义的宏变量替换、删除所有的注释,生成.i的预处理文件,命令是gcc -E hello.c -o hello.i

②编译:将上述预处理文件通过编译器得到目标文件(.o),可以同时对多个预处理文件、源文件处理,命令是gcc -c hello.c -o hello.o

③链接:得到的目标文件需要经过链接器与系统提供的启动代码链接起来才能正常运行;就是说将各个目标文件和库里的可执行文件链接起来,哪怕只有一个文件也需要与标准库进行链接(需要标准输出、输入等函数的执行文件)

  1. gcc命令用法

gcc

-o

确定输出文件的文件名

-E

得到预处理后的.i文件

-C

保留注释

-c

输出得到.o的目标文件(不链接库,但可以放到库里)

-S

对.c和.i处理,生成汇编文件.s

-g

生成调试版的可执行文件

-O

对代码进行优化编译,从哦、O0~O3四个等级,优化能力逐步提高,默认O1

-I+directory

告诉gcc去哪里找头文件(例:-I ../ 就是去父目录去找)

  1. 静态库与动态库的区别

程序库:包含通用函数的数据和二进制可执行文件(.o);通常将频繁使用的功能封装成函数,人后经过gcc编译得到可执行文件后(.o),放到库里,方便后续直接调用;注意主函数不能放到库里;又分为静态库与动态库;

静态库(以空间换时间)(格式:.a):是在执行程序之前就已经加入到执行代码中,成为执行文件的一部分来执行的;优点:程序运行快;缺点:会造成程序臃肿,难以升级(需要重新编译后放入库里);

动态库(以时间换空间)(格式:.so):是在执行程序启动是加载到执行代码中;优点:不会增加源程序的大小,且可以被多个程序使用,别称共享库,容易升级;缺点:加载时间长,造成程序运行等待;

  1. 静态库的创建

①gcc -c add.c //生成add.0可执行文件

②gcc -c sub.c //生成sub.o可执行文件

③... //生成多个可执行文件

④ar rcs libmath.a add.o sub.o ...(如果还有的话) //生成libmath.a的静态库,其中rc是指静态库不存在就创建该库文件,s是指更新库文件

⑤gcc main.c -o main -L. -libmath.a -I../ //-L是告诉库在当前目录(.),-I../是告诉gcc到父目录(../)去找新增的头文件,如果在当前目录则为-I./(少一个点)

⑥./main //执行程序

  1. 动态库的创建

①gcc -shared -fPIC -o libmath.so add.c sub.c ...(如果还有其他源文件的话) //一步到位,相当于静态库的1-4步骤

②gcc main.c ./libmath.so -o main -I../ //-I../是告诉gcc到父目录(../)去找新增的头文件,如果在当前目录则为-I./(少一个点)

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
RISC-V GCC编译器手册是一本详细介绍如何使用RISC-V架构下GCC编译器的参考手册。GCC是一种自由软件,被广泛用于编译各种编程语言,包括C、C++和Fortran等。RISC-V是一种基于精简指令集计算机(RISC)原理的开源处理器架构。 手册中首先介绍了RISC-V工具链的安装和配置,包括如何获取GCC编译器和相关的工具。它详细说明了如何在不同的操作系统上进行编译器工具链的安装过程,并提供了一些常见问题的解答。 接下来,手册详细介绍了GCC编译器的各种选项和参数的用法。这些选项和参数可以用于控制编译器的行为,如优化级别、调试选项、错误处理、输出文件格式等。手册还提供了一些示例和说明,以帮助用户理解和使用这些选项。 此外,手册还涵盖了GCC编译器针对RISC-V架构的特定优化策略。这些优化策略可以提高代码的性能和效率,包括指令调度、寄存器分配、循环优化等。手册中还解释了如何使用这些优化选项,并给出了一些示例来说明其作用。 最后,手册还包括对GCC编译器的一些扩展功能的介绍,如内联汇编、向量指令集扩展、浮点运算支持等。这些扩展功能使得GCC编译器能够更好地支持RISC-V架构下特定的编程需求。 总之,RISC-V GCC编译器手册是一本详细、全面的参考手册,为用户提供了使用GCC编译器进行RISC-V架构开发的必备指南。无论是初学者还是有经验的开发者,都可以通过这本手册深入了解和掌握GCC编译器的用法,从而更加高效地进行RISC-V架构下的软件开发。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值