节整理资料时,发现了这个,是两年前在 LOVEUNIX 上的回帖。自己都忘了,贴在这里

做个备份。

linux 也有导出文件。不用特定的扩展名,且不是在 gcc 中指定参数,而是在 ld 中。

写一个导出符号文件,如 symbol 指定你只导出的函数,如 func1。使用 ld 的

--retain-symbols-file  参数可以在 static section 里取消 func1 以外的所有函数。这

时你用 readelf 看编译好后的 .so 文件 static section 里没有了,使用 nm 看 .so

文件它无法查出导出函数。但这并不完全。因为在 dynamic section 里还是会看

到所有符号被导出。如果想在 .dynsym 这个 section 里也不让他导出的话,需要

再编写一个 script 文件。 指定 global 与 local 在 global 中指定你要导出的函数,简单的

格式如下:

{

global: 导出函数名;

local: *;

};

其中symbol文件的格式是:

一行一个函数名。

需要注意的是.c文件在生成.o文件时,需要制定-fPIC参数。

eg:gcc -c -fPIC test.c

这时生成的test.o才可以。

再在 ld 时用 --version-script  选项来 load 你 文件。都完事后再使用 readelf 观察

static 与 dynamic section 发现只导出了你指定的函数名即符号。

例:

ld -shared --retain-symbols-file  符号文件 --version-script  脚本文件 -o 动态库文件.so filename.o

Linux导出函数控制,linux 下仅导出指定函数的方法相关推荐

  1. linux mysql数据库优化_MySQL_Linux下MySQL数据库性能调优方法,以下的环境具备一定的代表性 - phpStudy...

    Linux下MySQL数据库性能调优方法 以下的环境具备一定的代表性,可以说是中小企业一般配置和工作环境.希望通过本文能让大家理解Linux下MySQL数据库性能调优方法. 硬件准备环境: 硬盘: 1 ...

  2. vnc连接linux使用教程_linux系统下vnc 的配置和使用方法

    linux系统下vnc 的配置和使用方法 发布时间:2013-06-01 17:35:28   作者:佚名   我要评论 VNC基本上是由两部分组成:一部分是客户端的应用程序(vncviewer):另 ...

  3. linux sleeping进程多_Linux下找出吃内存的方法总结

    linux下查询进程占用的内存方法总结,假设现在有一个「php-cgi」的进程 ,进程id为「25282」.现在想要查询该进程占用的内存大小.linux命令行下有很多的工具进行查看,现总结常见的几种方 ...

  4. QQ For Linux在Ubuntu 9.10下经常自动退出的解决方法

    因为学习需要,最近用上了ubuntu 9.10.可是却发现qq for linux总是莫名其妙的自己退出.今天忍受不了了,上网找答案.原来不是我人品的问题.最终从下面这文章中找到了解决方法. 原文如下 ...

  5. linux忘记mysql密码_Linux下忘记Mysql密码的找回方法(图)

    Mysql隔一段时间不访问,也许你会忘记访问密码,这时该怎么办,重装mysql吗?这个代价也太大了,我们这里介绍两种恢复密码的方法. 方法一:因为Mysql密码存储于数据库mysql中的user表中, ...

  6. linux/usr/src/kernels 目录下没有内核源码 解决方法

    有时我们在安装系统后,发现没有安装当前系统的内核源码在/usr/src/kernels目录下,其实我们是少安装了一个rpm包: 当你配置好yum源后,然后安装下面的包就可以了: 针对CentOS系统: ...

  7. linux服务器没网情况下手动安装软件几个方法

    1,找到一个有网的服务器,使用yumdownloader gcc,获取需要的rmp包: 2,在http://pkgs.org 下下载所需要的rpm包 转载于:https://www.cnblogs.c ...

  8. Hive函数(内置函数(字符串函数,数学函数,日期函数,集合函数,条件函数,聚合函数,表生成函数)和自定义函数(自定义函数创建流程,临时函数,永久函数)))(四)

    Hive函数(内置函数和自定义函数) 一.内置函数 1.字符串函数 (1)ascii (2)base64 (3)concat (4)concat_ws (5)format_number (6)subs ...

  9. linux查看动态库导出的符号,Linux下控制动态库导出

    在Linux中动态库的确给程序带来了良好的扩充性,并减少了内存的使用量,但这是有代价的.例如: #include Int main(int argc, char *argv[]) { Printf(& ...

最新文章

  1. java 11-7String类里的方法的一些案例
  2. 导入Excel和CSV文件
  3. 基于DVB-T标准,COFDM调制系统的利用导频信号进行符号粗同步
  4. 20155210 Exp5 MSF基础应用
  5. Java高并发系列 — AQS
  6. leetcode1169. 查询无效交易
  7. 自考那些事儿(四):软件开发工具(理论篇)
  8. 人群与网络:网络流量博弈,拍卖、匹配市场
  9. python中的turtle如何运行_python中turtle库的简单使用教程
  10. Seaborn可视化 -- 分类统计图seaborn.catplot
  11. 最新数据库可视化工具DataGrip安装教程
  12. 图文详解YUV420数据格式
  13. BATT入局,小程序成超级APP连接一切的枢纽
  14. 后缀学习第三课(下)
  15. JavaWeb学习day02
  16. 应该怎么学大数据?该从哪学起?
  17. 最新android版本叫什么,Android版本今年将大更新,迈入10.0时代,新特性曝光
  18. 【JS逆向】无限debugger实战之八仙过海,各显神通。
  19. C++逆序数(奇排列和偶排列的判定)
  20. 2022-04-14每日刷题打卡

热门文章

  1. 利用SQL查找表中的质数(prime number)和完全数(perfect number)以及几个有趣的SQL语句...
  2. 深入解读ESB与SOA的关系
  3. 老板思维:有支出必须有对应的收入
  4. 如何请教问题且以后都会回答你的方法
  5. kafka java获取topic_通过编程方式获取Kafka中Topic的Metadata信息
  6. SSIA的完整形式是什么?
  7. 面试官:怎么解决MySQL中的死锁问题?
  8. 游标迭代器(过滤器)——Scan
  9. Spring Boot 最佳实践(二)集成Jsp与生产环境部署
  10. MS SQL查询库、表、列数据结构信息汇总