鏈接腳本、靜態庫、共享庫
一、鏈接腳本
SECTIONS
{
/* Read-only sections, merged into text segment: */
PROVIDE (__executable_start = SEGMENT_START("text-segment", 0x08048000)); . = SEGMENT_START("text-segment", 0x08048000) + SIZEOF_HEADERS;
.rel.plt :
{
}
.init :
{
} =0x90909090
.plt : { *(.plt) *(.iplt) }
.text :
{
} =0x90909090
.fini :
{
} =0x90909090
.rodata{}
.dtors :
{
}
.data :
{
}
_edata = .; PROVIDE (edata = .);
__bss_start = .;
.bss :
}
1.executable_star指示0x08048000為程序入口
2.如上簡潔腳本中.rel.plt到.rodata之間為代碼段,之後為數據段
3.之所以將一些看似不同的數據或代碼放到一起、是由於要將其設置為共同的權限(其實代碼也是數據)
二、靜態庫
假設有一個main.c 三個a.c、b.c、c.c獨立函數文件
以下是靜態庫實現過程
gcc -c a.c b.c c.c
ar rs libstack.a a.o b.o c.o 生成靜態庫libstack.a
gcc main.c -L. -lstack -o main //lstack告訴編譯器鏈接libstack庫 -L告訴編譯器去哪了找庫文件
三、共享庫
假設有一個main.c 三個a.c、b.c、c.c獨立函數文件
以下是共享庫實現過程
gcc -c -fPIC a.c b.c c.c 生成共享庫、位置無關代碼(在鏈接時可以把目標文件中各段的地址做重定位)
gcc -g main.c a.o b.o c.o -o main
gcc -shared -o libstack.so main 生成動態庫
转载于:https://blog.51cto.com/xiaohei198975/1217556
鏈接腳本、靜態庫、共享庫相关推荐
- Hexo 靜態博客使用指南
上次我介紹了Hexo的基本搭建方法 近期 tommy351大神 又更新了版本 和之前的2.x使用步驟略有不同 目前剛剛更新 可能有許多主題和插件不兼容3.x 請等待後續更新 本文介紹從零開始搭建的方法 ...
- [Tool]靜態程式碼分析-FxCop
前言 這一篇文章要介紹免費的靜態程式碼分析工具是FxCop,可以幫助我們快速的瞭解系統是否符合較好的設計原則,有哪一些原則可能是沒注意到的,有哪一些原則可能是可以加強的設計. 靜態程式碼分析的工具也需 ...
- matlab 2010 工具箱,Matlab2010下使用FULLBNT工具箱實現簡單的靜態貝葉斯網絡及推理...
基於matlab的貝葉斯網絡工具箱BNT是kevin p.murphy基於matlab語言開發的關於貝葉斯網絡學習的開源軟件包,提供了許多貝葉斯網絡學習的底層基礎函數庫,支持多種類型的節點(概率分布) ...
- 談JS面向對象【靜態與非靜態類】
雖然我研究過C++,有點C++面向對象的思想,但是其實面向對象僅僅是一種方法而已.使用JavaScript面向對象完全出於偶然,因為大部分時間我都是在無圖形界面的環境下工作,有時候就算是介入了web客 ...
- java靜態常量_Java靜態變量、靜態常量、靜態方法
Java靜態變量.靜態常量.靜態方法 靜態變量和靜態方法都屬於靜態對象.在外部調用靜態方法時,可以使用"類名.方法名"的方式,也可以使用"對象名.方法名"的方式 ...
- 非靜態初始化塊與夠着函數的 執行順序
題目: 子類A繼承父類B,A a=new A();則父類B夠着函數.父類B靜態代碼塊.父類B非靜態代碼塊執行的先後順序是? 正確的執行順序是:杜磊B靜態代碼塊->子類A靜態代碼塊->父類B ...
- 建立三層之前,我們需要做什麼;建立中間時,我們需要注意什麼;中間層規則是動態連接的好還是編譯鏈入好.日期:2004-05-18...
<引文1> KeyLife富翁笔记 作者: 多层应用<组28> - aleyn 标题: 三层应用中的中间层设计经验.(内存篇) 关键字: 中间层,内存 分类: 组笔记专 ...
- DLL动态链接库生成及其動態调用(二)
DLL动态链接库生成及其動態调用(二) 一.說明 對上一篇DLL的補充,上一篇是靜態鏈接,補充動態鏈接方式.相比靜態鏈接,會節省內存,但是可能使用過程有點複雜. 有朋友交了一種定義函數指針的方法,奈何 ...
- python box2d第三方库如何使用_【Python基礎】安裝python第三方庫
pip命令行安裝(推薦) 打開cmd命令行 安裝需要的第三方庫如:pip install numpy 在安裝python的相關模塊和庫時,我們一般使用"pip install 模塊名&qu ...
- 動態修改SiteMapPath路徑
http://www.purecs.net/Threads/t376.aspx 在網頁上放置一個SiteMapPath可以提供使用者一個清楚的瀏覽路標指示,如果你的SiteMap是靜態不會變動的倒是很 ...
最新文章
- CDN中,字体文件的跨域问题和解决
- Java基于自定义注解的面向切面的实现
- mysql can_***MySQL错误:Can't connect to MySQL server (10060)
- PyTorch基础-模型的保存和加载-09
- Java and Jakarta - Hybris
- 硬货 - 技术人也能轻松玩转公众号?正确姿势竟然是...
- Codeforces 235C
- 理解zookeeper选举机制
- 查看linux可用磁盘空间_如何在Linux中检查可用磁盘空间
- 计算机普通用户禁止修改c盘,保护C盘数据win7中设置禁止修改C盘文件的方法
- js密码强度正则表达式_相信我,这20个正则表达式,能让你少写1000多行代码,建议收藏...
- csgo服务器与客户端文件不匹配,csgo客户端文件与服务器不匹配怎么办
- 香农编码的gui编码_香农编码
- 详解 http-server的安装和使用
- 按字寻址和按字节寻址
- 884.两句话中的不常见单词
- 力扣每日一题2021-09-17有效的数独
- 【Unity 3D 从入门到实战】Unity 3D 组件总结
- 机器学习——回归——一元线性回归
- 上微信 找不到服务器,【微信连接不上服务器】微信连接不上服务器怎么办?...
热门文章
- 迭代器 iter()函数与next()函数 for...in...循环的本质
- [Android6.0][MTK6737] 启动流程分析
- Halcon 排线检测|固定颜色检测
- 今日恐慌与贪婪指数为23,恐慌程度有所下降
- 移植实时操作系统到 risc-v 架构芯片时上下文切换的实现
- 揭开均线系统的神秘面纱_揭开极限编程的神秘面纱,重新探讨“ XP蒸馏”,第2部分...
- 共享充电宝:涨价、上市、合并,“剩”者该如何破局?
- 航海家软件公式全破解
- html5制作一个六角星,儿童节手工折纸六角星制作教程
- 搭建hexo博客与yilia主题优化