0

假设我有三个 C 目标文件:po、qo、ro,我想用它们创建一个库。第一个对象文件 po 有几个我想导出的函数,这些函数是使用其他两个对象(qo、ro)实现的。现在我想要这样,当与这样的库链接时,应该只看到 po 中的函数,而没有其他函数,因为它们的符号可能与主项目中的其他对象发生冲突。例如,qo 可能具有 po 需要的某些函数 f(),但这可能与在主项目中实现的某些 f() 发生冲突,这些 f() 在其他库中与该库链接。我怎样才能使用 gcc 做到这一点?

4

2 回答 2

0

You can use GCC`s visibility feature to hide symbols that are not supposed to be exported. Alternatively, re-factor your library source code in such a way that functions are declared as static and so are not exported beyond the translation unit.

于 2011-06-07T19:15:01.567 回答
0

You need to set visibility for your functions: Controlling Symbol Visibility

于 2011-06-07T19:16:40.540 回答