小编Oli*_*ans的帖子

从C静态库中删除内部符号

我正在研究一些作为静态库提供的嵌入式代码.我们希望从库中删除所有内部符号,并仅保留API符号可见.

这是我们想要做的一个例子:假设你有一个被调用的文件internal.c和一个被调用的文件api.c:

/* internal.c */

int fibonacci(int n)
{
    /* Compute the nth Fibonacci number and return it */
}


/* api.c */

#include "internal.h"
#include <stdio.h>

void print_fibonacci(n)
{
    printf("Fibonacci(%d): %d\n", n, fibonacci(n));
}
Run Code Online (Sandbox Code Playgroud)

用户应该只能访问该print_fibonacci功能,而所有内部符号(如fibonacci功能)应在发货前解决.这意味着用户应该能够定义自己的函数,fibonacci而不必担心与库的冲突.

我们已经尝试使用内部链接ld --relocatable,但我们似乎无法使用objcopy删除符号.这有可行吗?

谢谢您的帮助!

编辑:用户定义的fibonacci函数不应该替换库定义的函数,它们应该只能共存.基本上我正在寻找解决命名冲突的解决方案.

c linker binaryfiles static-libraries

7
推荐指数
1
解决办法
1678
查看次数

标签 统计

binaryfiles ×1

c ×1

linker ×1

static-libraries ×1