提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
文章目录
前言
本文是为了熟悉Linux系统的基本操作,并用gcc和Makefile命令行方式编译主程序。
一 gcc是什么?
Linux系统下的Gcc(GNU C Compiler)是GNU推出的功能强大、性能优越的多平台编译器,是GNU的代表作品之一。
gcc是可以在多种硬体平台上编译出可执行程序的超级编译器,其执行效率与一般的编译器相比平均效率要高20%~30%。
Gcc编译器能将C、C++语言源程序、汇程式化序和目标程序编译、连接成可执行文件,如果没有给出可执行文件的名字,gcc将生成一个名为a.out的文件。
二 gcc基本用法
命令 | 作用 |
---|---|
-o output_filename | 确定可执行文件的名称为output_filename。如果不给出这个选项,gcc就给出默认的可执行文件 a.out 。 |
-c | 只编译,不连接成为可执行文件,编译器只是由输入的.c等源代码文件生成.o为后缀的目标文件。 |
-g | 产生调试工具 (GNU 的 gdb) 所必要的符号信息,要想对编译出的程序进行调试,就必须加入这个选项。 |
-O | 对程序进行优化编译、链接,采用这个选项,整个源代码会在编译、连接过程中进行优化处理 |
-Idirname | 将 dirname 所指出的目录加入到程序 头文件目录列表中,是在预编译过程中使用的参数。 |
-O2 | 比 -O 更好的优化编译、链接。当然整个编译链接过程会更慢。 |
三 Ubuntu下使用gcc编译C程序
1.下载gcc
sudo apt-get install gcc //从开源库里下载开源软件
2.用vim分别编写文件
vim mian.c
vim sub1.h
vim sub1.c
按i进入插入模式进行编写
按ESC进入命令模式输入:wq保存并退出文件
编写main.c
#include"sub1.h"
int main()
{
int x=2,y=15; //定义x和y变量
printf("%.2f\n",x2x(x,y)); //输出处理后的值,保留两位小数
return 0;
}
编写sub1.h
#ifndef __SUB1_H
#define __SUB1_H
#include<stdio.h>
float x2x(int a,int b); //计算b除以a的结果
#endif
编写sub1.c
#include "sub1.h"
float x2x(int a,int b)
{
float num;
num = (float)b/a;
return num;
}
生成的相关文件
3.用gcc编译
gcc -c sub1.c //将sub1.c程序转换为目标文件sub1.o
gcc main1.c sub1.o -o main2 //编译main1.c文件为可执行文件main
./main2 //执行编译生成的main2程序,得到答案7.5
得到可执行文件
执行编译生成的main2程序,得到答案7.5
四 wiodow下运行main.c程序
工具: QT
例图:
对比gcc需要一步步编译形成可执行文件,在window平台下用QT编译执行要方便点。
五 用Makefile编译程序
1.什么是Makefile
makefile其实就是一个文档,里面定义了一系列的规则指定哪些文件需要先编译,哪些文件需要后编译,哪些文件需要重新编译,它记录了原始码如何编译的详细信息! makefile一旦写好,只需要一个make命令,整个工程完全自动编译,极大的提高了软件开发的效率。
2.如何用Makefile编译程序
1.首先要下载make
sudo apt-get install make
2.创建文件makefile
touch makefile
3.编写makefile
vim makefile
内容
4.用make命令执行
输入make命令后自动生成main可执行文件
5.执行mian程序
总结
我们可以发现在Ubuntu下,gcc对文件的操作是单个进行的,当有多个文件时我们使用Makefile会更加方便点,而在window下编程比前两种更加方便。