linux和macOS的局部符号可以用strip去掉,但全局符号不可以,以下为去掉(或保留)全局符号的方法
Linux
加入编译选项:
"-Wl,--retain-symbols-file=retain.txt -Wl,--version-script=symver.txt"
示例1:去掉所有符号
symver.txt内容:
{
local: *;
};
retain.txt内容(空):
示例2:保留部分符号
symver.txt内容:
{
global:
function1;
function2;
local: *;
};
retain.txt内容:
function1
function2
macOS
对于执行程序,若要去除所有符号,直接:
strip <filename>
对于动态库dylib,加入编译选项:
"-Wl,-exported_symbols_list export.txt"
export.txt内容:
_function1
_function2
注:这是符号名,不是原函数名,可以使用nm工具查看函数对应的符号
本文来自投稿,不代表本站立场,如若转载,请注明出处:https://typecho.firshare.cn/archives/901.html
免责声明:文章内容不代表本站立场,本站不对其内容的真实性、完整性、准确性给予任何担保、暗示和承诺,仅供读者参考,文章版权归原作者所有。避免网络欺诈,本站不倡导任何交易行为。如您私自与本站转载自公开互联网中的资讯内容中提及到的个人或平台产生交易,则需自行承担后果。本站在注明来源的前提下推荐原文至此,仅作为优良公众、公开信息分享阅读,不进行商业发布、发表及从事营利性活动。如本文内容影响到您的合法权益(内容、图片等),请及时联系本站,我们会及时删除处理。