linux在当前目录下创建pic目录,在Linux上创建.SO文件而不使用PIC(与位置无关的代码)(x86 32位)...
据我所知,x86汇编代码在很大程度上受寄存器数量的限制。
当我了解到在Linux上要创建一个.so文件时,必须为gcc指定-fPIC命令行参数才能创建与位置无关的代码,我不敢首先相信它。
据我所知,elf文件格式支持重定位,就像-在我看来更好-Windows
DLL系统可以工作:在Windows上,链接器在DLL中重新定位所有偏移量(如果有必要)。
我认为加载SO文件或DLL文件所需的时间,以及用于保持不同位置重定位的.so文件所需的内存量,并不比始终缺少整个寄存器要糟糕。
GOT并具有所有这些间接跳转。
我也完全不在乎ALSR等。对于我所想到的应用程序,我只是在乎库中的代码要尽可能地优化。
1)为什么Linux不支持Windows这样的动态库加载,而动态库加载会产生更多性能代码?
到目前为止,我还没有找到真正的解释。只是这样的事情,代码的重新定位会非常糟糕且缓慢(当然,对于在台式机上加载文字处理器,它加载的速度非常重要,我完全接受。但是对于计算密集型的服务器进程(不处理来自互联网的恶意数据),我想拥有我所能获得的所有性能和寄存器!
2)我可以在Linux上创建NOT -fPIC编译的SO文件吗?我可以离开-
fPIC吗?是否有任何方法,手册或项目适用于该主题,并且可以避免浪费整个寄存器并仍然动态加载库?
如果仅在编译.so文件时放下-fPIC,会发生什么情况?
linux在当前目录下创建pic目录,在Linux上创建.SO文件而不使用PIC(与位置无关的代码)(x86 32位)...相关推荐
- linux查看当前目录下的所有目录
我们知道可以使用ll命令列出当前目录下的所有文件夹和文件,ls -a还可以把隐藏文件显示出来,如果我们只想列出当前目录,可以使用如下命令 ls -d */ ll -d */
- Linux下显示当前目录下的全部目录或文件
Linux终端中显示当前目录下的所有目录和文件(不包含隐藏文件): [root@localhost ~]# ll // 显示所有目录和文件 总用量 124 -rw------- 1 root root ...
- linux ftp用户指定多个目录,linux ftp服务器下用户限制目录的方法
我们使用服务器都要站在安全方面进行考虑,有必要将ftp服务下的用户限制在适当的范围内,那么linux ftp服务器下用户限制目录的方法有哪些呢?一起跟着爱站技术频道小编的步伐来了解一下吧! linux ...
- 过滤Linux下不同大小的文件,linux查找当前目录下 M/G 大小的文件,删除Linux下指定大小的文件
过滤Linux下不同大小的文件,linux查找当前目录下 M/G 大小的文件,删除Linux下指定大小的文件 find ./ -type f -size +1G| xargs rm 在清理系统日志文件 ...
- Linux 从当前目录下切换到根目录下
Linux 从当前目录下切换到根目录下 切换到根目录下,直接su,或者su root,根用户为#符号 使用su命令切换到root用户 由于root用户一开始是没有密码的,因此首先输入:sudo pas ...
- Python_删除/创建指定目录及其下所有子目录的文件,该文件记录当前文件夹的内容...
Python_删除/创建指定目录及其下所有子目录的文件,该文件记录当前文件夹的内容 Python_删除/创建指定目录及其下所有子目录的文件,该文件记录当前文件夹的内容 - IGod接口 - 博客园 P ...
- 【Python】获取当前目录、获取上级目录、获取上上级目录
Python获取当前目录.获取上级目录.获取上上级目录: import osprint(os.getcwd()) # 获取当前目录 print(os.path.abspath(os.path.join ...
- 【lvcreate】创建lv需要在vg上创建
[lvcreate]创建lv需要在vg上创建 参数: [-n]:指定名称 [-L]:指定空间大小 例如:lvcreate -L 50M -n testlv myvg //在myvg中创建一个lv,名称 ...
- 【lvcreate】创建lv需要在vg上创建 (一)
[lvcreate]创建lv需要在vg上创建 参数: [-n]:指定名称 [-L]:指定空间大小 例如:lvcreate -L 50M -n testlv myvg //在myvg中创建一个lv ...
最新文章
- 计算机rsnge指令,计算机二级office Excel 函数复习重点
- Java中读取控制台输入
- JVM相关概念和异常类型
- 法国 计算机金融 大学,捷报|GPA3.0,计算机转申金融,斩获法国顶级商学院录取!...
- 三个变量中怎么找出中间值_scratch图形化编程基础练习-变量交换
- JS—C11库仑计说明书,js-c11库仑计说明书
- pdf edit注册码
- 终极成语接龙,谁能继续往下接,哈哈!!!
- 单片机破解方法(摘录)
- 【rmzt】美女之目露凶光win7主题
- 用python演绎神奇的生命游戏,在游戏中学习numpy和matplotlib动画
- 推荐一些程序猿学习的网站
- html隐藏域倒计时,一个网页倒计时的实现
- 基于单片机的打地鼠游戏仿真设计(#0040)
- 三星s8 android9.0官方rom,三星S8+港版安卓9官方固件rom刷机包:TGY-G9550ZHU3DSD3
- 怦然心动(Flipped)-2
- RectTransform的Bounds
- 对于seo优化与sem竞价有什么不同的地方?哪个更适合?
- UDS诊断系列之三 ISO14229协议介绍(下)
- java 图片合成_java 将两张相片合成一张,开发实用类
热门文章
- 【Java】输出10-1000中间既能被3整除又能被7整除的数
- C#LeetCode刷题之#461-汉明距离​​​​​​​(Hamming Distance)
- 拒绝做思想的巨人,行动上的矮子
- linux把标准输出赋值给变量遇到的问题
- java 快速排序 递归_Java递归快速入门
- d3 canvas_D3和Canvas分3个步骤
- java 字节码加载_java面试题jvm字节码的加载与卸载
- java包管理之maven安装
- php控制台脚本错误输出到php_errors.log
- 很多人现在还不知道的知识点,Python多进程和多线程详解!