ZHCUAV7Z september 1995 – march 2023 66AK2E05 , 66AK2H06 , 66AK2H12 , 66AK2H14 , AM1705 , AM1707 , AM1802 , AM1806 , AM1808 , AM1810 , AM5K2E04 , C346BA02 , C348A01 , CS241C01-Q1 , CS241C05-Q1 , CS246C01-Q1 , CS348C02-Q1 , OMAP-L132 , OMAP-L137 , OMAP-L138 , S470AV336LYSQRB , TMS470R1A288 , TMS470R1A384 , TMS470R1A64 , TMS470R1B1M , TMS470R1B512 , TMS470R1B768
弱符号定义是有效的定义,但如果在链接时找到此类定义,则会丢弃该定义,取而代之的是非弱定义。您可以在链接器命令文件中定义弱符号 C/C++。
在 C/C++ 中,按如下所示定义弱符号:
__attribute__((weak)) int bar;
在链接器命令文件中,可使用 MEMORY 或 SECTIONS 指令之外的赋值表达式来确定由链接器定义的符号。若要在链接器命令文件中定义弱符号,请在赋值表达式中使用“弱”运算符来指定可以从输出文件的符号表中删除该符号(如果该符号未被引用)。例如,可将“ext_addr_sym”定义如下:
weak(ext_addr_sym) = 0x12345678;
当使用链接器命令文件执行最终链接时,“ext_addr_sym”会作为弱绝对符号呈现给链接器。如果未引用此符号,它便不会包含在生成的输出文件中。