Linux导出函数控制,linux 下仅导出指定函数的方法
节整理资料时,发现了这个,是两年前在 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 下仅导出指定函数的方法相关推荐
- linux mysql数据库优化_MySQL_Linux下MySQL数据库性能调优方法,以下的环境具备一定的代表性 - phpStudy...
Linux下MySQL数据库性能调优方法 以下的环境具备一定的代表性,可以说是中小企业一般配置和工作环境.希望通过本文能让大家理解Linux下MySQL数据库性能调优方法. 硬件准备环境: 硬盘: 1 ...
- vnc连接linux使用教程_linux系统下vnc 的配置和使用方法
linux系统下vnc 的配置和使用方法 发布时间:2013-06-01 17:35:28 作者:佚名 我要评论 VNC基本上是由两部分组成:一部分是客户端的应用程序(vncviewer):另 ...
- linux sleeping进程多_Linux下找出吃内存的方法总结
linux下查询进程占用的内存方法总结,假设现在有一个「php-cgi」的进程 ,进程id为「25282」.现在想要查询该进程占用的内存大小.linux命令行下有很多的工具进行查看,现总结常见的几种方 ...
- QQ For Linux在Ubuntu 9.10下经常自动退出的解决方法
因为学习需要,最近用上了ubuntu 9.10.可是却发现qq for linux总是莫名其妙的自己退出.今天忍受不了了,上网找答案.原来不是我人品的问题.最终从下面这文章中找到了解决方法. 原文如下 ...
- linux忘记mysql密码_Linux下忘记Mysql密码的找回方法(图)
Mysql隔一段时间不访问,也许你会忘记访问密码,这时该怎么办,重装mysql吗?这个代价也太大了,我们这里介绍两种恢复密码的方法. 方法一:因为Mysql密码存储于数据库mysql中的user表中, ...
- linux/usr/src/kernels 目录下没有内核源码 解决方法
有时我们在安装系统后,发现没有安装当前系统的内核源码在/usr/src/kernels目录下,其实我们是少安装了一个rpm包: 当你配置好yum源后,然后安装下面的包就可以了: 针对CentOS系统: ...
- linux服务器没网情况下手动安装软件几个方法
1,找到一个有网的服务器,使用yumdownloader gcc,获取需要的rmp包: 2,在http://pkgs.org 下下载所需要的rpm包 转载于:https://www.cnblogs.c ...
- Hive函数(内置函数(字符串函数,数学函数,日期函数,集合函数,条件函数,聚合函数,表生成函数)和自定义函数(自定义函数创建流程,临时函数,永久函数)))(四)
Hive函数(内置函数和自定义函数) 一.内置函数 1.字符串函数 (1)ascii (2)base64 (3)concat (4)concat_ws (5)format_number (6)subs ...
- linux查看动态库导出的符号,Linux下控制动态库导出
在Linux中动态库的确给程序带来了良好的扩充性,并减少了内存的使用量,但这是有代价的.例如: #include Int main(int argc, char *argv[]) { Printf(& ...
最新文章
- java 11-7String类里的方法的一些案例
- 导入Excel和CSV文件
- 基于DVB-T标准,COFDM调制系统的利用导频信号进行符号粗同步
- 20155210 Exp5 MSF基础应用
- Java高并发系列 — AQS
- leetcode1169. 查询无效交易
- 自考那些事儿(四):软件开发工具(理论篇)
- 人群与网络:网络流量博弈,拍卖、匹配市场
- python中的turtle如何运行_python中turtle库的简单使用教程
- Seaborn可视化 -- 分类统计图seaborn.catplot
- 最新数据库可视化工具DataGrip安装教程
- 图文详解YUV420数据格式
- BATT入局,小程序成超级APP连接一切的枢纽
- 后缀学习第三课(下)
- JavaWeb学习day02
- 应该怎么学大数据?该从哪学起?
- 最新android版本叫什么,Android版本今年将大更新,迈入10.0时代,新特性曝光
- 【JS逆向】无限debugger实战之八仙过海,各显神通。
- C++逆序数(奇排列和偶排列的判定)
- 2022-04-14每日刷题打卡
热门文章
- 利用SQL查找表中的质数(prime number)和完全数(perfect number)以及几个有趣的SQL语句...
- 深入解读ESB与SOA的关系
- 老板思维:有支出必须有对应的收入
- 如何请教问题且以后都会回答你的方法
- kafka java获取topic_通过编程方式获取Kafka中Topic的Metadata信息
- SSIA的完整形式是什么?
- 面试官:怎么解决MySQL中的死锁问题?
- 游标迭代器(过滤器)——Scan
- Spring Boot 最佳实践(二)集成Jsp与生产环境部署
- MS SQL查询库、表、列数据结构信息汇总