物联网实训Day09-交叉编译工具链及编程

物联网实训Day09

交叉编译工具

  • 虚拟机中先下载好arm-linux-gcc-4.5.1.tar.gz文件,将文件解压到/usr/local目录下
    文件解压
  • 打开smb服务器,进入到/usr/local/arm工作目录下
    启动smb服务器,打开文件夹
  • 继续查看文件
    查看文件
  • 继续
    查看
  • 继续
    查看
  • 移除arm-gcc
    移除arm-gcc
  • 查看
    查看
  • 进入etc工作目录,配置文件及保存
    配置
  • 在上图输入gedit命令后,会打开配置文件,source命令使对配置文件的修改生效。修改profile的配置文件。
  • 在下图位置添加一句export PATH=$PATH:/user/local/arm/4.5.1/bin/
    修改profile配置文件
  • 查看:只对root用户的配置文件,gedit /root/.bashrc
    只对root用户的配置文件

编程

  • 创建文件夹test,打开这个文件夹,修改权限为所有。
  • 创建test.c文件,修改权限为可读可写但不可执行
  • 在文件系统中打开test.c,写入一段代码
#include <stdio.h>
#include <stdlib.h>

int main(void)
{
	printf("hello,china!\n");
}
  • 输入gcc test.c -o test
  • ./test即可执行,如下图所示,输出“hello,china!”

gcc语句

  • 使用touch语句创建 add.c sub.c div.c和mul.c文件并修改各文件内容
  • add.c
int add(int a,int b){
	return a + b;
}
  • sub.c
int sub(int a,int b){
	return a - b;
}
  • mul.c
int mul(int a,int b){
	return a * b;
}
  • div.c(注意这里的函数名为div1,div会报错)
int div1(int a,int b){
	return a / b;
}
  • test.c
#include <stdio.h>
#include <stdlib.h>

int main(void)
{
	int a = 15;
	int b = 3;
	printf("hello,china!\n");
	printf("a + b = %d \r\n",add(a,b));
	printf("a - b = %d \r\n",sub(a,b));
	printf("a * b = %d \r\n",mul(a,b));
	printf("a / b = %d \r\n",div1(a,b));
}
  • 修改并保存文件后,使用下图gcc语句进行编译,输入./test执行
    .c文件创建、编译、执行
  • 输出结果
    多个.c文件编译

makefile

  • Makefile 或 makefile: 告诉make维护一个大型程序,该做什么。
  • Makefile说明了组成程序的各模块间的相互关系及更新模块时必须进行的动作,make按照这些说明自动地维护这些模块。
  • makefile 带来的好处: “自动化编译”,一旦写好,只需要一个make 命令,整个工程完全自动编译,极大的提高了软件开发的效率
  • Makefile里主要包含了五个部分内容:显式规则、隐式规则、变量定义、文件指示和注释。
  • 在Makefile中的命令,必须要以[Tab]键开始
  • 执行make命令时,会对磁盘上的文件进行检查,如果目标文件的生成或被改动时的时间至少比它的一个依赖文件还旧的话,make就执行相应的命令,以更新目标文件。目标文件不一定是最后的可执行文件,可以是任何一个中间文件并可以作为其他目标文件的依赖文件。
  • makefile有多种写法,本例中makefile的一种写法:
    makefile
  • 修改好后编译执行:
    编译执行
  • 查看文件
  • 若没有修改相关文件,也没有执行make clean,则make后输出“‘test’ is up to date”。
  • make之后进行make clean。
    make clean
  • 如果有类似于make: *** No rule to make target,mul.c’, needed by test'. Stop.的报错,可以检查一下makefile文件有没有写错或者格式上多了一个空格或者开头使用空格而不是[Tab]键这种类似的格式问题。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

路灯谣

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值