我有一个与 gcc 的链接器有关的问题。
我正在使用嵌入式东西(PIC32),但 PIC32 的编译器和链接器是基于 gcc 的,因此,“常规”gcc 链接器和 PIC32 链接器的主要内容应该是通用的。
为了节省闪存空间(这在微控制器上通常是不够的),我需要在引导加载程序中放置几个大型函数,应用程序应该只通过指针调用这些函数。
所以,我需要在生成的代码中创建向量表。
我正在尝试获取函数的绝对地址并将其写入生成的代码,但仍然出现错误。
在下面的示例中,我试图获取函数的地址_formatted_write
。
代码:
.user_addr_table _USER_ADDR_TABLE_ADDR :
{
KEEP(*(.user_addr_table))
LONG((ABSOLUTE(_formatted_write))); /* _formatted_write is a name of my function */
} > user_addr_table
链接器返回错误:“ unresolvable symbol '_formatted_write' referenced in expression
”。
我注意到如果我写了一些垃圾而不是_formatted_write
,那么它会返回错误“ undefined symbol .....
”,因此,_formatted_write
链接器知道。
这让我觉得我应该执行一些额外的步骤以使其“可解决”。但仍然不知道该怎么做。