在Linux x86_64系统上编译arm系统上用的mqtt库,集成openssl库。
在unbantu 18.04.6 64位系统上验证通过 mqtt版本:1.3.6,openssl版本:1.1.1g
交叉编译Openssl arm库
1.安装交叉编译工具:
下载:https://releases.linaro.org/components/toolchain/binaries/4.9-2017.01/arm-linux-gnueabihf/
放到/root/build_tool/并解压缩
cd /root/build_tool/
sudo tar -vxf gcc-linaro-4.9.4-2017.01-x86_64_arm-linux-gnueabihf.tar.xz
2.修改环境变量:
vim /etc/profile 在最后面增加
export PATH=$PATH:/root/build_tool/gcc-linaro-4.9.4-2017.01-x86_64_arm-linux-gnueabihf/bin
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/root/build_tool/gcc-linaro-4.9.4-2017.01-x86_64_arm-linux-gnueabihf/lib
source /etc/profile
3.检查是否生效:
arm-linux-gnueabihf-gcc -v
出现gcc version 4.9.4 (Linaro GCC 4.9-2017.01)信息,说明交叉编译工具配置成功。
4.编译Openssl
将Openssl代码放到/root/mqtt_build/openssl-OpenSSL_1_1_1g/下面
cd /root/mqtt_build/openssl-OpenSSL_1_1_1g/
chmod +x *
5.配置编译选项
./config no-async no-asm shared --prefix=/root/openssl_arm/ssl_arm --cross-compile-prefix=arm-linux-gnueabihf-
6.需要将64选项移除
sed -i 's/-m64//' Makefile
7.make && make install
如果报make命令未找到,执行以下命令
sudo apt-get install make
8.编译成功的头文件,库就会放到/root/openssl_arm/ssl_arm文件夹下
交叉编译mqtt arm库
1.将编译代码解压缩到:/root/mqtt_build/paho.mqtt.c-1.3.6/
2.新建以下目录:
/root/mqtt_build
/root/mqtt_build/share/man/man1
/root/mqtt_build/include
/root/mqtt_build/lib
/root/mqtt_build/bin
//使用cmake方式编译
//安装cmake
sudo apt-get install cmake
//修改环境变量
vim /etc/profile
export OPENSSL_ROOT_DIR=/root/openssl_arm/ssl_arm
export OPENSSL_LIBRARIES=/root/openssl_arm/ssl_arm/lib
source /etc/profile
//配置cmake编译选项
要先到mqtt代码目录下:cd /root/mqtt_build/paho.mqtt.c-1.3.6/
cmake -DPAHO_WITH_SSL=TRUE -DOPENSSL_ROOT_DIR=/root/openssl_arm/ssl_arm
cmake -DCMAKE_INSTALL_PREFIX=/root/mqtt_arm/
cmake -DPAHO_BUILD_STATIC=TRUE -DPAHO_BUILD_SHARED=TRUE
cmake -DCMAKE_C_COMPILER=arm-linux-gnueabihf-gcc
cmake -DCMAKE_BUILD_TYPE=Debug -DPAHO_BUILD_SAMPLES=TRUE
//重新生成Makefile
cmake .
make
make install