概述:
本文以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主程序