一、什么是交叉编译

       在一种计算机环境中运行的编译程序,能编译出在另外一种环境下运行的代码,我们就称这种编译器支持交叉编译。这个编译过程就叫交叉编译。简单地说,就是在一个平台上生成另一个平台上的可执行代码。

      要进行交叉编译,我们需要在主机平台上安装对应的交叉编译工具链(crosscompilation tool chain),然后用这个交叉编译工具链编译我们的源代码,最终生成可在目标平台上运行的代码。

二、VMware Workstation安装银河麒麟V10系统

1.下载 银河麒麟系统V10 桌面版镜像包

Kylin-Desktop-V10-SP1-General-Release-2303-X86_64.iso

2.运行VMware Workstation,创建虚拟机

以管理员身份运行VMware Workstation,创建新的虚拟机

麒麟v10 图像化kvm 麒麟系统v10_服务器


麒麟v10 图像化kvm 麒麟系统v10_服务器_02


麒麟v10 图像化kvm 麒麟系统v10_linux_03


虚拟机安装地址自定义

麒麟v10 图像化kvm 麒麟系统v10_JAVA_04


处理器和内存根据自己物理机情况分配

麒麟v10 图像化kvm 麒麟系统v10_麒麟v10 图像化kvm_05


麒麟v10 图像化kvm 麒麟系统v10_麒麟v10 图像化kvm_06


麒麟v10 图像化kvm 麒麟系统v10_linux_07


根据需要自定义设置磁盘大小

麒麟v10 图像化kvm 麒麟系统v10_JAVA_08


麒麟v10 图像化kvm 麒麟系统v10_服务器_09


三、环境安装

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/

登录云服务器,新建测试文件夹

麒麟v10 图像化kvm 麒麟系统v10_服务器_10


麒麟v10 图像化kvm 麒麟系统v10_服务器_11


上传刚编译好的 arm-hello 文件

麒麟v10 图像化kvm 麒麟系统v10_JAVA_12


执行文件

麒麟v10 图像化kvm 麒麟系统v10_JAVA_13