You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在C/C++可执行文件中仅导出指定单个动态符号?

仅导出单个特定符号的解决方案

用链接脚本精准控制(推荐)

这是最直接的方式,能完全按照要求只导出指定符号:

  1. 写一个链接脚本文件,比如命名为export_syms.script,内容如下:
{
    global:
        my_target_symbol;  # 把这里换成你要导出的符号名
    local:
        *;  # 把所有其他符号设为局部,不对外暴露
};
  1. 编译时带上这个脚本,示例编译命令:
gcc -fvisibility=hidden -Wl,--version-script=export_syms.script your_code.c -o your_executable
  • -fvisibility=hidden:让编译器默认隐藏所有符号
  • --version-script:告诉链接器用我们写的脚本控制符号可见性

验证结果

编译完成后,用nm -D your_executable查看动态符号表,你会发现只有指定的符号被导出,那些像__libc_csu_init、_start这类多余符号都会被隐藏。

补充:动态符号表里的__libc_start_main是未定义的外部依赖符号,不是我们程序导出的,属于正常现象,不影响dlsym操作。

内容的提问来源于stack exchange,提问作者kalyan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.13 19:35:59