1、集成工程
将源工程的所有模块代码拷贝到库工程,将源工程拷贝一份,并删除不必要的文件作为释放工程,完成结果如下图:
源工程(左)VS库工程(中)VS 释放工程(右)
因为源工程可能在设置里面配置了一些和当前软件匹配的预编译信息以及其它选项,故有必要使用beyond compare比较两个工程的差异点,之后编译出错时,可以回头检查一些设置的差异。比如下图:
生成的库文件位于debug目录下。
将库文件拷贝到释放工程,编译,即可生成可执行文件(elf、hex)
图片左半边是完成封装编译后的软件运行轨迹(程序跑飞了,死在了Os_const_tasks0),右半边是源工程正常运行的轨迹。
问题原因: 库各个模块的*_Irq.c里面的函数,无法被release工程链接,导致中断处理函数为空。
解决方法:在各个*_Irq.c文件,增加一个函数,并在运行中调度。
关键词:_TASKING_C_TRICORE_; #error "No compiler defined!";ctc E201
问提描述:AV012封库的时候,报了如图错误,原因是缺少某些宏定义。再原来的工程里面检索这些宏定义,也是没有找到,但是原工程是可以编译通过的。
解决思路:
可以定位是工程设置的问题了。