发 帖  
原厂入驻New

[经验] 迅为IMX6ULL开发板Ubuntu下C编程入门(一)

5 天前  475
分享
0
本篇段俩部分3.1 Linux下编写第一个 C C 程序,3.2gcc 编译器
我们在 Windows 下使用 C 语言开发的时候,一般都会有支持 Windows 的开发工具,比如我们学习 51 单
片机或者 STM32,所使用的的 Keil 开发软件。此类开发工具一般都会集编辑、编译于一体,我们只需要编辑
好代码,电机开发工具的编译按钮,就可以自动为我们编译出可执行的二进制文件了。Ubuntu 下的 C 语言
开发与 Windows 下的 C 语言开发是不一样的,并没有图形界面的开发工具,而且编辑和编译是分开的。我
们需要使用文本编辑软件先编写代码,然后使用编译工具(GCC)来编译,最终生成可执行的二进制文件。
如果我们的工程中有多个源文件,在编译的时候我们通常会通过 Makefile 文件来管理整个工程的源文件。
本章我们来学习如何在 Ubuntu 下进行 C 语言成的编辑,GCC 编译,Makefile 文件的使用。通过本章学习我
们可以掌握 Linux 下的 C 语言开发基本方法,为后面的学习做好准备。
3.1Linux下编写第一个 C C 程序 程序
本章节开始的部分我们介绍了 Ubuntu 下 C 程序开发分成两部分:编辑和编译。Ubuntu 下有很多种文本
编辑的工具,如 vim、Gedit、Emacs,这里我们使用前面章节介绍的 vim 文本编辑工具来编辑 C 程序。相信
大家在学习 C 语言的时候都是从“Hello World”这个程序开始的吧,下面我们通过这个程序,来学习下 Linux
下 C 程序开发的流程。

3.1.1  代码编写
首先我们在用户根目录下建立文件夹“work”,用于保存所有 C 语言的程序,运行结果如下图所示:
1.jpg
然后进入创建的文件夹 work,为了方便管理,我们每个例程都创建单独的文件夹,首先我们创建文件
夹“hello_world”来保存我们的第一个 C 程序,如下图所示:
2.jpg
然后进入上图中的 hello_world 文件夹,使用 vi 命令新建文件“main.c”,然后在里面输入下面的代
码:
#include <stdio.h>
int mian(int argc, char *argv[])
{
printf("Hello World!\n");

return 0;
}
编写完以后保存并退出 vim 编辑器,然后可以使用 cat 命令查看代码是否保存成功,如下图所示:
3.jpg
通过上图可以看到代码已经编辑完成了。
3.1.2  代码编译
Ubuntu 下使用 gcc 编译器来编译 C 程序,我们在安装 Ubuntu 系统的时候,gcc 编译器 morning 安装好
了,我们可以在终端输入“gcc -v”来查看下 gcc 的版本,如下图所示:
4.jpg
通过上图可以看到 gcc 的版本信息,说明我们的 Ubuntu 上已经安装了 gcc 编译器了,下面我们来看看
怎么通过 gcc 编译我们的第一个 C 程序,我们在终端输入“gcc main.c -o main”,然后回车,会生成 main 文
件,如下图所示:
5.jpg
在上面的“gcc main.c -o main”这个命令里面“-o“用来指定编译生成的文件名字,我们指定的是 main,
所以在图 3.1.2.2 中可以看到生成了文件“main”,如果我们想生成其它的文件名字,我们只需要修改“-o”
后面的 main(修改成您希望生成的文件名字)。经过前面的步骤已经生成了可执行文件 main,现在我们演
示下在终端如何运行一个可行性的程序,我们直接在终端当前目录下(可执行文件所在的目录下)输入
“./main”,然后回车,就可以运行可执行文件 main 了,运行结果如下图所示:
6.jpg
在上图中运行的命令“./main”,其中的“./”代表当前目录下。我们可以看到在终端打印出了 Hello
World!。至此,Linux 下的 C 语言编辑和编译的一整套流程我们就介绍完了。
3.2 gcc 编译器 编译器
3.2.1 gcc  命令分析
在 3.1 节我们已经使用 gcc 编译了 Linux 下的第一个 C 程序,gcc 命令的格式如下:
gcc [参数] [文件名]
主要参数说明如下:
-c 编译、汇编到目标代码(.o),不链接成可执行文件
-g 生成调试信息
-o 编译完成后生成的文件名,如果不使用该选项,默认生成 a.out 文件
-O 对程序进行优化编译,产生的可执行文件执行效率高
-w 不生成任何警告
-S 仅编译到汇编语言,不进行汇编和链接

3.2.2  编译警告错误处理
我们是 Windows 下使用 Keil 或者其他开发工具,在编译的时候,如果程序有错误,开发工具会提示出
具体的错误信息,可以很方便的定位到问题点,快速的修改出现的问题,gcc 同样也有类似的功能,下面我
们来看下 gcc 的错误提示功能,首先我们在 work 目录下建立文件夹“test2”,然后使用 vim 在 test2 文件
夹创建 main.c 文件夹,在 main.c 文件输入如下代码:
#include <stdio.h>
int main(int argc, char *argv[])
{
int a;
a = 1
printf("a=\n", a);
return 0;
}
上面代码有两处错误:
第 7 行 最后缺少“;”
第 9 行 printf 语法不对,应该为:printf("a =%d\n", a);
我们使用 gcc 编译 main.c,可以看到 gcc 会提示错误信息,如下图所示:
7.jpg
从上图中可以看到在 mian.c 文件的第 9 行 printf 前面缺少“;”我们在第 7 行“a = 1”后面加上“;”,
然后继续编译,如下图所示:
8.jpg
8.jpg (31.69 KB, 下载次数: 0)
下载附件  保存到相册
2020-5-22 12:01 上传




从上图可以看出编译提示语法格式不对,我们把第 9 行修改成“printf("a=%d\n", a);”,然后在继续编译,如下图所示:
9.jpg
我们可以看到这次 gcc 编译通过,最终生成了文件 main。我们在终端执行 main,运行结果如下图所示:
10.jpg
从上图可以看到运行的结果和我们涉及到额结果一致,通过本例程可以看到 gcc 编译器不仅可以检测出
程序的错误,而且还会标记处错误在哪个文件的哪一行,很方便的帮助我们去修改问题。
更多内容关注:
11.jpg

评论

高级模式
您需要登录后才可以回帖 登录 | 注册

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容图片侵权或者其他问题,请联系本站作侵删。 侵权投诉
发经验
关闭

站长推荐 上一条 /7 下一条

快速回复 返回顶部 返回列表