前言
如何使用树莓派编译C语言代码呢?

21年暑假的时候,学习编程的劲头高涨,然后冲动消费买了个树莓派4B……结果压根不会用,吃灰了半年
不过现在已经学完了C语言,也接触了一丢丢Linux系统下的gcc指令,可以尝试用它来编写C语言代码了!
1.创建test.c文件
首先我们需要在一个文件夹里创建一个test.c 文件

点击test.c文件后,树莓派会用自带的Geany编辑器 打开它
然后我们可以往里写入C语言最经典的helloword代码
#include <stdio.h>
int main(void)
{
printf("hello wordl!\n");
return 0;
}
2.编译运行该文件
保存文件后,打开顶部的命令行

输入以下代码
注意cd后需要空格,填写的是刚刚创建的test1.c文件的路径
cd /home/pi/code
填写完毕后,可以看到命令行前面多出了一个文件地址

这代表目前我们操作的是code文件夹里面的内容
输入ls ,可以看到当下文件夹里的文件

输入以下指令,可以生成一个可执行文件
gcc test1.c -o test1

最后输入以下指令,可以运行该文件!
./test1
可以看到,程序已经成功运行了!

3.编译并链接两个源文件
接下来我们再尝试一个相对来说更复杂的代码
分开两个源文件,一个是test.c ,包含了main函数
另外一个是Add.c ,包含了Add函数
因为是在不同的源文件里面,我们需要用extern 来声明外部函数
#include <stdio.h>
extern int Add(int x,int y);
int main(void)
{
int a=3;
int b=5;
printf("%d",Add(a,b);
return 0;
}

接下来我们使用-c 指令来生成.o 目标文件
在vs下,目标文件的后缀是.obj
.i 文件为预编译文件
可以看到,我的代码里面extern 写错了(很是尴尬),编译器报了警告
更改了以后就编译成功了
这一步是把C语言代码转换成机器认识的二进制指令

然后输入以下指令,链接这两个文件,生成可执行文件test
gcc test1.c Add.c -o test

最后还是使用./test 指令来运行可执行文件
可以看到我们的结果已经输出了!
结语
第一次尝试用linux的gcc指令来编译C语言代码,还有点小激动
吃灰的树莓派终于有用了!😍
如果有写的不对的地方,还请大佬无情指出!
|