1

我的项目有几个具有项目内部功能的目标文件,以及一个为公共接口公开功能的目标文件。我的目标是使用增量链接将所有目标文件合并到一个文件中,并让这个文件只公开公共接口所需的符号。

foo.c,公共接口。

void bar(void);

void foo(void)
{
    bar();
}

bar.c,项目内部函数。

void bar(void)
{
}
$ gcc -c foo.c
$ gcc -c bar.c
$ ld -r -o combined.o foo.o bar.o
$ strip -N bar combined.o  
strip: not stripping symbol `bar' because it is named in a relocation

这两个函数已经是同一目标文件中同一段的一部分,所以我相信应该可以在链接步骤中解决重定位问题?是否可以更改ld命令以便不需要重定位?

4

0 回答 0