Table of Contents
freescale的i.MX采用了yocto的框架编译。提取toolchain并安装后,在toolchain的安装目录有一个脚本可以用来设置交叉编译的环境变量。
ISSUE
但是当使用此环境变量编译openssl后,会出现以下问题:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
openssl.git$ ./Configure -h perl: warning: Setting locale failed. perl: warning: Please check that your locale settings: LANGUAGE = (unset), LC_ALL = (unset), LC_CTYPE = "zh_CN.utf8", LANG = "en_US.UTF-8" are supported and installed on your system. perl: warning: Falling back to the standard locale ("C"). Can't locate File/Spec/Functions.pm in @INC (you may need to install the File::Spec::Functions module) (@INC contains: /data/toolchain/imx-a7/sysroots/x86_64-pokysdk-linux//usr/lib/perl/5.20.0 /data/toolchain/imx-a7/sysroots/x86_64-pokysdk-linux//usr/lib/perl /data/toolchain/imx-a7/sysroots/x86_64-pokysdk-linux//usr/lib/perl/5.20.0 /data/toolchain/imx-a7/sysroots/x86_64-pokysdk-linux//usr/lib/perl/site_perl/5.20.0 /data/toolchain/imx-a7/sysroots/x86_64-pokysdk-linux//usr/lib/perl/vendor_perl/5.20.0 /opt/poky/1.8/sysroots/x86_64-pokysdk-linux/usr/lib/perl/site_perl/5.20.0/ /opt/poky/1.8/sysroots/x86_64-pokysdk-linux/usr/lib/perl/site_perl/5.20.0 /opt/poky/1.8/sysroots/x86_64-pokysdk-linux/usr/lib/perl/vendor_perl/5.20.0/ /opt/poky/1.8/sysroots/x86_64-pokysdk-linux/usr/lib/perl/vendor_perl/5.20.0 /opt/poky/1.8/sysroots/x86_64-pokysdk-linux/usr/lib/perl/5.20.0/ /opt/poky/1.8/sysroots/x86_64-pokysdk-linux/usr/lib/perl/5.20.0 /opt/poky/1.8/sysroots/x86_64-pokysdk-linux/usr/lib/perl/5.20.0 .) at ./Configure line 13. BEGIN failed--compilation aborted at ./Configure line 13. openssl.git$ |
FIXes
此时可以通过手动配置编译环境解决:
- 重新开一个shell
- 设置交叉编译器目录到PATH
123$ export PATH=/path/to/your/install/dir/sysroots/x86_64-pokysdk-linux/usr/bin/arm-poky-linux-gnueabi:$PATH - 采用通用32位配置Autoconf
123$ ./Configure linux-generic32 - 修改Makefile中的CC为交叉编译器的GCC,注意不要忘了后面的参数
1234CC=arm-poky-linux-gnueabi-gcc -march=armv7-a -mfloat-abi=hard -mfpu=neon -mtune=cortex-a7 --sysroot=/data/toolchain/imx-a7/sysroots/cortexa7hf-vfp-neon-poky-linux-gnueabi - 编译
123$ make