GCC是Linux 下常用的C/C++编译器,支持多平台开发。编译过程包括预处理、编译、链接和汇编。常用命令如gcc test.c -o test生成可执行文件,多文件编译需先生成.o文件再链接,选项如-c、-s、-E等控制编译阶段。虚拟机共享文件夹方便Windows与Liunx间文件共享。
什么是gcc
GCC编译器是Linux系统下最常用的C/C++编译器,GCC编译器通常以gcc命令的形式再终端(Shell)中使用,它有很多选项,这是我们要学习的。
gcc能够再当前CPU平台上为多种不同体系结构的硬件平台开发软件,因此适合在嵌入式领域开发编译。
gcc的编译过程(作用)
预处理
gcc首先对源代码文件中的文件包含(include)、预编译语句(如宏定义define等)进行分析处理。
编译
用GCC编译C/C++代码适,它会试着用最少的时间完成编译并且编译后的代码易于调试。易于调试意味着编译后的代码与源代码有同样的执行顺序,编译后的代码没有经过优化。
连接(链接)
当所有的目标文件都生成之后,gcc就调用ld(链接器)来完成最后的关键工作,这个阶段就是连接。在连接阶段,所有的目标文件被安排在可执行程序中的恰当的位置,同时,该程序所调用的库函数也从各自所在的档案库中连到合适的地方。
汇编
汇编过程是针对汇编语言的步骤,调用as进行工作,一般来讲,.s为后缀的汇编语言源代码文件,经过预编译和汇编之后都生成以.o为后缀的目标文件。
gcc的使用
安装命令(有些系统会默认安装):sudo apt install gcc
单个文件生成可执行文件命令:gcc text.c -o text.out
• o选项可以指定生成文件的名称和类型,如果不指定,则直接生成a.out
多文件生成可执行文件
• gcc -c add.c -o add.o
• gcc -c suntraction.c -o subtraction.o
• gcc -c main.c -o main.o
• gcc main.o add.o subtrction.o -o test.out
常用命令
常用指令
选项 含义
-c 把预处理、编译、汇编都做了,但是不链接(.o)
-S 只编译不汇编,生成汇编代码
-E 只进行预编译,不做其他处理
-g 在可执行程序中包含标准调试信息
-o 将file文件指定为输出文件
-v 将打印编译器内部编译各过程的命令行信息和编译器的版本
-l 指定头文件目录
-L 指定链接时库文件目录
使用虚拟机的共享文件夹
我们在Windows下写代码,然后到Linux下编译,是一种常见的编程方式
流程
• 在Windows上创建文件夹
• 设置虚拟机共享
• linux上创建文件夹 sudo mkdir -p/mnt/hgfs/share
• 关联两个系统下的文件夹(挂载) sudo mount -t vboxsf share /mnt/hgfs/share
• 查看关联是否成功 ls