admin管理员组

文章数量:1537282

windriver编译设置

工程右键属性,Build Properties 中 Build Macros下DEFINES下设置宏定义
工程右键属性,c/c++ General下Indexer下Paths and Symbol里,Include Paths框内Build点击左侧小三角即显示工程依赖头文件路径,其中带红色x的是不存在的路径,若想要添加或删除路径点击右侧Edit进入編辑界面,即可修改路径。
工程右键属性,Build Properties 中Libraries中添加想要依赖的库。
工程右键属性,Build Properties 中Build Paths中添加头文件的路径。

编译时可能的问题

编译前要clear
编译的include路径\动态库路径设置好
编译前把中间文件生成好
道系统引入外部动态库:头文件+动态库(麒麟下不予编译,vxworks下宏定义解封编译)
道系统的动态库是.so后缀\可执行文件.vxe
受制于道系统,播放音视频得自己想办法
分文件夹应当更加清楚一些

有些ui_XXX.h中会包含相对路径,导致无法正常引入,需要注意
自己做编译实验得出的结论:windriver只是个交叉编译用的工具,编成.so还是.vxe的命念行指令暂不清楚如何设置

原料:【源码】【依赖库】【中间文件(主要是QT生成的中间.h.cpp)】
设置:在右键出的项目设置里配好了依赖路径了(有顺序要求)和T依赖库】
构建:在这值得编译环境的名字的文件夹中找到编译好的文件即可。

另外,之前我又同时所说产生中间文件的“不要覆盖”,在编译过程中是没有问题的,可以偷懒不去删除一些用不到的cpp或头文件。
但是在20201207的部署时后台报错是类似

[Undefined PLT symbol"_ZN14MainWindowTIHS18InitunHandledTableEv"]

这类错误(……ZN14,代表之后有14个字符是信息,18同理)
MainWindowTIHS是一个旧的但用不上的界面文件,采用“不覆盖,将原来的ui_文件放入文件夹”而编译过的就会有这个问题,经过我的逐个报错逐个删除的实验,编译通过后的报错只有动态库加载失败了(有我们依赖的动态库没vx版本的)

软件中有很多配置文件是写死在同一级目录下的,需要与编译好的可执行文件放在同级目录,在这次部署中合作单位的人告诉我上次部署的东西有大量的冗余动态库,实际上他们将大量通用库进行了集中放置,建议将启动时必须的加载文件写成配置文件形式以及目录拼接,便于部署环境变动时修改部署而不是重新编译。
——这次看到了人家单位的目录结构,是放在各个配置写好的文件夹,所有被调用动态库放在一个文件夹(包括我们的软件生成的动态库),由于我们的配置文件和资源文件放在同级污染了他们的目录结构,他们建议将自己的配置文件命名并放在同级目录下面。

还有,之前的分类总是按型号分类,实际上应当分类为"vxworks版”和"kylin版”,这在总体合作单位给的动态库里可以很好地对应,而且便于重新组织动态库的bin目录及开发插件的自带的配置文件。
实际上,还有一些没引用的动态库、引用了但不知系统版本的动态库,以及一些没用到却不敢删除的配置文件,等这些都解决了再将容易换系统版本的底层拆出来就可以实现快速多平台部署了。
用不到类似我们编译出来的“libXXXXcd.so”这类带d的动态库

本文标签: 小结WindRiver