【Green Hills】GHS-库文件调用函数遗失问题

1、 文档背景

工程中源代码编译生成J6_MCU_DEBUG.map文件,文件内可以看到相应shell_mcu_version_show的调用信息,但将该工程代码打包成J6_MCU_DEBUG.a文件,发现该.a文件在link后的app.Map文件内没有shell_mcu_version_show的相关地址和调用信息。

2、软硬件环境

1)、软件版本:Mutil 8.14 Compiler 2024.1.5

2)、电脑环境:Windows 11

3)、外设硬件:无


3、操作步骤

1)、示例工程下载链接如下,该工程内包含了调用的库文件和相关编译脚本,下列文档根据该工程进行示例撰写

http://www.emdoor.cloud:4000/sharing/ZzxoGbi


2)、客户提供的link参数如下,客户使用-external_file参数未进行执行,参数命令撰写方式无法执行。



3)、详解-external_file的使用,该指令强制从指定的库中拉入每个导出的符号,而不是只拉入所需的符号。

若有相关多个库文件使用-l进行相隔。示例如下:

-extractall=.UssSDK.a -l.J6_MCU_DEBUG.a ^



4)、将-extractall=.UssSDK.a -l.J6_MCU_DEBUG.a 放置在Mapfile_type后进行执行,并且修改添加

-extractall=.J6_MCU_DEBUG.a .ldlink.ld -lnk=-v进行Link 信息检查。



4)、运行成功后,我们在项目中看到新的Map文件,并进入查看,可以看到有shell_mcu_version_show的调用信息。