一、什么是交叉编译
在一种计算机环境中运行的编译程序,能编译出在另外一种环境下运行的代码,我们就称这种编译器支持交叉编译。这个编译过程就叫交叉编译。简单地说,就是在一个平台上生成另一个平台上的可执行代码。
要进行交叉编译,我们需要在主机平台上安装对应的交叉编译工具链(crosscompilation tool chain),然后用这个交叉编译工具链编译我们的源代码,最终生成可在目标平台上运行的代码。
二、VMware Workstation安装银河麒麟V10系统
1.下载 银河麒麟系统V10 桌面版镜像包
Kylin-Desktop-V10-SP1-General-Release-2303-X86_64.iso
https://blog.csdn.net/duck251/article/details/128972878
2.运行VMware Workstation,创建虚拟机
以管理员身份运行VMware Workstation,创建新的虚拟机
虚拟机安装地址自定义
处理器和内存根据自己物理机情况分配
根据需要自定义设置磁盘大小
三、环境安装
1.安装java环境
jdk下载地址:https://www.oracle.com/java/technologies/downloads/
安装jdk
#进入/usr/local目录 cd /usr/local #创建java文件夹 mkdir java #把JDK压缩文件放进来,然后解压 tar -zxvf jdk-8u171-linux-x64.tar.gz #设置JDK环境变量 vim /etc/profile #输入i编辑文件,在profile最后追加JAVA_HOME和PATH export JAVA_HOME=/usr/local/java/jdk1.8.0_171 export JRE_HOME=${JAVA_HOME}/jre export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib export PATH=${JAVA_HOME}/bin:$PATH #编辑完成按ESC,然后:wq保存 #刷新配置文件,使配置文件产生作用 source /etc/profile #测试java是否安装成功 java -version
2.安装交叉编译器(x86服务器)
2.1安装C开发环境
apt-get install build-essential
2.2.在/usr/local下新建ARM-toolchain文件夹
mkdir /usr/local/ARM-toolchain
2.3 下载交叉编译工具链压缩包
cd /usr/local/ARM-toolchain wget https://releases.linaro.org/components/toolchain/binaries/latest-5/aarch64-linux-gnu/gcc-linaro-5.5.0-2017.10-x86_64_aarch64-linux-gnu.tar.xz
也可以从网页下载,上传到/usr/local/ARM-toolchain目录下,下载地址:
https://releases.linaro.org/components/toolchain/binaries/latest-5/aarch64-linux-gnu/
下载完成后,解压tar包
tar -xvf gcc-linaro-5.5.0-2017.10-x86_64_aarch64-linux-gnu.tar.xz
2.4配置交叉编译器环境变量
修改配置文件
vim /etc/bash.bashrc
在配置文件的最后一行加入路径配置
# Add ARM toolschain path PATH=${PATH}:/usr/local/ARM-toolchain/gcc-linaro-5.5.0-2017.10-x86_64_aarch64-linux-gnu/bin
使用source命令执行刚修改的配置文件
source /etc/bash.bashrc
测试
aarch64-linux-gnu-gcc -v
四、测试交叉编译
1.新建测试程序
#创建hello.c vim hello.c #编辑程序 #include <stdio.h> int main(void) { printf("hello linux\n"); return 0; } #交叉编译 aarch64-linux-gnu-gcc -o arm-hello hello.c
2.华为云鲲鹏服务器运行测试
华为云服务器地址:
https://releases.linaro.org/components/toolchain/binaries/latest-5/aarch64-linux-gnu/
登录云服务器,新建测试文件夹
上传刚编译好的 arm-hello 文件
执行文件