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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/551299.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

idea代码补全声明代码_用了这么多年idea,竟然不知道这些代码补全功能

先上图,不知道大家写代码注意到没,因为也没有人告诉我,网上今天才发现这个技巧,所以推荐给大家,如果你知道,那就路过即可。。。if相关定义一个boolean类型的变量flag和一个String类型的变量name来进行测试。…

网站设计软件linux,ubuntu下的网页设计 网页制作软件工具.pdf

ubuntu下的网页设计 网页制作软件工具.pdfubuntu/linux 下的网页设计网页制作软件工具1. Bluefish 是一个基于Gtk 的 HTML 的编辑器,它支持语法加亮,支持HTML 、CSS 、JAVASCRIPT 、Java server pages (JSP) 、Python 、Perl 、SSI 、PHP 、XML 等语言从…

linux安装python2环境_Python基础手册 2 —— Python 环境搭建(Linux)

一、安装python3.4 (CentOS6.5)这里我们选择python3.4版本,首先是因为python3是python发展的趋势,Python2将在2020年被淘汰。其次Python3拥有更好更简洁的语言设计,同时也是因为后期我们的Django项目1.9.5版本适用于python3.4版本。1、 首先我…

Linux复制文件到usb设备中,使用shell脚本实现USB设备的加载与文件复制

使用shell脚本实现USB设备的加载与文件复制在Linux操作系统中,如果插入一个USB设备,需要用mount挂载命令才能实现这个设备的加载,下面写一个USB设备挂载与文件复制的Shell程序,程序需求:www.2cto.com1、运行时&#xf…

getbook netty实战_Netty 入门教程

前言Netty是一个异步事件驱动的网络应用程序框架,用于快速开发可维护的高性能协议服务器和客户端。Netty 是一个广泛使用的 Java 网络编程框架(Netty 在 2011 年获得了Dukes Choice Award,见https://www.java.net/dukeschoice/2011)。它活跃和成长于用户…

linux环型共享内存,Linux system v 共享内存

system v 共享内存#include #include int shmget(key_t key, size_t size, int shmflg);建立:进程与共享内存的关联关系key_t key:16进制的非0数字。一般有两种方式设置它。第一种:调用fotk函数第二种:直接使用IPC_PRIVATE注意:如…

用python画组合图形的面积_实现五边形面积计算

此课程与《清华编程高手.尹成.带你实战python入门》大体相同,只需购买其中的一门课程。本课程由清华大学尹成老师录制,课程的特色在于讲解原理的同时引入了每个程序员都热衷的黑客技术。python是一种跨平台的计算机程序设计语言,是一种面向对…

linux代码段映射,bss,data,text,rodata,堆,栈,常量段与其各段在物理存储中关系

本文想从linux出发【目前还想可不可以从51单片机出发】,解答程序代码和各种数据结构是如何存储(映射)到存储区的。目前未完成整理,还是初稿的想法。bss段:BSS段(bsssegment)通常是指用来存放程序中未初始化的全局变量的一块内存区域。BSS是英…

python求123逆序数_应用Python来计算排列中的逆序数个数

在一个排列中,如果一对数的前后位置与大小顺序相反,即前面的数大于后面的数,那么它们就称为一个逆序。一个排列中逆序的总数就称为这个排列的逆序数。一个排列中所有逆序总数叫做这个排列的逆序数。也就是说,对于n个不同的元素&am…

linux共享文件可读写,在Ubuntu中设置samba共享可读写文件夹

在Ubuntu中设置samba共享可读写文件夹发布时间:2007-03-15 01:01:08来源:红联作者:XLooking首先当然是要安装samba了,呵呵:sudo apt-get install sambasudo apt-get install smbfs下面我们来共享群组可读写文件夹,假设你要共享的文件夹为&…

python频谱分析_基于Python的频谱分析(一)

1、傅里叶变换傅里叶变换是信号领域沟通时域和频域的桥梁,在频域里可以更方便的进行一些分析。傅里叶主要针对的是平稳信号的频率特性分析,简单说就是具有一定周期性的信号,因为傅里叶变换采取的是有限取样的方式,所以对于取样长度…

python 武沛齐_武沛齐 - 主页

${content}你输入的邮件地址曾经通过${type}激活了本站帐号,请使用${type}帐号直接登录。课程习题:提示请选择一个答案提交查看正确答案下一题${option}: ${content}{if multiple}{else}{/if}{if defined("xlist")&&!!xlist.length}{l…

linux全过程图解图片,安装 Mandriva Linux全过程《图解》

wide 于 2006-02-26 10:29:58发表:设定帐号Mandriva 是一个可供多人使用的作业系统,使用者必须先在系统中拥有帐号才可以使用。而登入时,则必须输入帐号及密码,验证无误后方可进入。 本章将介绍如何在安装时设定使用者帐号及密码。何谓系统管…

mnist torch加载fashion_Pytorch加载并可视化FashionMNIST指定层(Udacity)

加载并可视化FashionMNIST在这个notebook中,我们要加载并查看 Fashion-MNIST 数据库中的图像。任何分类问题的第一步,都是查看你正在使用的数据集。这样你可以了解有关图像和标签格式的一些详细信息,以及对如何定义网络以识别此类图像集中的模…

linux 查看socket fd,linux socket中select()函数以及FD_ZERO FD_SET FD_CLR FD_ISSET

linux socket非阻塞编程时常见到如下的code:socket s;.....fd_set set;.....struct timeval tv;while(1){FD_ZERO(&set);//将你的套节字集合清空FD_SET(s, &set);//加入你感兴趣的套节字到集合,这里是一个读数据的套节字stv.tv_sec 3;tv.tv_usec 0;select(maxf…

pytorch默认初始化_Pytorch 实现权重初始化

pytorch 怎么定义多任务学习中的不同任务的权重pytorch 怎么定义多任务学习中的不同任务的权重 搜索资料 我来答 分享 微信扫一扫 新浪微博 QQ空间 举报 浏览15 次 本地图片 图片链接 代码 提交回答pytorch训练好的模型能用在keras或tensorflow吗我最近在找一个resnet18的权重…

c语言程序编写一朵花,一朵花(中英双语)

一朵花A Flower作者|白鹤清泉(Baihe Qingquan)英译|周柯楠(Zhou Kenan)轻轻地走近你的世界Gently I approach your world默默地与你对视Looking you in the eye silently我用眼睛嘴唇与你贴近I keep close to you with my eyes and lips只为听到你芬芳的…

k3 审核流程图_3-金蝶K3操作流程图详解

一、流程图符号说明:______________________________________________ 3二、K/3系统基础操作流程图:___________________________________ 4A、“中间层—账套管理”_________________________________________________ 4B:系统基础资料_____…

c语言链表贪吃蛇教程,编《贪吃蛇》最简单的算法,链表法

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼#include#include#include#include#include#define ESC 0x011b#define UP 0x4800#define DOWN 0x5000#define LEFT 0x4b00#define RIGHT 0x4d00struct rode{int x;int y;struct rode *next;};struct rode *head,food;void initgra(…

硬解析优化_72最近一次现场生产系统优化的成果与开发建议

上周给南京某客户一个重要业务系统的数据库做优化,能实施的马上做了实施,优化前后性能对比非常明显,系统最为严重的IO负载过重问题基本得到解决:优化前一天的物理读是48亿次,优化后是15亿次,效果那是刚刚的…