Cmake搭建QNX编译环境

1、确定QNX系统的架构

我们要如何确认QNX系统的架构呢?

连接我们的qnx开发板,输入下述指令。

uname -a

以我的开发板为例子,版本信息如下:

# uname -a
QNX localhost 7.0.X 2022/04/21-10:05:23EDT SA8155_ADP_Star_v1.0.0_UFS_NORMAL aarch64le

可以看到我们使用的是高通的SA8155芯片,系统架构为aarch64le
同时我们也可以看到QNX系统的版本为7.0.X。

注意上诉我们说的系统架构aarch64le,aarch64le和aarch64并不是相同的。

aarch64 (Big-Endian):

aarch64 表示 ARM 64 位架构的默认字节序,即大端序(Big-Endian)。
在大端序中,数据的高字节保存在内存的低地址处,而低字节保存在高地址处。

aarch64le (Little-Endian):

aarch64le 表示 ARM 64 位架构的小端序(Little-Endian)。
在小端序中,数据的低字节保存在内存的低地址处,而高字节保存在高地址处。

2、交叉编译链的选择

在第一步中我们查看到QNX的系统版本为7.0.X,因此我们采用的交叉编译链版本也要为qnx7系列。我这里选择的是qnx700的交叉编译。具体下载qnx700可以在网上着着,也可参考下面这个博主的文章QNX7开发指南,从而获取qnx交叉编译链。

3、Cmake的编写

cmake_minimum_required(VERSION 3.0)
project(xxx)

#设置编译参数
set(CMAKE_C_FLAGS "-Vgcc_ntoaarch64le")
set(CMAKE_CXX_FLAGS "-Vgcc_ntoaarch64le")



# 设置 CMake 的系统信息
set(CMAKE_SYSTEM_NAME QNX)
set(CMAKE_SYSTEM_PROCESSOR aarch64)

set(CMAKE_C_STANDARD 11)
set(CMAKE_CXX_STANDARD 11)
set(CMAKE_C_STANDARD_REQUIRED ON)
set(CMAKE_CXX_STANDARD_REQUIRED ON)


# 指定头文件路径
include_directories(
    xxx/include/
)

set(SRC_LIST
	xxx/xxx.cpp
)

# 链接库文件路径
link_directories(

)

# 添加可执行文件目标
add_library(${PROJECT_NAME} SHARED ${SRC_LIST})


# 要链接的库
target_link_libraries(${PROJECT_NAME} PRIVATE 
)

注意在填写编译参数时候,要根据第一步的获得的系统架构来设置,我的系统架构为aarch64le,在使用qcc命令查看一下qnx700支持的系统架构。

qcc -V
cc: targets available in /home/json/tools/qnx/qnx700/host/linux/x86_64/etc/qcc:
	5.4.0,gcc_ntox86_gpp	
	5.4.0,gcc_ntoarmv7le_gpp	
	5.4.0,gcc_ntox86_cxx	
	5.4.0,gcc_ntox86_64_cxx	
	5.4.0,gcc_ntox86_64	
	5.4.0,gcc_ntoarmv7le	
	5.4.0,gcc_ntox86	(default)
	5.4.0,gcc_ntoaarch64le_cxx	
	5.4.0,gcc_ntox86_64_gpp	
	5.4.0,gcc_ntoarmv7le_cxx	
	5.4.0,gcc_ntoaarch64le	
	5.4.0,gcc_ntoaarch64le_gpp

可以看到里面有个gcc_ntoaarch64le所以我们设置编译参数为:

set(CMAKE_C_FLAGS "-Vgcc_ntoaarch64le")
set(CMAKE_CXX_FLAGS "-Vgcc_ntoaarch64le")

4、编译cmake

可以看到上诉我们的cmake写的很简单,有些编译参数是要在执行cmake时候设置的,比如编译的工具。

在linux中我们可以使用gcc编译,arm中我们可以使用arm-gcc编译,而在qnx中我们要使用qcc编译。

进入到我们的qnx700目录。
在这里插入图片描述
这样我们就找到了qcc的绝对路径。

/home/json/tools/qnx/qnx700/host/linux/x86_64/usr/bin/qcc

下面我们就可以编译cmake了

cmake -DCMAKE_C_COMPILER=/home/json/tools/qnx/qnx700/host/linux/x86_64/usr/bin/qcc -DCMAKE_CXX_COMPILER=/home/json/tools/qnx/qnx700/host/linux/x86_64/usr/bin/qcc ..

执行会看到如下效果:

-- The C compiler identification is QCC 5.4.0
-- The CXX compiler identification is QCC 5.4.0
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Check for working C compiler: /home/json/tools/qnx/qnx700/host/linux/x86_64/usr/bin/qcc - skipped
-- Detecting C compile features
-- Detecting C compile features - done
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Check for working CXX compiler: /home/json/tools/qnx/qnx700/host/linux/x86_64/usr/bin/qcc - skipped
-- Detecting CXX compile features
-- Detecting CXX compile features - done

注意:Check for working C compiler:这一项目如果提示是qcc则设置成功,如果是cc或者gcc则说明设置失败。

有人可能会问了,为什么不在CmkaeLists.txt里面设置CMAKE_C_COMPILER和CMAKE_CXX_COMPILER,我也尝试过,在CmkaeLists.txt里面设置不起作用,cmake时候依然提示cc编译。

5、小记

我们在qcc所在目录可以看到:
在这里插入图片描述
切记,cmake里面的编译器设置千万不可以直接指定里面的gcc/g++工具,会出现很多头文件找不到,库链不到的错误。使用qcc编译,通过设置编译参数来选择性编译。

6、结语

此文看似简单,期间踩了太多的坑了。。。。。泪目
如有疑问可联系QQ:918619587

本文禁止转载

  • 23
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要在VS Code中配置CMake编译环境,您可以按照以下步骤进行操作: 1. 首先,确保您已经安装了VS Code和CMake。 2. 打开VS Code,点击左侧的扩展图标(或使用快捷键Ctrl+Shift+X)打开扩展面板。 3. 在扩展面板中搜索并安装"CMake Tools"扩展。这个扩展提供了与CMake集成的功能。 4. 安装完成后,点击左侧的调试图标(或使用快捷键Ctrl+Shift+D)打开调试面板。 5. 点击调试面板顶部的齿轮图标,选择"Add Configuration"添加调试配置文件。 6. 在弹出的列表中,选择"C++ (GDB/LLDB)"作为模板。 7. 在生成的launch.json文件中,找到"configurations"数组,并在其中添加以下配置: ```json { "name": "CMake Debug", "type": "cppdbg", "request": "launch", "program": "${workspaceFolder}/build/debug/your_executable_name", "args": [], "stopAtEntry": false, "cwd": "${workspaceFolder}", "environment": [], "externalConsole": true, "MIMode": "gdb", "miDebuggerPath": "/path/to/your/gdb" } ``` 请注意替换"your_executable_name"为您的可执行文件的名称,并将"/path/to/your/gdb"替换为您的GDB安装路径(如果使用GDB作为调试器)。 8. 然后,打开您的CMake项目文件夹,并在VS Code的左侧资源管理器中右键单击,选择"CMake: Configure"以生成构建目录。 9. 在资源管理器中再次右键单击,并选择"CMake: Build"以开始构建项目。 10. 最后,点击调试面板顶部的绿色播放按钮即可启动调试会话。 现在,您应该已经成功配置了CMake编译环境,并可以在VS Code中进行调试。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值