依据《MYD-Y6ULX_Linux软件开发指南.pdf》第二章,先下载光盘资料,下载地址为:http://down.myir-tech.com/MYD-Y6ULX/,我下载的是用百度网盘:
下载后:
在虚拟上新建/MYD-Y6ULX-devel目录,并把下载的资料拷到目录下面:
03_Tools/Tools_chain/目录下,安装SDK:
myir@myir-O-E-M:/home/hjx/sdk$ sudo ./fsl-imx-fb-glibc-x86_64-myir-image-full- cortexa7t2hf-neon-myd-y6ull14x14-toolchain-5.10-gatesgarth.sh
NXP i.MX Release Distro SDK installer version 5.10-gatesgarth ============================================================= Enter target directory for SDK (default: /opt/fsl-imx-fb/5.10-gatesgarth): /opt/test5.10
You are about to install the SDK to "/opt/test5.10". Proceed [Y/n]? y
developer@EASY-EAI-Develop:~/MYD-Y6ULX-devel/03_Tools/Tools_chain$ sudo ./fsl-imx-fb-glibc-x86_64-myir-image-full-cortexa7t2hf-neon-myd-y6ull14x14-toolchain-5.10-gatesgarth.sh
[sudo] developer 的密码:
NXP i.MX Release Distro SDK installer version 5.10-gatesgarth
=============================================================
Enter target directory for SDK (default: /opt/fsl-imx-fb/5.10-gatesgarth): /opt/test.5.10
You are about to install the SDK to "/opt/test.5.10". Proceed [Y/n]? y
Extracting SDK.............................................................................................................................................................................................................................................................................................................................................................................................................done
Setting it up...done
SDK has been successfully set up and is ready to be used.
Each time you wish to use the SDK in a new shell session, you need to source the environment setup script e.g.
$ . /opt/test.5.10/environment-setup-cortexa7t2hf-neon-poky-linux-gnueabi
先加载,然后验证一下是否成功:
developer@EASY-EAI-Develop:~/MYD-Y6ULX-devel/03_Tools/Tools_chain$ source /opt/test.5.10/environment-setup-cortexa7t2hf-neon-poky-linux-gnueabi
developer@EASY-EAI-Develop:~/MYD-Y6ULX-devel/03_Tools/Tools_chain$ $CC -v
Using built-in specs.
COLLECT_GCC=arm-poky-linux-gnueabi-gcc
COLLECT_LTO_WRAPPER=/opt/test.5.10/sysroots/x86_64-pokysdk-linux/usr/libexec/arm-poky-linux-gnueabi/gcc/arm-poky-linux-gnueabi/10.2.0/lto-wrapper
Target: arm-poky-linux-gnueabi
Configured with: ../../../../../../work-shared/gcc-10.2.0-r0/gcc-10.2.0/configure --build=x86_64-linux --host=x86_64-pokysdk-linux --target=arm-poky-linux-gnueabi --prefix=/opt/fsl-imx-fb/5.10-gatesgarth/sysroots/x86_64-pokysdk-linux/usr --exec_prefix=/opt/fsl-imx-fb/5.10-gatesgarth/sysroots/x86_64-pokysdk-linux/usr --bindir=/opt/fsl-imx-fb/5.10-gatesgarth/sysroots/x86_64-pokysdk-linux/usr/bin/arm-poky-linux-gnueabi --sbindir=/opt/fsl-imx-fb/5.10-gatesgarth/sysroots/x86_64-pokysdk-linux/usr/bin/arm-poky-linux-gnueabi --libexecdir=/opt/fsl-imx-fb/5.10-gatesgarth/sysroots/x86_64-pokysdk-linux/usr/libexec/arm-poky-linux-gnueabi --datadir=/opt/fsl-imx-fb/5.10-gatesgarth/sysroots/x86_64-pokysdk-linux/usr/share --sysconfdir=/opt/fsl-imx-fb/5.10-gatesgarth/sysroots/x86_64-pokysdk-linux/etc --sharedstatedir=/opt/fsl-imx-fb/5.10-gatesgarth/sysroots/x86_64-pokysdk-linux/com --localstatedir=/opt/fsl-imx-fb/5.10-gatesgarth/sysroots/x86_64-pokysdk-linux/var --libdir=/opt/fsl-imx-fb/5.10-gatesgarth/sysroots/x86_64-pokysdk-linux/usr/lib/arm-poky-linux-gnueabi --includedir=/opt/fsl-imx-fb/5.10-gatesgarth/sysroots/x86_64-pokysdk-linux/usr/include --oldincludedir=/opt/fsl-imx-fb/5.10-gatesgarth/sysroots/x86_64-pokysdk-linux/usr/include --infodir=/opt/fsl-imx-fb/5.10-gatesgarth/sysroots/x86_64-pokysdk-linux/usr/share/info --mandir=/opt/fsl-imx-fb/5.10-gatesgarth/sysroots/x86_64-pokysdk-linux/usr/share/man --disable-silent-rules --disable-dependency-tracking --with-libtool-sysroot=/home/hjx/6ULX/6ul-yocto/new-yocto/yocto/imx6ulx-yocto/build_imx6ull/tmp/work/x86_64-nativesdk-pokysdk-linux/gcc-cross-canadian-arm/10.2.0-r0/recipe-sysroot --with-gnu-ld --enable-shared --enable-languages=c,c++ --enable-threads=posix --enable-multilib --enable-default-pie --enable-c99 --enable-long-long --enable-symvers=gnu --enable-libstdcxx-pch --program-prefix=arm-poky-linux-gnueabi- --without-local-prefix --disable-install-libiberty --enable-lto --disable-libssp --enable-libitm --disable-bootstrap --with-system-zlib --with-linker-hash-style=gnu --enable-linker-build-id --with-ppl=no --with-cloog=no --enable-checking=release --enable-cheaders=c_global --without-isl --with-gxx-include-dir=/not/exist/usr/include/c++/10.2.0 --with-build-time-tools=/home/hjx/6ULX/6ul-yocto/new-yocto/yocto/imx6ulx-yocto/build_imx6ull/tmp/work/x86_64-nativesdk-pokysdk-linux/gcc-cross-canadian-arm/10.2.0-r0/recipe-sysroot-native/usr/arm-poky-linux-gnueabi/bin --with-sysroot=/not/exist --with-build-sysroot=/home/hjx/6ULX/6ul-yocto/new-yocto/yocto/imx6ulx-yocto/build_imx6ull/tmp/work/x86_64-nativesdk-pokysdk-linux/gcc-cross-canadian-arm/10.2.0-r0/recipe-sysroot --enable-poison-system-directories --disable-static --enable-nls --with-glibc-version=2.28 --enable-initfini-array
Thread model: posix
Supported LTO compression algorithms: zlib
gcc version 10.2.0 (GCC)
可以看到成功的安装了。
进入原先用编码的程序下面,验证一下:
developer@EASY-EAI-Develop:~$ cd Y6UL_http_server/
developer@EASY-EAI-Develop:~/Y6UL_http_server$ ls
index.html main.c myweb mywebserver python_server.py thread.c web
developer@EASY-EAI-Develop:~/Y6UL_http_server$ $CC main.c -o myweb
In file included from /opt/test.5.10/sysroots/cortexa7t2hf-neon-poky-linux-gnueabi/usr/include/bits/libc-header-start.h:33,
from /opt/test.5.10/sysroots/cortexa7t2hf-neon-poky-linux-gnueabi/usr/include/stdio.h:27,
from main.c:1:
/opt/test.5.10/sysroots/cortexa7t2hf-neon-poky-linux-gnueabi/usr/include/features.h:397:4: warning: #warning _FORTIFY_SOURCE requires compiling with optimization (-O) [-Wcpp]
397 | # warning _FORTIFY_SOURCE requires compiling with optimization (-O)
| ^~~~~~~
main.c: In function ‘main’:
main.c:51:34: warning: implicit declaration of function ‘inet_addr’ [-Wimplicit-function-declaration]
51 | skaddr.sin_addr.s_addr = inet_addr(SERV);
| ^~~~~~~~~
developer@EASY-EAI-Develop:~/Y6UL_http_server$ file myweb
myweb: ELF 32-bit LSB shared object, ARM, EABI5 version 1 (SYSV), dynamically linked, interpreter /lib/ld-linux-armhf.so.3, BuildID[sha1]=f6a2e01506f916f6442b28c26e428b63c9d716b9, for GNU/Linux 3.2.0, with debug_info, not stripped
developer@EASY-EAI-Develop:~/Y6UL_http_server$
看到我们编译出来的为ARM下运行的程序。
【总结】安装好SDK后,我们需要运行编译工具,先用source /opt/test.5.10/environment-setup-cortexa7t2hf-neon-poky-linux-gnueabi 加载SDK,然后就可以用$CC 进行编译了,如果用makefile,也需要提前加载一下环境。