Protobuf NDK以及QNX交叉编译

1. 背景

Protobuf  用处很广,尤其是通讯数据序列化,反序列化。

TODO

2. 下载资源

protobuf镜像地址:github-protobuf

Android ndk下载:Android ndk

QNX tools下载: prebuilt_QNX700

下载完,解压!

TODO

3.  实操

废话不多数,直接上编译脚本

3.1  NDK交叉编译脚本

build_android.sh

#!/bin/sh
###################################
#### build script for protobuf
#### taget:qnx
#### Date: 2022-11-01
#### Author: 村里小码农
###################################

# qnx bsp dir
NDKROOT_PATH=/workspace/tools/android-ndk-r23b
TOOLCHAIN=$NDKROOT_PATH/toolchains/llvm/prebuilt/linux-x86_64
# current dir
CURRENT_PATH=$(pwd)
# config Compile param.
TARGET_API=28
#
TARGET_ANDROID_PLATFORM=android-$TARGET_API
#预留
TARGET=aarch64-linux-android
#TARGET_ABI=armeabi-v7a
TARGET_ABI=arm64-v8a

PREFIX=$CURRENT_PATH/build/android/$TARGET_ABI

if [ -d $PREFIX ];then
rm -rf $PREFIX
mkdir -p $PREFIX
else
mkdir -p $PREFIX
fi

if [ ! -f $TOOLCHAIN/bin/$TARGET$TARGET_API-ar ];then
ln -s $TOOLCHAIN/bin/llvm-ar $TOOLCHAIN/bin/$TARGET$TARGET_API-ar
fi

if [ ! -f $TOOLCHAIN/bin/$TARGET$TARGET_API-nm ];then
ln -s $TOOLCHAIN/bin/llvm-nm $TOOLCHAIN/bin/$TARGET$TARGET_API-nm
fi

if [ ! -f $TOOLCHAIN/bin/$TARGET$TARGET_API-ranlib ];then
ln -s $TOOLCHAIN/bin/llvm-ar $TOOLCHAIN/bin/$TARGET$TARGET_API-ranlib
fi

echo "---------------------------"
echo " > start to build ARM64."
echo "---------------------------"

cd $CURRENT_PATH/build/android

cmake -DCMAKE_TOOLCHAIN_FILE=$NDKROOT_PATH/build/cmake/android.toolchain.cmake \
	-DCMAKE_INSTALL_PREFIX=$PREFIX \
	-DANDROID_ABI=$TARGET_ABI \
	-DANDROID_NATIVE_API_LEVEL=$TARGET_API \
	-DCMAKE_BUILD_TYPE=Release\
	-DANDROID_TOOLCHAIN=clang \
	-Dprotobuf_BUILD_TESTS=OFF \
	-Dprotobuf_BUILD_SHARED_LIBS=ON \
	../../cmake/
#-DANDROID_PLATFORM=$TARGET_ANDROID_PLATFORM
#如果编译静态库,则拿掉该项配置
#-Dprotobuf_BUILD_SHARED_LIBS=ON
make
make install

echo "---------------------------"
echo " >   build finished."
echo "---------------------------"
cd $CURRENT_PATH

3.2 QNX交叉编译脚本

build_qnx.sh

#!/bin/sh
###################################
#### build script for protobuf
#### taget:qnx
#### Date: 2022-11-01
#### Author: 村里小码农
###################################

# qnx tools dir
QNX_TOOLS_PATH=/workspace/tools/prebuilt_QNX700
# current dir
CURRENT_PATH=$(pwd)
#
TARGET_ABI=aarch64le
#
PREFIX=$CURRENT_PATH/build/qnx/$TARGET_ABI


if [ -d $PREFIX ];then
rm -rf $PREFIX
mkdir -p $PREFIX
else
mkdir -p $PREFIX
fi

export QNX_CONFIGURATION=$QNX_TOOLS_PATH/.qnx
export QNX_TARGET=$QNX_TOOLS_PATH/target/qnx7
export QNX_HOST=$QNX_TOOLS_PATH/host/linux/x86_64
export MAKEFLAGS=-I$QNX_TOOLS_PATH/target/qnx7/usr/include
export MAKELDFLAGS=-L$QNX_TOOLS_PATH/target/qnx7/usr/lib,-L$QNX_TOOLS_PATH/target/qnx7/aarch64le/lib

#QNX_TOOLCHAINS_CC64=$QNX_TOOLS_PATH/host/linux/x86_64/usr/bin/ntoaarch64-gcc
#QNX_TOOLCHAINS_CXX64=$QNX_TOOLS_PATH/host/linux/x86_64/usr/bin/ntoaarch64-g++
#use aarch64-unknown-nto-qnx7.0.0
QNX_TOOLCHAINS_CC64=$QNX_TOOLS_PATH/host/linux/x86_64/usr/bin/aarch64-unknown-nto-qnx7.0.0-gcc
QNX_TOOLCHAINS_CXX64=$QNX_TOOLS_PATH/host/linux/x86_64/usr/bin/aarch64-unknown-nto-qnx7.0.0-g++

echo "---------------------------"
echo " > start to build ARM64."
echo "---------------------------"
	
./configure --prefix=$PREFIX \
	--host=aarch64-unknown-nto-qnx7.0.0 \
	--build=x86_64-pc-linux \
	CC=$QNX_TOOLCHAINS_CC64 \
	CXX=$QNX_TOOLCHAINS_CXX64 \
	CPPFLAGS='-D_XOPEN_SOURCE=500'
#--disable-shared
	
make -j12
make install

echo "---------------------------"
echo " >   build finished."
echo "---------------------------"

cd $CURRENT_PATH

 

  • 0
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

村里小码农

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值