有没有办法从链接描述文件中的特定部分中排除函数/符号?

时间:2017-04-07 00:17:42

标签: linker-scripts

我已使用EXCLUDE_FILE显式省略将某些目标文件的某些部分放在我想要生成的主对象文件中。我想知道是否有办法省略一个特定的符号而不是整个部分。

示例:

假设我有一个库a.lib,它包含1.o,2.o和3.o以及.text和.data部分。 1.o的.text部分包含func1,func2和func3。

使用EXCLUDE_FILE,我只能省略1.o中的整个.text或.data部分。我希望能够省略func1并放置func2和func3。这可能吗?

1 个答案:

答案 0 :(得分:2)

如果你使用GCC,你可以将你的功能放在一个单独的部分。并使用链接描述文件移动或省略该部分。

int f3(void) __attribute__((section(".excl")));

int f3(void) {

    ...
}

这些告诉GCC将f3编译成.excl部分。然后使用链接器脚本,您可以将其放在其他位置。

SECTIONS
{
    .text : 
    {
        *(.text)
    }
    ....
    .excl : 
    {
        *(.excl)
    }
}