1 简介
Boost项目提供了一组全面的,经过同行评审的,可移植的C++源代码库,这些库可与C++标准库一起很好地工作。
VxWorks是由Wind River构建的实时操作系统。
VxWorks支持Boost C++库的子集。支持的库是:
- Atomic
- Chrono
- Container
- Context
- Contract
- Date Time
- Exception
- Filesystem
- Graph
- Log
- Math
- Program Options
- Random
- Regex
- Serialization
- Timer
- Type Erasure
- BOOST Tests
在先前的文章(给VxWorks 7添加Boost C++库支持)中,我们解释了如何编译并启用boost的VxWorks内核,本文将描述如何从boost.org网站移植一些boost示例代码,并在VxWorks 7目标系统上运行它。
2 前提
本文的说明假定你正在使用:
- Windows工作站,其上安装了以下软件:
- 风河VxWorks 7,SR0620
- Windows版Git
- 你已经完成阅读了上一片文章,“给VxWorks 7添加Boost C++库支持”
3 相关文件
有关本主题的更多信息,请参考:
风河文档:
- VxWorks对第三方软件的支持
非风河文档:
- https://www.boost.org/
4 在WindRiver Workbench中创建一个实时进程(RTP)项目
4.1 基于VxWorks源代码编译(VSB)创建一个boostvsb的RTP
你必须基于先前文章中启用了Boost的VxWorks项目创建RTP项目。在workbench中,执行一下操作:
File > New > Wind River Workbench Project
选择一个 Real Time Process Project
将项目命名为“boostapp”,你需要基于在上一篇文章中创建的VSB来创建工程,VSB之前被称为“boostvsb”,选择Browse,找到文件boostvsb/vsb.vxconfig,这样RTP项目就基于“boostvsb”了。
4.2 将RTP.C重命名为RTP.CPP
RTP项目源文件必须重命名为“rtp.cpp”,因为这个boost源文件是C++而不是C的源代码,因此必须正确编译。
在Workbench Project Explorer view中右键单击“rtp.c”,选择“Rename”,然后将文件名设置为“rtp.cpp”。
5 找到BOOST库示例代码
5.1 访问boot.org网站
在网络浏览器中,访问到https://www.boost.org。“boostvsb”项目是包含了boost数学库后建立的,因此我们将选择boost.org上一些使用了数学库的示例代码。
5.2 找到几何示例代码
选择boost的“几何库”示例,访问至https://www.boost.org/doc/libs/1_54_0/libs/geometry/doc/html/index.html,在“Spatial Indexes”下,单击“Examples”。
选择示例“Index of polygons stored in vector.”
这提供了示例源代码,该应用程序使用boost数学库来创建多边形数学对象的树,然后询问并输出其值。highlight此源代码并复制它。
6 将Boost应用程序打包成一个RTP项目
6.1 将源代码复制到rtp.cpp文件
请确保负责所有的boost网站示例源代码行并替换“rtp.cpp”文件里的内容。
6.2将boost_system库添加到RTP构建属性
右键单击boostapp RTP,然后选择“属性Properties”,选择“Build Properties”,“Libraries”,单击”Add to all”, 选择”Add library file (-I)” 然后输入: “-I boost_system”
点击”Apply and Close”,然后点击 “Yes” 来重新索引项目。现在可以重新编译这个项目,编译应该可以成功完成。如果你遇到任何编译错误提示boost库缺失的话,你必须从库的对话框的编译属性(Build Properties)里手动添加这些库。
注意:如果你在你的RTP代码里面使用了boost现成库,你必须增加(-I boost_thread)作为一个额外的RTP库。
7 运行这个BOOST应用程序RTP
7.1 从Workbench启动VxWorks Simulator目标机
在Workbench的target connection窗口中,为你在上一遍文章中创建的“boostvip” VIP项目来创建一个VxWorks模拟器连接。
启动目标机
7.2 调整内核调度程序以启用时间分片
在VxWorks目标内核shell中,输入以下内容:
-> kernelTimeSlice(1)
Boost应用程序可以在此VxWorks内核配置上更成功地运行。
7.3 在目标上运行bootapp RTP
右键单击Workbench中的“boostapp”项目,然后选择“Run/Debug Real Time Process”,观察boost多边形应用程序在目标上运行,并从VxWorks仿真目标机的控制台生成输出。