一、交叉编译openssl库
1、到官网下载openssl(官网地址:http://www.openssl.org/source)
2.解压openssl-1.1.1k.tar.gz并修改文件名为openssl
3.进入openssl文件夹
4.配置生成makefile文件
sudo ./config no-asm shared no-async --prefix=/home/w/ssl --cross-compile-prefix=/opt/atk-dlrk3588-toolchain/bin/aarch64-buildroot-linux-gnu-
注:(指定了生成的文件目录为:/home/w/ssl,指定了目标平台的交叉编译链工具前缀为:/opt/atk-dlrk3588-toolchain/bin/aarch64-buildroot-linux-gnu- ,这样在使用makefile时不用重复指定交叉编译链的路径)
5.修改openssl文件夹下刚生成的makefile文件,并删除掉两个-m64,否则编译报错
sudo chmod 777 Makefile
6.使能交叉工具编译链
source /opt/atk-dlrk3588-toolchain/environment-setup
aarch64-buildroot-linux-gnu-gcc -v
7.编译并安装
sudo make
sudo make install
8.生成文件均在ssl文件夹下
二、交叉编译curl库
1、到官网下载curl
2.解压curl-8.9.1.tar.xz并修改文件名为curl
3.进入curl文件夹
4.配置生成makefile文件
CPPFLAGS="-I/home/w/openssl_arm/include"
LDFLAGS="-L/home/w/openssl_arm/lib"
LIBS="-ldl"
sudo ./configure --host=arm-linux CC=/opt/atk-dlrk3588-toolchain/bin/aarch64-buildroot-linux-gnu-gcc CXX=/opt/atk-dlrk3588-toolchain/bin/aarch64-buildroot-linux-gnu-g++ \
--with-ssl=/home/w/openssl_arm/ --enable-shared --disable-static --disable-dict --disable-ftp \ --disable-imap --disable-ldap --disable-ldaps --disable-pop3 --disable-proxy \
--disable-rtsp --disable-smtp --disable-telnet --enable-tftp \
--without-ca-bundle --without-gnutls --without-librtmp \
--without-libssh2 --without-zlib --without-libpsl \
--prefix=/home/w/curl_arm/
注:1.指定了需要的openssl库文件的路径。2.指定了交叉编译链工具(aarch64-buildroot-linux-gnu-gcc和aarch64-buildroot-linux-gnu-g++)。3.指定了只安装动态库。4.指定了生成的文件夹路径为(/home/w/curl_arm)。
5.使能交叉工具编译链
source /opt/atk-dlrk3588-toolchain/environment-setup
aarch64-buildroot-linux-gnu-gcc -v
6.编译并安装
sudo make
sudo make install
7. 生成文件均在curl_arm文件夹下
8.Ubuntu下修改curl_arm文件夹下面所有文件的权限
sudo chmod -R 777 curl_arm
三、交叉编译glog库
1.进入glog文件夹
2.进入toolchains文件夹,复制一份gcc-cxx11.cmake,更名为glog_arm.cmake
3.修改glog_arm.cmake的内容如下
SET(CMAKE_SYSTEM_NAME Linux)
# set compiler
set(CMAKE_C_COMPILER /opt/atk-dlrk3588-toolchain/bin/aarch64-buildroot-linux-gnu-gcc)
set(CMAKE_CXX_COMPILER /opt/atk-dlrk3588-toolchain/bin/aarch64-buildroot-linux-gnu-g++)
# set c++ standard
set(CMAKE_CXX_STANDARD 11)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
set(CMAKE_CXX_EXTENSIONS OFF)
4.使能交叉工具编译链
source /opt/atk-dlrk3588-toolchain/environment-setup
aarch64-buildroot-linux-gnu-gcc -v
5.回到glog文件夹下,执行命令
sudo cmake -DCMAKE_INSTALL_PREFIX=/home/w/arm/glog_arm -DCMAKE_TOOLCHAIN_FILE="${PWD}/toolchains/glog_arm.cmake"
6.执行sudo make 进行编译,后执行sudo make install 命令进行安装
sudo make
sudo make install
7. 生成文件均在/home/w/arm/glog_arm文件夹下
四、交叉编译mosquitto库
注意:安装mosquitto库之前需要安装openssl库和cjson库
1.安装cjson
sudo cmake -DCMAKE_INSTALL_PREFIX=/home/w/arm/cjson_arm -DCMAKE_C_COMPILER=/opt/atk-dlrk3588-toolchain/bin/aarch64-buildroot-linux-gnu-gcc -DCMAKE_CXX_COMPILER=/opt/atk-dlrk3588-toolchain/bin/aarch64-buildroot-linux-gnu-g++
sudo make
sudo make install
2.进入mosquitto文件夹
3.修改config.mk
,指定依赖库的头文件路径、库路径,并且指定安装目。
在 config.mk
的 146 行,在ARCH:=$(shell uname -p)
语句下面添加下面语句:
# 指定ssl库、cJSON库的头文件和库文件
CFLAGS += -I/home/w/arm/openssl_arm/include/openssl -I/home/w/arm/cjson_arm/include
LDFLAGS+= -L/home/w/arm/openssl_arm/lib -L/home/w/arm/cjson_arm/lib -lssl -lcrypto -dl
# 指定mqtt库的安装目录
DESTDIR=/home/w/arm/mqtt_arm
3.使能交叉工具编译链
source /opt/atk-dlrk3588-toolchain/environment-setup
aarch64-buildroot-linux-gnu-gcc -v
4.编译安装
sudo make CC=/opt/atk-dlrk3588-toolchain/bin/aarch64-buildroot-linux-gnu-gcc CXX=/opt/atk-dlrk3588-toolchain/bin/aarch64-buildroot-linux-gnu-g++
sudo make install
五、交叉编译jsoncpp库
1.进入jsoncpp文件夹,新建一个build文件夹和一个json_arm.cmake脚本文件
2.进入build文件夹,生成makefile文件
sudo cmake ../ -DCMAKE_TOOLCHAIN_FILE=./json_arm.cmake -DCMAKE_INSTALL_PREFIX=/home/w/arm/jsoncpp_arm -DBUILD_STATIC_LIBS=ON -DBUILD_SHARED_LIBS=ON -DJSONCPP_WITH_TESTS=OFF -G "Unix Makefiles"
3.使能交叉工具编译链
source /opt/atk-dlrk3588-toolchain/environment-setup
aarch64-buildroot-linux-gnu-gcc -v
4.编译安装
sudo make
sudo make install
5. 生成文件均在/home/w/arm/jsoncpp_arm文件夹下