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=arm
export 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
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、编译命令
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
./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
./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/*
rm -rf gcc-linaro-4.9.4-2017.01-x86_64_arm-linux-gnueabihf/
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/python 与ln -s /usr/bin/python3.8 /usr/bin/python ,大致意思就是在/user/bin/下创建一个软链接python指向python3.8,下面都跟python没有太大关系,因此设置一下即可。
|