提问人:personal_cloud 提问时间:11/12/2023 最后编辑:personal_cloud 更新时间:11/12/2023 访问量:25
gcc 链接器:KEEP 不保留该部分
gcc linker: KEEP is not keeping the section
问:
我正在使用 MAX32660 SDK 中的链接器脚本,其中包括以下内容:
SECTIONS {
.text :
{
_text = .;
KEEP(*(.isr_vector))
*(.text*) /* program code */
*(.rodata*) /* read-only data: "const" */
KEEP(*(.init))
KEEP(*(.fini))
/* C++ Exception handling */
KEEP(*(.eh_frame*))
_etext = .;
} > FLASH
该部分在以下程序集代码中定义:isr_vector
.section .isr_vector
.align 2
.globl __isr_vector
__isr_vector:
.long __StackTop /* Top of Stack */
.long Reset_Handler /* Reset Handler */
其中初始化内存,设置设备配置,并调用。Reset_Handler
main()
不幸的是,在某些情况下(例如,没有导入 SDK 函数),除非我包含链接器选项,否则整个程序都会被优化(二进制文件大小为 0)。为什么需要此选项?这不是多余的吗,因为我已经有了?main()
-u__isr_vector
KEEP(*(.isr_vector))
(我不确定是仅适用于部分还是也用于符号......我也试过了,但我仍然需要。KEEP
KEEP(*(.isr_vector*))
KEEP(*(.isr_vector.*))
-u__isr_vector
答: 暂无答案
评论
.section .isr_vector,"a",@progbits
@
@
-S -fdata-sections
*.s