QNX7.1 交叉编译开源库

1.下载QNX7.1 SDK并解压

ITL:~/work/tiqnx710$ ls -l
总用量 16
drwxrwxr-x 4 xxx4096 1月 28 13:38 host
-rwxrwxr-x 1 xxx 972 1月 28 13:38 qnxsdp-env.bat
-rwxrwxr-x 1 xxx 1676 1月 28 13:38 qnxsdp-env.sh
drwxrwxr-x 3 xxx 4096 1月 28 13:38 target
xxxITL:~/work/tiqnx710$

2.编译protobuf-c-test
cd protobuf-c-test
mkdir out
cd …
sudo apt install autoconf libtool
source …/…/tiqnx710/qnxsdp-env.sh
./autogen.sh
在这里插入图片描述
make -j8
make install
在这里插入图片描述
zlog编译类型步骤:
zlog
git clone http://xxxx/zlog.git
cd zlog
git checkout tag-1.2.15
./autogen.sh
./configure --prefix=/home/xxxx/zlog/out --host=aarch64-unknown-nto-qnx CC=aarch64-unknown-nto-qnx7.1.0-gcc CFLAGS=‘-D_QNX_SOURCE -D__linux__’
make -j1
make install
zlog 可能遇到一个编译错误:
“CE -D__linux__ -c event.c -fPIC -shared -DPIC -o .libs/libzlog_la-event.o
event.c:23:10: fatal error: sys/syscall.h: No such file or directory
#include <sys/syscall.h>
^~~~~~~~~~~~~~~
compilation terminated.
Makefile:536: recipe for target ‘libzlog_la-event.lo’ failed

解决方法:
“diff --git a/src/event.c b/src/event.c
index ec70b32…7d46cdf 100644
— a/src/event.c
+++ b/src/event.c
@@ -20,7 +20,7 @@
#include <sys/time.h>

#include <sys/types.h>
-#include <sys/syscall.h>
+//#include <sys/syscall.h>

#include “zc_defs.h”
#include “event.h”
@@ -91,7 +91,8 @@ zlog_event_t *zlog_event_new(int time_cache_count)
a_event->tid_hex_str_len = sprintf(a_event->tid_hex_str, “%x”, (unsigned int)a_event->tid);

#ifdef linux

  •   a_event->ktid = syscall(SYS_gettid);
    
  •   //a_event->ktid = syscall(SYS_gettid);
    
  •   a_event->ktid = gettid();//modify by xx
    


修改即可编译通过
在这里插入图片描述

1.json-c 交叉编译
cd json-c
mkdir out
source …/…/tiqnx710/qnxsdp-env.sh
cmake -DCMAKE_SYSTEM_NAME=“QNX” -DCMAKE_SYSTEM_PROCESSOR=“aarch64” -DCMAKE_CXX_COMPILER_ID=“GNU”
-DCMAKE_C_COMPILER=“aarch64-unknown-nto-qnx7.1.0-gcc”
-DCMAKE_CXX_COMPILER=“aarch64-unknown-nto-qnx7.1.0-g++”
-DCMAKE_BUILD_TYPE=“Debug”
-DCMAKE_FIND_ROOT_PATH=“/home/xxx/tiqnx710/target/qnx7”
-DCMAKE_INSTALL_PREFIX=/home/xxxx/json-c/out
-DCMAKE_PREFIX_PATH=/home/xxxx/json-c/out
make -j8
make install
2.查看编译产物
在这里插入图片描述
libzip交叉编译类似,按照如下步骤即可:
libzip
git clone http://xxxx/libzip.git
cd libzip
source /homexxxx/tiqnx710/qnxsdp-env.sh
cmake -DCMAKE_SYSTEM_NAME=“QNX” -DCMAKE_SYSTEM_PROCESSOR=“aarch64” -DCMAKE_C_FLAGS=“-fPIC -fvisibility=hidden” -DCMAKE_CXX_COMPILER_ID=“GNU” -DCMAKE_C_COMPILER=“aarch64-unknown-nto-qnx7.1.0-gcc” -DCMAKE_CXX_COMPILER=“aarch64-unknown-nto-qnx7.1.0-g++” -DCMAKE_BUILD_TYPE=“Debug” -DCMAKE_FIND_ROOT_PATH=“/xxxx/qnx710/tiqnx710/target/qnx7/aarch64le” -DCMAKE_INSTALL_PREFIX=/home/xxxlibzip/out -DCMAKE_PREFIX_PATH=/home/xxxx/libzip/out
make -j1
make install