加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

如何在静态库中隐藏对象文件名?

发布时间:2020-12-14 19:12:57 所属栏目:百科 来源:网络整理
导读:我想提供一个C静态库并尽可能地隐藏内部实现.我在我的代码上使用代码混淆器,这对于使符号对人类来说难以理解非常有效.我正在使用 xcode 4,我假设它有GCC之类的标志. 我的问题是我的图书馆仍然包含我想隐藏或让人难以理解的可读信息: 1-目标文件名: ?????当
我想提供一个C静态库并尽可能地隐藏内部实现.我在我的代码上使用代码混淆器,这对于使符号对人类来说难以理解非常有效.我正在使用 xcode 4,我假设它有GCC之类的标志.

我的问题是我的图书馆仍然包含我想隐藏或让人难以理解的可读信息:

1-目标文件名:
?????当我在.a上运行nm时,我仍然可以看到每个目标文件的名称. (即myObect1.o myObject2.o等).有没有办法从我的.a中删除这些名称?

2-文件路径:
??当我在我的库上运行字符串时,我仍然看到头文件的路径以及一些.c文件路径(包含在#include中).有没有办法删除这些. (GCC旗帜或其他方式)?

谢谢你的帮助,

巴巴

ps:我知道nm和字符串,但是如果你知道任何其他工具,或者如果你能建议我应该检查的任何其他东西,我的.a中都有正确的隐藏,欢迎提出所有建议.

解决方法

考虑像SQLite那样分发合并: http://www.sqlite.org/amalgamation.html.换句话说,不是库,而是分发单个.o文件和单个.h文件.

您必须将内部函数注释为静态.这也将为编译器提供进一步优化的机会. Lua使用这样的注释.参见例如http://www.lua.org/source/5.1/ldo.h.html.对于合并,LUAI_FUNC被定义为静态.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读