概述:
本文以dwncs项目为示例,简述x86_64 ubuntu16虚拟机中交叉编译Aarch64目标机的可执行文件。本文主要叙述系统环境、交叉编译器搭建、项目依赖库编译、项目编译、缺陷等五个部分(文档用于个人记录,某些细节说明不到位)。
一、系统环境
1、开发环境

2、目标环境

二、交叉编译环境
1、查看aarch64-linux-gcc交叉编译器
Shell:apt search aarch64-linux


2、安装交叉编译器
Shell:sudo apt install g++-aarch64-linux-gnu

Shell:sudo apt install gcc-aarch64-linux-gnu

3、测试交叉编译环境

三、依赖库交叉编译
注:dwncs依赖类库
libffi:https://github.com/libffi/libffi
libwebsockets:https://github.com/warmcat/libwebsockets
libjson-c:https://github.com/json-c/json-c
oepnssl:https://github.com/openssl/openssl
libzlog:https://github.com/HardySimpson/zlog

1、json-c
(1)解压json-c-master.zip(偷懒双击拖出)
(2)修改CMakeLists.txt文件
SET(CMAKE_SYSTEM_NAME Linux)SET(CMAKE_C_COMPILER "aarch64-linux-gnu-gcc")SET(CMAKE_CXX_COMPILER "aarch64-linux-gnu-g++")

(3)mkdir build && cd build
(4)执行cmake(注意安装目录,避免冲掉其他交叉编译环境)
cmake .. -DCMAKE_INSTALL_PREFIX=/home/hcy/Public/dev/cross-complie/aarch64/json-c

(5)make && make install

(6)安装目录

2、libffi
(1)解压libffi-3.3.tar.gz文件
(2)mkdir build && cd build(重复过程不做截图)
(3)执行configure
../configure CC=aarch64-linux-gnu-gcc --enable-shared --prefix=/home/hcy/Public/dev/cross-complie/aarch64/ffi --host=aarch64-linux-gnu

(4)make && make install
(5)安装目录

3、openssl(version 1.0.2;websockets依赖环境,优先安装)
(1)解压openssl-OpenSSL_1_0_2-stable.zip文件
(2)执行config
./config no-asm -shared --prefix=/home/hcy/Public/dev/cross-complie/aarch64/openssl

(3)修改Makefile文件(修改编译器;删除-m64)



(4)make && make install(openssl编译安装很慢)
(5)安装目录

4、websockets
(1)解压libwebsockets-main.zip文件
(2)修改CMakeLists.txt文件
SET(CMAKE_SYSTEM_NAME Linux)SET(CMAKE_C_COMPILER "aarch64-linux-gnu-gcc")SET(CMAKE_CXX_COMPILER "aarch64-linux-gnu-g++")

(3)mkdir build && cd build
(4)执行cmake(设置openssl头文件及类库目录)
cmake .. -DCMAKE_INSTALL_PREFIX=/home/hcy/Public/dev/cross-complie/aarch64/websockets \-DLWS_OPENSSL_INCLUDE_DIRS=/home/hcy/Public/dev/cross-complie/aarch64/openssl/include \-DLWS_OPENSSL_LIBRARIES="/home/hcy/Public/dev/cross-complie/aarch64/openssl/lib/libcrypto.so;/home/hcy/Public/dev/cross-complie/aarch64/openssl/lib/libssl.so;"

(5)make && make install

(6)安装目录

5、zlog
(1)解压zlog-master.zip文件
(2)为autogen.sh脚本赋权

(3)设置默认的shell为bash
Shell:sudo dpkg-reconfigure dash(选择No)

(4)执行autogen.sh

(5)修改configure文件rpl_realloc->realloc

(6)mkdir build && cd build
(7)执行configure
CC=aarch64-linux-gnu-gcc ../configure --prefix=/home/hcy/Public/dev/cross-complie/aarch64/zlog --host=aarch64-linux-gnu

(8)make(分步执行make、make install;&&执行有问题)
(9)make install
(10)安装目录

五、项目编译
1、Makefile构建(指定链接库位置)
2、清空编译文件

3、编译更新程序

4、编译主程序

5、查看可执行文件

6、拷贝至目标机测试(其他文件是项目依赖文件)
(1)执行环境

(2)upgrade

(3)dwncs主程序





