1 交叉编译器

lzy@lzy-virtual-machine:~/imx6ull-sdk/ToolChain$ ls -ltr
总用量 16
drwxr-xr-x 12 lzy lzy 4096 10月 14 20:22 arm-buildroot-linux-gnueabihf_sdk-buildroot
drwxr-xr-x  9 lzy lzy 4096 10月 14 20:23 gcc-linaro-6.2.1-2016.11-x86_64_arm-linux-gnueabihf
drwxr-xr-x  8 lzy lzy 4096 2月   1  2017 gcc-linaro-4.9.4-2017.01-x86_64_arm-linux-gnueabihf

韦东山推荐使用的交叉编译器,更全一些,但是没有测试是否可以编译内核
arm-buildroot-linux-gnueabihf_sdk-buildroot

韦东山另外一款交叉编译器不推荐使用
gcc-linaro-6.2.1-2016.11-x86_64_arm-linux-gnueabihf

正点原子官方推荐的交叉编译器,库少一些,可编译内核
gcc-linaro-4.9.4-2017.01-x86_64_arm-linux-gnueabihf

1.1 环境变量存放

关于环境变量设置,存放在~/.bashrc。保存结束后,运行source ~/.bashrc

export ARCH=armexport CC=arm-linux-gnueabihf-gcc
export CROSS_COMPILE=arm-linux-gnueabihf-
export PATH=$PATH:/home/lzy/imx6ull-sdk/ToolChain/gcc-linaro-4.9.4-2017.01-x86_64_arm-linux-gnueabihf/bin# 下面三个是arm-buildroot-linux-gnueabihf
#export CC=arm-buildroot-linux-gnueabihf-gcc
#export CROSS_COMPILE=arm-buildroot-linux-gnueabihf-
#export PATH=$PATH:/home/lzy/imx6ull-sdk/ToolChain/arm-buildroot-linux-gnueabihf_sdk-buildroot/bin

1.2 查看交叉工具链include和lib目录

执行下面命令来确定目录,它会列出头文件目录、库目录(LIBRARY_PATH)

echo 'main(){}'| arm-linux-gnueabihf-gcc -E -v -

1.3 添加一些其他的库,比如交叉编译 freetype

具体参考嵌入式Linux应用开发完全手册V4.0_韦东山全系列视频文档-IMX6ULL开发板.pdf(P379)
从上一节中,大致选取交叉编译器头文件和依赖库可以放在:

/home/lzy/imx6ull-sdk/ToolChain/gcc-linaro-4.9.4-2017.01-x86_64_arm-linux-gnueabihf/arm-linux-gnueabihf/libc/usr/include
/home/lzy/imx6ull-sdk/ToolChain/gcc-linaro-4.9.4-2017.01-x86_64_arm-linux-gnueabihf/arm-linux-gnueabihf/libc/usr/lib

编译时会用到的命令
1、arm-linux-gnueabihf交叉编译器

cp include/* -rf /home/lzy/imx6ull-sdk/ToolChain/gcc-linaro-4.9.4-2017.01-x86_64_arm-linux-gnueabihf/arm-linux-gnueabihf/libc/usr/include
cp lib/* -rfd /home/lzy/imx6ull-sdk/ToolChain/gcc-linaro-4.9.4-2017.01-x86_64_arm-linux-gnueabihf/arm-linux-gnueabihf/libc/usr/lib

2、arm-buildroot-linux-gnueabihf交叉编译器

cp include/* -rf /home/lzy/imx6ull-sdk/ToolChain/arm-buildroot-linux-gnueabihf_sdk-buildroot/arm-buildroot-linux-gnueabihf/sysroot/usr/include/
cp lib/* -rfd /home/lzy/imx6ull-sdk/ToolChain/arm-buildroot-linux-gnueabihf_sdk-buildroot/arm-buildroot-linux-gnueabihf/sysroot/usr/lib

3、编译命令

#zlib编译
export CC=arm-linux-gnueabihf-gcc
./configure   --prefix=/home/lzy/imx6ull-sdk/ToolChain/gcc-linaro-4.9.4-2017.01-x86_64_arm-linux-gnueabihf/arm-linux-gnueabihf/libc/usr/
make && make install#libpng编译
./configure CC=arm-linux-gnueabihf-gcc --host=arm-linux-gnueabihf --prefix=/home/lzy/imx6ull-sdk/ToolChain/gcc-linaro-4.9.4-2017.01-x86_64_arm-linux-gnueabihf/arm-linux-gnueabihf/libc/usr/
make && make install#freetype 编译./configure CC=arm-linux-gnueabihf-gcc --host=arm-linux-gnueabihf CFLAGS=-I/home/lzy/imx6ull-sdk/ToolChain/gcc-linaro-4.9.4-2017.01-x86_64_arm-linux-gnueabihf/arm-linux-gnueabihf/libc/usr/include LDFLAGS=-L/home/lzy/imx6ull-sdk/ToolChain/gcc-linaro-4.9.4-2017.01-x86_64_arm-linux-gnueabihf/arm-linux-gnueabihf/libc/usr/lib --prefix=/home/lzy/imx6ull-sdk/ToolChain/gcc-linaro-4.9.4-2017.01-x86_64_arm-linux-gnueabihf/arm-linux-gnueabihf/libc/usr
make && make install

1.4 /usr/local/lib/libz.so: file not recognized: File format not recognized

在交叉编译freetype提示这个错误,经过查阅如下:
/usr/local/lib/libz.so: file not recognized: File format not recognized报错的原因大概就是/usr/local/lib/libz.so是x86的64位架构的,不能用在板子上,所以需要从新编译zlib。

解决办法很简单:

# 在这两个文件下删除相关即可,但是不要乱删
sudo rm -rf /usr/local/lib/libz.* pkgconfig/
sudo rm -rf /usr/local/include/*# 切换到交叉编译器的include和lib库里,把原来那种错误方法编译出来的文件删除
# 如果记不得直接删除整个,重新解压即可。
# 也可使用 ls -ltr 查看最近放到这里的文件,选择进行删除
rm -rf gcc-linaro-4.9.4-2017.01-x86_64_arm-linux-gnueabihf/ # 删除freetype和所依赖的两个文件夹
rm -rf freetype-2.10.2/ libpng-1.6.37/ zlib-1.2.11/

2 下载源码

参考嵌入式Linux应用开发完全手册V4.0_韦东山全系列视频文档-IMX6ULL开发板(P139)

book@100ask:~$ git clone https://e.coding.net/codebug8/repo.git
book@100ask:~$ mkdir -p 100ask_imx6ull-sdk && cd 100ask_imx6ull-sdk
book@100ask:~/100ask_imx6ull-sdk$ ../repo/repo init -u \
https://gitee.com/weidongshan/manifests.git -b \
linux-sdk -m imx6ull/100ask_imx6ull_linux4.9.88_release.xml --no-repo-verify
book@100ask:~/100ask_imx6ull-sdk$ ../repo/repo sync -j4

第一行:下载repo
第二行:创建100ask_imx6ull-sdk,并进入100ask_imx6ull-sdk文件夹。
第三行:没看懂,大致意思是使用repo,讲本地与网址进行绑定?
第四行:同步下载源码

2.1 遇到的问题 /usr/bin/env: “python”: 没有那个文件或目录

在第三行运行时,出现这个错误,我想到是python环境变量的问题,但是具体怎么设置没有思路,在百问网有个解答。

老师给的思路是,有一个脚本没有执行,然后我通过P107下载Configuring_ubuntu.sh,命令为

book@100ask: ~ $ wget --no-check-certificate -O Configuring_ubuntu.sh \
https://weidongshan.coding.net/p/DevelopmentEnvConf/d/DevelopmentEnvConf/git/raw/master/Configuring_ubuntu.sh &&\
sudo chmod +x Configuring_ubuntu.sh &&\
sudo ./Configuring_ubuntu.sh


找到脚本了,理论上直接运行即可,但是我是41~20.04.2-Ubuntu,不可以直接运行,那就打开脚本去看具体操作了哪些。经过合理的推敲,最终锁定了在这部分区域,最上面一行命令为apt-get install python3.8 dosfstools mtools python3-setuptools python3-pip -y安装一些软件,其中比较在意是python3.8,下面紧接着两行,分别是sudo rm -f /usr/bin/pythonln -s /usr/bin/python3.8 /usr/bin/python,大致意思就是在/user/bin/下创建一个软链接python指向python3.8,下面都跟python没有太大关系,因此设置一下即可。

WDS-设置交叉编译器与下载源码相关推荐

  1. 华为正式发布方舟编译器,相关源码已开放下载;微软开源量子开发工具包 QDK;GitHub回应突然断供:也很无可奈何的样子……...

    关注并标星星CSDN云计算 极客头条:速递.最新.绝对有料.这里有企业新动.这里有业界要闻,打起十二分精神,紧跟fashion你可以的! 每周三次,打卡即read 更快.更全了解泛云圈精彩news g ...

  2. 编译器 llvm clang 源码转换示例

    编译器 llvm clang 源码转换示例 从git获取llvm项目的源码方式: git clone https://github.com/llvm/llvm-project.git 下载源码后,进入 ...

  3. 第2.02节 下载源码

    第2.02节 下载源码 最新版本的sendmail可以通过以下方式获得: http://www.sendmail.org/ 当你下载源码时,你必须从所列的源码中选择满足你的需求的一个.除了选择你想要的 ...

  4. idea maven项目下载源码及关联源码

    下载源码 关联源码 一般会自动关联上的,若需手动关联源码需要在下图处设置.

  5. 上传本地代码到github从github下载源码

    最近在玩github,下面简单介绍下githup的使用 将本地代码同步到github. 使用Git GUI同步  1,先下载git,然后安装.右键如图所示. 2,在github里新建一个 reposi ...

  6. 谷歌经典bert模型从下载源码到运行成功

    谷歌经典bert模型从下载源码到运行成功 近期,对谷歌经典bert模型进行了简单的学习,以官方模型代码为主要学习目标,目前已经成功完成预训练任务,结果如图: 下载源码 官方代码和与训练模型链接:htt ...

  7. [Linux运维基础]全家桶详解!Linux中RPM包、wget下载、YUM安装、tar包、zip等包管理方式区别与参数详解,附wget下载源码包编译安装方法

    文章目录 一.RPM.tar.gz 1.rpm包格式 2.rpm包管理 3.tar包管理参数 二.wget 1.wget参数 2.wget下载源码包后编译安装 三.YUM 1.YUM工作原理 2. Y ...

  8. OC/Swift 技术 下载文件(断点续传 AFN下载文件 Alamofire下载文件 原生下载)(源码)

    一直觉得自己写的不是技术,而是情怀,一个个的教程是自己这一路走来的痕迹.靠专业技能的成功是最具可复制性的,希望我的这条路能让你们少走弯路,希望我能帮你们抹去知识的蒙尘,希望我能帮你们理清知识的脉络,希 ...

  9. 安卓调用日历提醒,并实现闹钟提醒功能,在miui上测试通过,日历提醒闹钟设置失败解决(附源码,源码已更新)

    不想看教程的可以直接走这里的后门去下载源码(源码已更新),源码小米手机亲测通过,有问题可以私信我:源码下载https://download.csdn.net/download/Spy003/87418 ...

最新文章

  1. Python-高阶函数
  2. oracle数组元素所在key,oracle可变数组(VARRAY)
  3. 每天一道Java题[7]
  4. AppStore 上架注意事项及错误修改
  5. java web ssh启动运行程序_[javaweb开发SSH] myeclipse启动tomcat时的bug
  6. yuv格式转换是那个组织定义的_YUV格式
  7. tarjan求桥、割顶
  8. 光伏窗性能研究(3)——单层光伏窗节能性能研究
  9. html调用js里面的函数,html如何调用js函数
  10. FastQC评估测序数据的质量
  11. 微软云服务器怎么注销,如何关闭你的 Microsoft 帐户——注销微软账号
  12. Android 音乐播放器SD卡本地播放器实现
  13. MODBUS CRC16 工具类
  14. fastq转化成fasta格式
  15. hyperf使用curl产生的超时问题
  16. github语法使用
  17. PHP 自由职业,自由职业者:不止自由,更多自我
  18. a360desktop有用吗_a360 desktop
  19. 大学android移动开发笔记,基于Android的移动模拟练习系统的设计与实现
  20. ROS2机器人实验报告提示02➡沼泽⬅

热门文章

  1. Borland一路走好
  2. Kylin知识点总结
  3. lammps教程:以计算Fe晶格常数为例介绍jump命令使用
  4. 计算机科学与技术江苏分数线,南通大学计算机科学与技术专业2016年在江苏理科高考录取最低分数线...
  5. MySQL卸载不掉问题,MySQL Connector Net 8.0.1 1
  6. 横河电机成立Yokogawa Bio Frontier Inc.以推进生物质(Biomass)材料业务
  7. 了解聚类是什么。聚类方法:k-means、核聚类、层次聚类、谱聚类
  8. 9 Palindrome Number
  9. 十进制整数转为十六进制整数(C++实现)
  10. Java动态代理与CGLIB