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.
工具/软件:TI C/C++编译器
我目前正在尝试为malloc编写自定义定义,根据我所读的内容,我不应该为该编译器做任何特殊的事情。 我可以在使用同一编译器的另一个项目中重新定义它,但是对于这个项目,它给我带来了以下错误:
错误:重新定义符号"_sys_memory":首先在"debug\src\memory.obj"中定义;
在中重新定义
"C:5.2 /ti/ccsv6/tools/compiler/ti-CGT-arm_eabi.6\lib/rtsv7R4_a_be_v3D16_eabi.lib
<memory.obj>"
错误:重新定义符号"malloc":首先在"debug\src\memory.obj"中定义;
在中重新定义
"C:5.2 /ti/ccsv6/tools/compiler/ti-CGT-arm_eabi.6\lib/rtsv7R4_a_be_v3D16_eabi.lib
<memory.obj>"
>>编译失败
>>编译失败
scons:由于错误导致构建终止。
错误:链接期间遇到错误;未生成"debug\my_out
错误:重新定义符号"_sys_memory":首先在"debug\src\memory.obj"中定义;
在中重新定义
"C:5.2 /ti/ccsv6/tools/compiler/ti-CGT-arm_eabi.6\lib/rtsv7R4_a_be_v3D16_eabi.lib
<memory.obj>"
错误:重新定义符号"malloc":首先在"debug\src\memory.obj"中定义;
在中重新定义
"C:5.2 /ti/ccsv6/tools/compiler/ti-CGT-arm_eabi.6\lib/rtsv7R4_a_be_v3D16_eabi.lib
<memory.obj>"
错误:链接期间遇到错误;未生成"debug\my_out
它似乎看到了我的定义和图书馆的定义,并不选择我的定义。 我尝试了'-x'和'-priority'标志,但没有任何改变。 我甚至更改了包括,链接和源文件的顺序以与我的其他项目匹配,但未解决问题。
最可能的解释... 其他一些文件调用在RTS MEMORY.OBJ中定义的函数,而该函数未在自定义MEMORY.OBJ中定义。 可能的示例包括calloc和realloc。 这将使RTS MEMORY.OBJ进入链接。 反过来,这会导致这些符号重新定义的诊断。
要识别所有可能的问题符号,您需要知道RTS MEMORY.OBJ中定义了哪些全局符号。 首先,使用类似于...的命令从库中提取memory.obj。
% armar -x C:/ti/ccsv6/tools/compiler/ti-CGT-arm_arm_memory.6/lib/rtsv7R4_a_be_v3D16_eabi.lib 5.2 memory.obj
然后,查看memory.obj中定义了哪些全局符号...
% armnm -g memory.obi00000000 w Lib$request$$armlib 0万 w Lib$request$$cpplib 0万 U __SYSMEM_size 0万 D __TI_DW.debug_info.$base_types.c8c38483d660372cd06395436475430b 00000000660372 00000000 D06395436475430 D __TI_DW.debug_info.memory.c.5e26099586665ed842c3e104eedb26f000000000 __TI_DW.debug_info.memory.c.5e26099586665ed842c3e104eedb26f0 0000000026.0995万 00000000 D8.6665万 D __TI_DW.debug_info.stdlib.h.f65beb9c32b827fb8141906f6cc29560000000000 __TI_DW.debug_info.stdlib.h.f65beb9c32b827fb8141906f6cc29560 000000008141906 00000000 U29560 U _lock00000000 _lock 00000000 B alloc sys_memory 0万 U _unlock 0.0003万b3 t calloc 0.0003万 T free 000000000 t minpy 0000000 t 0000000 t m1b 000 t realloc
第一个命令使用归档程序。 第二个使用名称实用程序。 阅读 支撑臂装配工具手册中有关这两种工具的信息。 在armnm输出中,只需担心标有T或B的符号。 T符号是函数。 B符号(只有一个)是变量。 要避免此问题,您的自定义memory.obj需要提供所有这些符号的定义。
谢谢,此致,
-George