mor*_*ous 14 c c++ ubuntu shared-libraries
我正在Ubuntu 9.10上构建一个共享库.我想从库中只导出我的一部分函数.在Windows平台上,这将使用模块定义(.def)文件来完成,该文件将包含从库中导出的函数的外部和内部名称的列表.
我有以下问题:
如何将共享库的导出函数限制为我想要的(即等效的.def文件)
以.def文件为例,您可以为函数提供一个与其内部名称不同的外部名称(对于防止名称冲突和重新修饰损坏的名称等非常有用)
在Windows上我可以使用EXPORT命令(IIRC)来检查导出的函数和地址列表,在Linux上执行此操作的等效方法是什么?
CB *_*ley 11
仅在linux上的共享对象中显示某些符号的最常见方法是-fvisibility=hidden将gcc 传递给gcc,然后装饰要用于显示的符号__attribute__((visibility("default"))).
如果您正在寻找像解决方案这样的导出文件,您可能需要查看--retain-symbols-file=FILENAME可能正在寻找的链接器选项.
我不知道从函数名称导出具有不同名称的函数的简单方法,但可能使用精灵编辑器. 编辑:我认为您可以使用链接描述文件(查看ld的手册页)在链接步骤中为符号赋值,从而为给定函数提供替代名称.请注意,我从未尝试过这个.
要查看共享对象中的可见符号,可以使用该readelf命令.readelf -Ds如果我没记错的话.
| 归档时间: |
|
| 查看次数: |
8177 次 |
| 最近记录: |