【问题标题】:blackfin gcc-toolchain linking error undefined reference to `Ret_Add'blackfin gcc-toolchain 链接错误未定义对“Ret_Add”的引用
【发布时间】:2011-10-31 14:55:09
【问题描述】:

以下讨论:

https://blackfin.uclinux.org/gf/project/uclinux-dist/forum/?_forum_action=ForumMessageBrowse&thread_id=46813&action=ForumBrowse&forum_id=39

我正在将 VDSP 编译器的 FFT 算法转换为裸机应用程序以在核心 B 上运行并让 uclinux 在核心 A 上运行。我有一个链接错误,我不明白它来自哪里:

调用:'/opt/uClinux/bfin-elf/bin/../bfin-elf/bin/ld.real''-v''-o''test_ad1836_driver''-T''coreb_test_ad1836_driver.lds' '--just-symbol' '../../icc_core/icc' 'queue.o' 'ezkit_561.o' 'heap_2.o' 'port.o' 'tasks.o' 'test_ad1836_driver.o' 'list .o''croutine.o''u​​ser_isr.o''bfin_isr.o''app_c.o''context_sl_asm.o''cycle_count.o''CFFT_Rad4_NS_NBRev.o''-Ttext''0x3c00000''-L'' /opt/uClinux/bfin-elf/bfin-elf/lib''-L''/opt/uClinux/bfin-elf/bfin-elf/lib''-lc' GNU ld 版本 2.17 cycle_count.o:在函数Compute_Cycle_Count': /home/william/Development_new/Music_Recognition/code/uCLinux/uclinux-dist/user/blkfin-apps/icc_utils/example/DSP_imp/CFFT_Rad4_NS_NBRev/corea/cycle_count.asm:22: undefined reference toRet_Add' /home/william/Development_new/Music_Recognition/code/uCLinux/uclinux-dist/user/blkfin-apps/icc_utils/example/DSP_imp/CFFT_Rad4_NS_NBrev/corea/cycle_count.asm:23:未定义引用Ret_Add' /home/william/Development_new/Music_Recognition/code/uCLinux/uclinux-dist/user/blkfin-apps/icc_utils/example/DSP_imp/CFFT_Rad4_NS_NBRev/corea/cycle_count.asm:27: undefined reference toSave_R7' /home/william/Development_new/Music_Recognition/code/uCLinux/uclinux-dist/user/blkfin-apps/icc_utils/example/DSP_imp/CFFT_Rad4_NS_NBrev/corea/cycle_count.asm:28:未定义引用Save_R7' /home/william/Development_new/Music_Recognition/code/uCLinux/uclinux-dist/user/blkfin-apps/icc_utils/example/DSP_imp/CFFT_Rad4_NS_NBRev/corea/cycle_count.asm:44: undefined reference toSave_R7' /home/william/Development_new/Music_Recognition/code/uCLinux/uclinux-dist/user/blkfin-apps/icc_utils/example/DSP_imp/CFFT_Rad4_NS_NBrev/corea/cycle_count.asm:45:未定义引用Save_R7' /home/william/Development_new/Music_Recognition/code/uCLinux/uclinux-dist/user/blkfin-apps/icc_utils/example/DSP_imp/CFFT_Rad4_NS_NBRev/corea/cycle_count.asm:48: undefined reference toRet_Add' /home/william/Development_new/Music_Recognition/code/uCLinux/uclinux-dist/user/blkfin-apps/icc_utils/example/DSP_imp/CFFT_Rad4_NS_NBrev/corea/cycle_count.asm:49:未定义对“Ret_Add”的引用

代码如下:

.section l1.data;
.align 4;
.var _Ret_Add =0;
.var _Save_R7 =0;

.section l1.text;
.global _Compute_Cycle_Count;
.align 8;
_Compute_Cycle_Count: P0.L = _Ret_Add;
P0.H = _Ret_Add;
R3 = RETS;
[P0] = R3;

    P0.L = _Save_R7;                                                       
    P0.H = _Save_R7;                                                       
    [P0] = R7; 

........

谢谢

威廉

【问题讨论】:

  • 呃...你真的相信提出这个问题是为了激发人们阅读它吗??

标签: gcc linker undefined assembly vdsp


【解决方案1】:

您的代码中没有 _Ret_Add_Save_R7 声明以供 GNU 汇编器理解。你应该把它从 VDSP asm 移植到 GNU asm:

_Ret_Add: .int 0;

或者如果您更喜欢保持向后兼容:

.if defined (__GNUC__)
_Ret_Add:
.int 0;
.else
.var _Ret_Add =0;
.endif

看看this

【讨论】:

  • 太棒了!!有道理。谢谢 pmod。代码现在编译。对于问题演示,我认为我提供了所有信息:上下文、编译器输出和相关代码。我虽然这样理解更清楚。让我知道一种更好、更有吸引力的方式来提出这类问题,以便我改进。再次感谢
  • 很高兴能帮上忙。您可以清理问题以删除不相关的长路径名
猜你喜欢
  • 1970-01-01
  • 2014-03-04
  • 1970-01-01
  • 2021-07-18
  • 1970-01-01
  • 2010-11-08
  • 2012-09-04
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多