Linker arm none eabi ld带有-z muldefs,符号优先级

Linker arm none eabi ld带有-z muldefs,符号优先级,linker,linker-scripts,linker-flags,Linker,Linker Scripts,Linker Flags,我正在使用arm none eabi ld链接一组特定嵌入式体系结构的对象文件(具体来说是Gameboy Advance)——我必须引用一组已经定义的符号,以实现我根据定义这些符号的脚本进行链接(例如整数除法,但结构/结构数组等也在其中) 出于我的目的,存在一个链接器脚本,它已经预定义了一组符号,并且可以用作某种“共享链接器脚本”,以便构建不同的项目并将其集成到另一个项目中。问题是,它还定义了一组我要在源文件中重新定义的符号。举个实际例子: 链接器脚本定义了pokemon\u front\u s

我正在使用arm none eabi ld链接一组特定嵌入式体系结构的对象文件(具体来说是Gameboy Advance)——我必须引用一组已经定义的符号,以实现我根据定义这些符号的脚本进行链接(例如整数除法,但结构/结构数组等也在其中)

出于我的目的,存在一个链接器脚本,它已经预定义了一组符号,并且可以用作某种“共享链接器脚本”,以便构建不同的项目并将其集成到另一个项目中。问题是,它还定义了一组我要在源文件中重新定义的符号。举个实际例子:

链接器脚本定义了
pokemon\u front\u sprites
(这是一个类型为
void*
)的数组),但我也定义了
pokemon\u front\u sprites
,因此我决定使用
-z muldefs
进行编译,以避免这种情况。当然,如果这两个符号指向不同的数据,就会出现问题


现在我的问题如下:我能告诉ld我更喜欢我的符号而不是预定义的符号吗?我能在链接
-T
时分配优先级吗?

不确定我是否正确理解您想要的,但假设您想在链接器脚本中定义符号,如果并且仅当它在别处还没有定义时,
提供()
应该允许这样做。因此,如果您当前有
口袋妖怪\u front\u sprites=…
,请将其更改为
提供(pokemon_front_sprites=…
是的,是的,我想就是它了,谢谢Bunchn不确定我是否正确理解了你想要的,但是假设你想在链接器脚本中定义一个符号,如果并且只有在其他地方还没有定义它,
提供()
应该允许这样做。所以如果你现在有
pokemon\u-front\u-sprites=…
的话,把它改成
PROVIDE(pokemon\u-front\u-sprites=…
是的,是的,我想就是它了,谢谢大家