This thread has been locked.
If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.
工具/软件:Code Composer Studio
您好!
我一直在尝试将我的旧项目从 CCS4迁移到最新的 CCS6、CCS7和 CCS8、所有这些都显示了此链接错误。 我已经使用 CCS 工作了一段时间、不确定如何解决这个问题。 任何见解都值得赞赏。
"./lnk_msp430f5419a.cmd"、第149行:警告:链接器命令文件没有
TYPE=VECT_INIT 的段、但确实包含.intXX 段。 该文件可能会
过时。 为所有.intXX 段生成中断指针。 。
如果没有其他处理程序、则将使用 RTS 中提供的默认处理程序
找到。 建议您将链接器命令文件更新到
最新版本。
警告:创建不带 SECTIONS 规范的输出段".data"
未定义的首次引用
符号
------ --------
_cinit__/library/autoinit.obj
__PinIT__./library/autoinit.obj
错误:未解析的符号仍然存在
错误:链接期间遇到错误;未构建"ELT_4000.out"
>>编译失败
Makefile:180:目标'ELT_4000.out'的配方失败
Gmake:***[ELT_4000.OUT]错误1
gmake:目标"全部"不会由于错误而重新生成。
****构建完成****
[引用 user="snuk">未定义的首次引用
符号
------ --------
_cinit__/library/autoinit.obj
__PinIT__./library/autoinit.obj [/quot]
我仍然不确定。 但我怀疑您在未意识到这一点的情况下、已从旧的 COFF ABI 更改为 EABI。 这两者之间有许多不同之处。 有关 EABI 的介绍、请参阅 本文。 然后了解 COFF ABI 是较旧版本。
您还可以看到自己提供了启动代码的实现。 COFF ABI 和 EABI 之间的启动代码非常不同。 如果这个猜测是正确的、那么最好改为使用 TI RTS 库中提供的启动代码。
谢谢、此致、
乔治
是的、我意识到 COFF 格式已更改为 EABI 格式、这是编译器版本15.3.0或更高版本的唯一选项(我使用的是编译器版本18.1.3.LTS 的 CCS8)。 我没有意识到这一变化的全部影响。 正如我在上面提到的、我为解决编译问题所做的是在 CCS8中创建一个没有 main.c 的新裸项目、并复制我的所有源文件和头文件(包括链接器文件上的 main.c 和一些模板)。 它现在可以编译、但您是否预见到这会有问题? 感谢您的帮助!
[引用 user="snuk"]在不带 main.c 的 CCS8中创建新的裸项目,并复制了我的所有源文件和头文件(包括链接器文件上的 main.c 和一些模板)[/quot]
这是最好的方法。 尽管我不建议将链接器命令文件更改为任何人。 并不是很困难。 但它确实需要对链接器命令文件语法具有良好的实用知识。 此外、请确保在 RTS 库中使用编译器附带的启动例程。
谢谢、此致、
乔治
[引用 user="snuk"]如何确保正在使用启动例程?[/quot]
查看映射以确保启动代码来自编译器随附的 RTS 库。 您应该看到类似于...的行
00005c00 0000001c rts430x_lc_rd_eabi.lib:boot.c.obj (.text:_isr:_c_int00_noargs)
00010000 00000076 rts430x_lc_rd_eabi.lib:copy_decompress_lzss.c.obj (.text:decompress:lzss:_TI_decompress_lzss) 00010076 00000054 :autoinit.c.obj (.text:__TI_auto_init_nobinIT_nopinit_hold_wdt:__TI_auto_init_nobinIT_nopinit_hold_wdt)
谢谢、此致、
乔治
是的、我可以确认这一点。 感谢您的帮助!