背景
我有一组三个几乎相同的静态c库(用 编译-fPIC
),我无法重新编译它们。所有库都导出相同的符号,因此我可以将它们捆绑在一起的唯一方法是通过 为每个静态库修改带有前缀的符号objcopy
,即:
for i in pineapple coconut banana
do
objcopy --prefix-symbols=${i}_ lib${i}.a
done
现在,我有三个具有唯一符号的库,并且可以继续编写一个头文件来处理每个库的三个近乎重复的头文件/API 文件。
问题
只是重命名像这样安全的库的导出符号吗?它是否有任何可能导致运行时稳定性问题的“陷阱”或不可预见的后果?库本身中对符号的所有引用是否都会自动更正,或者是否有一些库代码(除了dlsym()
调用之类的东西)会尝试引用旧符号和段错误?