c-将具有冲突内部符号的独立程序部分链接到一个可执行文件中



我正在进行一个微控制器项目,其中两个核心通过一些共享内存进行通信。现在我的任务是为这个项目创建一个桌面构建,以便更快地调试和测试代码。

一般过程很简单:存根特定于硬件的函数,用预先分配的数组替换共享内存,编写模拟启动调用的main。所有这些都已经完成了,我现在有两个静态库,每个核心一个。链接可执行文件时会出现问题。

问题:两个核心都有一些名称相同但内容不同的功能,导致一个核心与另一个核心的代码链接。遗憾的是,不能简单地更改函数名。

当前想法:我想我需要的是一种链接方式,其中每个核心的代码都倾向于与";它自己的符号";,在链接到所有其他符号之前。。。

如果不可能的话,你能帮助我吗?

附加约束:必须使用clang进行编译,必须是一个最终中的可执行文件

感谢@n.1.8e9-where’s-my-sharem为我指明了正确的方向。

通过使用一个简单的脚本扩展我的构建链,我能够成功地构建和执行:

  1. 获取两个核心的静态库,并在它们上运行objdump -t以提取符号表
  2. 从两个表中提取所有全局符号
  3. 计算集合交集以获得两个存档中出现的所有符号
  4. 编写objcopy --redefine-syms要使用的映射文件,并执行命令重写其中一个库中的符号

相关内容

最新更新