实习日记(5-8)交叉编译

8 篇文章 0 订阅

小记

笔记

fscanf跟fgets的区别

fscanf 位于头文件<stdio.h>中,函数原型为 int fscanf(FILE * stream, const char * format, [argument…]); 其功能为根据数据格式(format)从输入流(stream)中读入数据(存储到argument);与fgets的差别在于:fscanf遇到空格和换行时结束,注意空格时也结束,fgets遇到空格不结束

这里有一篇讲使用cJSON的博客,过程还挺详细的:
https://www.jianshu.com/p/9aa57961b17b

我在使用的过程中碰见一些小问题,正在解决:
先是报这个错误:

hello.c:(.text+0x1a): undefined reference to `cJSON_Parse'

后来发现需要在编译的时候加入 -lcjson

gcc hello.c -lcjson -o hello

加入后又报另外的错误

cannot find -lcjson

这里有一篇讲解决办法的博客:
https://blog.csdn.net/mark20170902/article/details/51671477
这个先放一放

先搞一下交叉编译

交叉编译
-L -I(大写i) -l

gcc -o hello hello.c -I /home/hello/include -L /home/hello/lib -lworld

参数说明:

-I /home/hello/include表示将/home/hello/include目录作为第一个寻找头文件的目录,寻找的顺序是:/home/hello/include–>/usr/include–>/usr/local/include

-L /home/hello/lib表示将/home/hello/lib目录作为第一个寻找库文件的目录,寻找的顺序是:/home/hello/lib–>/lib–>/usr/lib–>/usr/local/lib

-lworld表示在上面的lib的路径中寻找libworld.so动态库文件

参考自:http://blog.csdn.net/jiafu1115/article/details/8842240

我先实现一个最基本的Demo,把这个交叉编译的流程走一下。通过arm-linux-gcc 编译一个 可执行文件,然后移植到设备上跑起来。

开搞

解释一下交叉编译:
交叉编译就是为了解决我们在嵌入式设备上不方便直接编程的一种技术手段,这里我主要是用到了 在Linux上编译生成Arm上的可执行文件,再通过xmanager移植到arm上。
这里有一篇详细的博客,介绍交叉编译:
https://www.cnblogs.com/coolYuan/p/9037660.html

先下载工具链:arm-linux-gcc

(落地成功)

我在这稍微梳理一下,上截图

  • 将下载好的arm-linux-gcc-4.3.2.tgz压缩包放到 tmp 文件夹下(注意文件路径,从最底层开始的,而不是home层)
    在这里插入图片描述
    然后解压
sudo tar -zxvf arm-linux-gcc-4.3.2... .tgz -C /usr/local/arm/

在etc / environment 的 path 中添加

:usr/local/arm/4.5.1/bin/

添加后入下图所示:
在这里插入图片描述
到此就应该可以用了,测试一下:

arm-linux-gcc -v

测试结果如图:
在这里插入图片描述
落地

后期:我发现落地失败了,这个打印的版本号是4.6.2,我现阶段在整合cJSON的时候,使用arm-linux-gcc编译失败,原因目前认为是32位跟64位不匹配,待解决。

在移植到设备上后又碰到麻烦了,提示没有权限执行
在这里插入图片描述
待解决(落地)
解决办法:
在xftp中的可执行文件下右键选择图示选项:
在这里插入图片描述
勾选权限:
在这里插入图片描述
可执行:
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值