找回密码
 注册
关于网站域名变更的通知
查看: 324|回复: 1
打印 上一主题 下一主题

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

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2020-5-22 13:39 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式

EDA365欢迎您登录!

您需要 登录 才可以下载或查看,没有帐号?注册

x
本帖最后由 alexwang 于 2020-5-22 17:42 编辑
% |9 |. |% ?' ?- D2 f+ ]* [( V, u1 O5 @* E! @/ E* g, c' k- o
本篇段俩部分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.1 Linux  下编写第一个 C C 程序 程序
本章节开始的部分我们介绍了 Ubuntu 下 C 程序开发分成两部分:编辑和编译。Ubuntu 下有很多种文本编辑的工具,如 vim、Gedit、Emacs,这里我们使用前面章节介绍的 vim 文本编辑工具来编辑 C 程序。相信大家在学习 C 语言的时候都是从“Hello World”这个程序开始的吧,下面我们通过这个程序,来学习下 Linux下 C 程序开发的流程。
3.1.1  代码编写
首先我们在用户根目录下建立文件夹“work”,用于保存所有 C 语言的程序,运行结果如下图所示:
9 G: f5 f# t7 }% W
然后进入创建的文件夹 work,为了方便管理,我们每个例程都创建单独的文件夹,首先我们创建文件夹“hello_world”来保存我们的第一个 C 程序,如下图所示:

0 B" x- G( u' G" G+ {
然后进入上图中的 hello_world 文件夹,使用 vi 命令新建文件“main.c”,然后在里面输入下面的代码:
#include
int mian(int argc, char *argv[])
{
printf("Hello World!\n");
return 0;
}
编写完以后保存并退出 vim 编辑器,然后可以使用 cat 命令查看代码是否保存成功,如下图所示:

* S' G; t* N: x  W
通过上图可以看到代码已经编辑完成了。
3.1.2  代码编译
Ubuntu 下使用 gcc 编译器来编译 C 程序,我们在安装 Ubuntu 系统的时候,gcc 编译器 morning 安装好了,我们可以在终端输入“gcc -v”来查看下 gcc 的版本,如下图所示:
+ C9 u! c( C( p% c/ w' I3 D
通过上图可以看到 gcc 的版本信息,说明我们的 Ubuntu 上已经安装了 gcc 编译器了,下面我们来看看怎么通过 gcc 编译我们的第一个 C 程序,我们在终端输入“gcc main.c -o main”,然后回车,会生成 main 文件,如下图所示:
. h. a- I$ Y4 ?9 f* I
在上面的“gcc main.c -o main”这个命令里面“-o“用来指定编译生成的文件名字,我们指定的是 main,所以在图 3.1.2.2 中可以看到生成了文件“main”,如果我们想生成其它的文件名字,我们只需要修改“-o”后面的 main(修改成您希望生成的文件名字)。经过前面的步骤已经生成了可执行文件 main,现在我们演示下在终端如何运行一个可行性的程序,我们直接在终端当前目录下(可执行文件所在的目录下)输入“./main”,然后回车,就可以运行可执行文件 main 了,运行结果如下图所示:
" G5 F: B( E  W9 Y  A, ]
在上图中运行的命令“./main”,其中的“./”代表当前目录下。我们可以看到在终端打印出了 HelloWorld!。至此,Linux 下的 C 语言编辑和编译的一整套流程我们就介绍完了。
3.2 c gcc 编译器 编译器
3.2.1 gcc  命令分析
在 3.1 节我们已经使用 gcc 编译了 Linux 下的第一个 C 程序,gcc 命令的格式如下:
gcc [参数] [文件名]
主要参数说明如下:
-c 编译、汇编到目标代码(.o),不链接成可执行文件
-g 生成调试信息
-o 编译完成后生成的文件名,如果不使用该选项,默认生成 a.out 文件
-O 对程序进行优化编译,产生的可执行文件执行效率高
-w 不生成任何警告
-S 仅编译到汇编语言,不进行汇编和链接
1 V/ v+ q" o* p( m4 c7 @7 q
3.2.2  编译警告错误处理
我们是 Windows 下使用 Keil 或者其他开发工具,在编译的时候,如果程序有错误,开发工具会提示出具体的错误信息,可以很方便的定位到问题点,快速的修改出现的问题,gcc 同样也有类似的功能,下面我们来看下 gcc 的错误提示功能,首先我们在 work 目录下建立文件夹“test2”,然后使用 vim 在 test2 文件夹创建 main.c 文件夹,在 main.c 文件输入如下代码:
#include
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 会提示错误信息,如下图所示:

0 k) K5 E* l' ~/ c# v
从上图中可以看到在 mian.c 文件的第 9 行 printf 前面缺少“;”我们在第 7 行“a = 1”后面加上“;”,然后继续编译,如下图所示:
1 S4 m& H, a+ l
从上图可以看出编译提示语法格式不对,我们把第 9 行修改成“printf("a=%d\n", a);”,然后在继续编译,如下图所示:

- k7 m, N, p  @4 T# P( `- g
我们可以看到这次 gcc 编译通过,最终生成了文件 main。我们在终端执行 main,运行结果如下图所示:
+ K6 q; N6 G" g4 K3 l. w# U
从上图可以看到运行的结果和我们涉及到额结果一致,通过本例程可以看到 gcc 编译器不仅可以检测出
' O+ A/ L1 c! |+ m% B% c程序的错误,而且还会标记处错误在哪个文件的哪一行,很方便的帮助我们去修改问题。
9 m* L5 j  D, R8 G  e8 ?" d

' w4 E: i4 _& b* o5 H& C( `

该用户从未签到

2#
发表于 2020-5-22 19:57 | 只看该作者
                                          
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

推荐内容上一条 /1 下一条

EDA365公众号

关于我们|手机版|EDA365电子论坛网 ( 粤ICP备18020198号-1 )

GMT+8, 2025-11-26 05:49 , Processed in 0.156250 second(s), 26 queries , Gzip On.

深圳市墨知创新科技有限公司

地址:深圳市南山区科技生态园2栋A座805 电话:19926409050

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