工具/软件:TI C/C++编译器
修复 库,文件和符号的链接顺序使其成为完全相同的版本的最佳方法是什么?
我知道这不是一项简单的任务,需要对链接和引用进行严格控制。
对于具有多个库的RTSC项目,我想修复链接顺序,因为工作站之间的分配差异。
主项目控制库和文件的链接顺序,但这会导致函数/符号的差异。
以下是一个示例,链接顺序A由一个站点构建生成,链接顺序B由另一个站点构建生成。
从TI工具和文件夹 开始,工作站完全相同。
分配差异是以不同顺序显示的单个函数“EDMA_DRV_ioctl”,以红色突出显示,它会移动某些函数。
用户定义的链接程序命令文件组可以控制其他项目。
库,文件和.text部分与字符串匹配,但与各个函数不匹配。
链接器报告#1.0068万-D no matching节警告。
只有EDMA3_dv_Adv.obj显式地列在MAP文件的.text部分中,因此可能各个函数在外部不可见?
但所有这些函数都列在符号图中。
是否有归档文件的编译选项允许主项目链接程序查看/匹配OS_Utils_arm's emda3_drv_Adv.obj中的函数?
—gen_func_subsections,-ms 将把每个函数放在单独的子节中。
这不是一个大的效率,它确实显示了一些功能 ,但不是所有的功能。
user-defined-linker.cmd (按项目链接顺序排列)
章节
{
组
{
os_Utils_arm_edma_output_section_1:
{
-los_utils_arm*.lib<EDMA3_drv_Adv.obj>(.text:EDMA3_DRV_linkChannel) /*与-ms */匹配
-los_utils_arm*.lib<EDMA3_drv_Adv.obj>(.text:EDMA3_DRV_unlinkChannel)
-los_utils_arm*.lib<EDMA3_drv_Adv.obj>(.text:EDMA3_DRV_chainChannel)
-los_utils_arm*.lib<EDMA3_drv_Adv.obj>(.text:EDMA3_DRV_unchainChannel)
-los_utils_arm*.lib<EDMA3_drv_Adv.obj>(.text:EDMA3_DRV_setQdmaTrigWord)
-los_utils_arm*.lib<EDMA3_drv_Adv.obj>(.text:EDMA3_DRV_setPARAM) /*与-ms */匹配
-los_utils_arm*.lib<EDMA3_drv_Adv.obj>(.text:EDMA3_DRV_getPaRAM) /*与-ms */匹配
-los_utils_arm*.lib<EDMA3_drv_Adv.obj>(.text:EDMA3_DRV_getPaRAMEntry)
-los_utils_arm*.lib<EDMA3_drv_Adv.obj>(.text:EDMA3_DRV_setPaRAMField)
-los_utils_arm*.lib<EDMA3_drv_Adv.obj>(.text:EDMA3_DRV_getPaRAMField)
-los_utils_arm*.lib<EDMA3_drv_Adv.obj>(.text:EDMA3_DRV_setEvtQPriority
-los_utils_arm*.lib<EDMA3_drv_Adv.obj>(.text:EDMA3_DRV_mapChToEvtQ)
-los_utils_arm*.lib<EDMA3_drv_Adv.obj>(.text:EDMA3_DRV_getMapChToEvtQ)
-los_utils_arm*.lib<EDMA3_drv_Adv.obj>(.text:EDMA3_DRV_setCCRegister)
-los_utils_arm*.lib<EDMA3_drv_Adv.obj>(.text:EDMA3_DRV_getCCRegister)
-los_utils_arm*.lib<EDMA3_drv_Adv.obj>(.text:EDMA3_DRV_waitAndClearTcc)
-los_utils_arm*.lib<EDMA3_drv_Adv.obj>(.text:EDMA3_DRV_checkAndClearTcc)
-los_utils_arm*.lib<EDMA3_drv_Adv.obj>(.text:EDMA3_DRV_getPaRAMPhyAddr)/*与-ms */匹配
-los_utils_arm*.lib<EDMA3_drv_Adv.obj>(.text:EDMA3_DRV_*octl)
}
}加载> DDR
}
主要地图
...
文本
…
ca354a7.8万 0000.3114万 OS_Utils_arm.lib:EDMA3_drv_Adv.obj (.text)
…
|
链接顺序A |
|
链路顺序B |
||
|
CA354A78 |
EDMA3_DRV_linkChannel |
|
CA354A78 |
EDMA3_DRV_ioctl |
|
CA354D38 |
EDMA3_DRV_UNlinkChannel |
|
CA354B94 |
EDMA3_DRV_linkChannel |
|
CA354EA8. |
EDMA3_DRV_chainChannel |
|
CA354E54 |
EDMA3_DRV_UNlinkChannel |
|
CA35.5168万 |
EDMA3_DRV_UNchainChannel |
|
CA354FC4 |
EDMA3_DRV_chainChannel |
|
CA3552E8. |
EDMA3_DRV_setQdmaTrigWord |
|
CA35.5284万 |
EDMA3_DRV_UNchainChannel |
|
CA35.5454万 |
EDMA3_DRV_setPaRAM |
|
CA35.5404万 |
EDMA3_DRV_setQdmaTrigWord |
|
CA3555B8. |
EDMA3_DRV_getPaRAM |
|
CA35.557万 |
EDMA3_DRV_setPaRAM |
|
CA3.5571万C |
EDMA3_DRV_setPaRAM结束 |
|
CA3556D4 |
EDMA3_DRV_getPaRAM |
|
CA3558C |
EDMA3_DRV_getPaRAM结束 |
|
CA35.5838万 |
EDMA3_DRV_setPaRAM结束 |
|
CA355A28 |
EDMA3_DRV_setPaRAMField |
|
CA3559A8 |
EDMA3_DRV_getPaRAM结束 |
|
CA355F9C |
EDMA3_DRV_getPaRAMField |
|
CA355B44 |
EDMA3_DRV_setPaRAMField |
|
CA35.639万 |
EDMA3_DRV_setEvtQPriority |
|
CA3560B8. |
EDMA3_DRV_getPaRAMField |
|
CA35.6534万 |
EDMA3_DRV_mapChToEvtQ |
|
CA3564AC |
EDMA3_DRV_setEvtQPriority |
|
CA35.6788万 |
EDMA3_DRV_getMapChToEvtQ |
|
CA35.665万 |
EDMA3_DRV_mapChToEvtQ |
|
CA35.692万 |
EDMA3_DRV_setCCRegister |
|
CA3568A4 |
EDMA3_DRV_getMapChToEvtQ |
|
CA356A40 |
EDMA3_DRV_getCCRegister |
|
CA356A3C |
EDMA3_DRV_setCCRegister |
|
CA356B1C |
EDMA3_DRV_waitAndClearTcc |
|
CA356B5C |
EDMA3_DRV_getCCRegister |
|
CA356C94 |
EDMA3_DRV_checkAndClearTcc |
|
CA356C38 |
EDMA3_DRV_waitAndClearTcc |
|
CA356E40 |
EDMA3_DRV_getPaRAMPhyAddr |
|
CA356DB0 |
EDMA3_DRV_checkAndClearTcc |
|
CA356F98 |
EDMA3_DRV_ioctl |
|
CA356F5C |
EDMA3_DRV_getPaRAMPhyAddr |
|
CA3570B4 |
EDMA3_DRV_getInstHandle |
|
CA3570B4 |
EDMA3_DRV_getInstHandle |
|
CA3581B0 |
EDMA3_DRV_registerTccCb |
|
CA3571D0 |
EDMA3_DRV_registerTccCb |
|
CA3.5744万. |
EDMA3_DRV_UNregisterTccCb |
|
CA3572抄送 |
EDMA3_DRV_UNregisterTccCb |
|
CA35.7494万 |
EDMA3_DRV_setTcErrorInt |
|
CA35.746万 |
EDMA3_DRV_setTcErrorInt |
|
CA3.5766万C |
EDMA3_DRV_getChannelStatus |
|
CA3575B0 |
EDMA3_DRV_getChannelStatus |
|
CA35.7998万 |
EDMA3_DRV_mapTccLinkCh |
|
CA35.7788万 |
EDMA3_DRV_mapTccLinkCh |
谢谢!
戴夫