前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Tool之源码编译

Tool之源码编译

作者头像
Taishan3721
发布2019-07-10 15:26:59
7190
发布2019-07-10 15:26:59
举报
文章被收录于专栏:这里只有VxWorks这里只有VxWorks

使用VIP编译VxWorks Image时,可能会遇到某些组件不可选,甚至找不到的情况

这是因为IDE工具(Tornado/Workbench)没有找到相应的库文件。 风河在VxWorks中提供了很多很多组件,其中有些组件只提供了源码,主要是与connectivity、security、 management相关的组件,例如Wind River Firewall, Wind River IPsec and IKE, Wind River Mobile IP,以及上图中的CRYPTO等。要想在VxWorks中调用它们,就需要先将这些源码编译为库。还有一些组件既提供了源码,也提供了库文件,但是出于某种原因可能需要修改源码,或者调整参数,这时候也需要重新编译源码。

VxWorks 5.x VxWorks 5.x的时候,要想编译源码,首先需要在Host系统的命令行工具里调用$(WIND_BASE)/host/$(WIND_HOST_TYPE)/bin/torVars.bat来设置VxWorks的环境变量,然后在$(TGT_DIR)/src目录下运行make命令就可以了

make的参数通常包括CPU和TOOL

不过在VxWorks5.x时,编译器diab还是分开销售的,大多数用户并没有安装,因此TOOL的值只能是编译器gnu了,写不写也就无所谓了。而CPU的值,取决于使用什么样的target,可以从其BSP的makefile文件中获得

VxWorks 6.1-6.6 到了VxWorks 6,VxWorks提供了更多的组件。除了使用命令行,Workbench还提供User-Defined Project来为VxWorks 6.1-6.6编译源码。

新建一个User-Defined Project,选择相应的VxWorks做为Target operating system

然后将Project的位置设置到VxWorks所在的文件夹

最重要的是,根据target的情况来填写Build command

CPU的值,同样是参考target BSP的makefile文件;而这时候的TOOL,一般gnu和diab都是可以选的了,根据项目的实际需求来决定。还有几个参数

  • comp-xxx表示库的作用空间,取值comp-kernel表示这是kernel的库,这也是默认值;取值comp-usr表示这是user mode的库,也就是给RTP用的
  • FEATURE_SET表示哪种platform,需要根据实际情况来选择,例如FEATURE_SET=pne,不过一般用户都是只安装一种platform,因此这个参数就不用填写了。常见的platform有pne、pid、pad、pcd, 还有一种叫gpp,它是不包含源码的,因此也就不需要再编译了
    • Platform for Network Equipment
    • Platform for Industrial Devices
    • Platform for Automotive Devices
    • Platform for Consumer Devices
    • General Purpose Platform
  • VXBUILD表示是否配置为SMP模式,不填写就表示UP,因此填写的话,只能是VXBUILD=SMP了
  • ADDED_CFLAGS表示C的编译选项,如果想使用更多的选项,一般使用+=符号,例如ADDED_CFLAGS+=-g
  • ADDED_C++FLAGS表示C++的编译选项
  • 而要想清除已有的库,clean rule是TARGET=rclean

VxWorks 6.7-6.9 到了VxWorks 6.7,风河不再建议使用命令行或者User-Defined Project,因为这样会破坏系统自带的库文件。而是提供了一种非常强大的工程:VxWorks Source Build Project。使用这种VSB,可以图形化的定制所需组件以及参数,并且编译得到的库会单独存放。因此,可以为不同的CPU或BSP编译多种不同的库。

创建VSB时,可以选择基于某种BSP或者某种CPU。基于BSP编译时,编译工具会针对BSP进行专门的优化,可以提供更好的性能和更小的代码尺寸。基于CPU编译时,得到的库可以用于支持该CPU的所有BSP。

创建VSB之后,可以根据实际需求对其进行配置。例如使能CRYPTO组件

添加FIREWALL组件

然后编译工程,不过高版本的VxWorks中包含的组件有点多,编译时间会有些长,一般会超过30分钟 VSB编译完成后,就会在VSB的目录里得到新的库文件。这时候需要创建新的VIP才能使用这些新的库文件。新建的VIP不像之前的工程是基于一个BSP的,而是要基于这个VSB工程

在新建的VIP里,就可以看到之前的CRYPTO变成可选的了,并且多出了FIREWALL组件

当然了,还有一种在VIP中不能使用某种组件的情况,那就是:没有安装(其实就是没有购买了),例如只安装了两张CD的VxWorks 5.5或者gpp的VxWorks 6.x ^_^ 这正是: 编译源码VSB,调用组件VIP。 功能众多,有取有舍; 安全可控,灵活使用。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-01-13,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 这里只有VxWorks 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
命令行工具
腾讯云命令行工具 TCCLI 是管理腾讯云资源的统一工具。使用腾讯云命令行工具,您可以快速调用腾讯云 API 来管理您的腾讯云资源。此外,您还可以基于腾讯云的命令行工具来做自动化和脚本处理,以更多样的方式进行组合和重用。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档