一、鏈接腳本

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

鏈接腳本、靜態庫、共享庫相关推荐

  1. Hexo 靜態博客使用指南

    上次我介紹了Hexo的基本搭建方法 近期 tommy351大神 又更新了版本 和之前的2.x使用步驟略有不同 目前剛剛更新 可能有許多主題和插件不兼容3.x 請等待後續更新 本文介紹從零開始搭建的方法 ...

  2. [Tool]靜態程式碼分析-FxCop

    前言 這一篇文章要介紹免費的靜態程式碼分析工具是FxCop,可以幫助我們快速的瞭解系統是否符合較好的設計原則,有哪一些原則可能是沒注意到的,有哪一些原則可能是可以加強的設計. 靜態程式碼分析的工具也需 ...

  3. matlab 2010 工具箱,Matlab2010下使用FULLBNT工具箱實現簡單的靜態貝葉斯網絡及推理...

    基於matlab的貝葉斯網絡工具箱BNT是kevin p.murphy基於matlab語言開發的關於貝葉斯網絡學習的開源軟件包,提供了許多貝葉斯網絡學習的底層基礎函數庫,支持多種類型的節點(概率分布) ...

  4. 談JS面向對象【靜態與非靜態類】

    雖然我研究過C++,有點C++面向對象的思想,但是其實面向對象僅僅是一種方法而已.使用JavaScript面向對象完全出於偶然,因為大部分時間我都是在無圖形界面的環境下工作,有時候就算是介入了web客 ...

  5. java靜態常量_Java靜態變量、靜態常量、靜態方法

    Java靜態變量.靜態常量.靜態方法 靜態變量和靜態方法都屬於靜態對象.在外部調用靜態方法時,可以使用"類名.方法名"的方式,也可以使用"對象名.方法名"的方式 ...

  6. 非靜態初始化塊與夠着函數的 執行順序

    題目: 子類A繼承父類B,A a=new A();則父類B夠着函數.父類B靜態代碼塊.父類B非靜態代碼塊執行的先後順序是? 正確的執行順序是:杜磊B靜態代碼塊->子類A靜態代碼塊->父類B ...

  7. 建立三層之前,我們需要做什麼;建立中間時,我們需要注意什麼;中間層規則是動態連接的好還是編譯鏈入好.日期:2004-05-18...

    <引文1> KeyLife富翁笔记  作者: 多层应用<组28> - aleyn 标题: 三层应用中的中间层设计经验.(内存篇) 关键字: 中间层,内存 分类: 组笔记专 ...

  8. DLL动态链接库生成及其動態调用(二)

    DLL动态链接库生成及其動態调用(二) 一.說明 對上一篇DLL的補充,上一篇是靜態鏈接,補充動態鏈接方式.相比靜態鏈接,會節省內存,但是可能使用過程有點複雜. 有朋友交了一種定義函數指針的方法,奈何 ...

  9. python box2d第三方库如何使用_【Python基礎】安裝python第三方庫

    pip命令行安裝(推薦) 打開cmd命令行 安裝需要的第三方庫如:pip install numpy 在安裝python的相關模塊和庫時,我們一般使用"pip install  模塊名&qu ...

  10. 動態修改SiteMapPath路徑

    http://www.purecs.net/Threads/t376.aspx 在網頁上放置一個SiteMapPath可以提供使用者一個清楚的瀏覽路標指示,如果你的SiteMap是靜態不會變動的倒是很 ...

最新文章

  1. CDN中,字体文件的跨域问题和解决
  2. Java基于自定义注解的面向切面的实现
  3. mysql can_***MySQL错误:Can't connect to MySQL server (10060)
  4. PyTorch基础-模型的保存和加载-09
  5. Java and Jakarta - Hybris
  6. 硬货 - 技术人也能轻松玩转公众号?正确姿势竟然是...
  7. Codeforces 235C
  8. 理解zookeeper选举机制
  9. 查看linux可用磁盘空间_如何在Linux中检查可用磁盘空间
  10. 计算机普通用户禁止修改c盘,保护C盘数据win7中设置禁止修改C盘文件的方法
  11. js密码强度正则表达式_相信我,这20个正则表达式,能让你少写1000多行代码,建议收藏...
  12. csgo服务器与客户端文件不匹配,csgo客户端文件与服务器不匹配怎么办
  13. 香农编码的gui编码_香农编码
  14. 详解 http-server的安装和使用
  15. 按字寻址和按字节寻址
  16. 884.两句话中的不常见单词
  17. 力扣每日一题2021-09-17有效的数独
  18. 【Unity 3D 从入门到实战】Unity 3D 组件总结
  19. 机器学习——回归——一元线性回归
  20. 上微信 找不到服务器,【微信连接不上服务器】微信连接不上服务器怎么办?...

热门文章

  1. 迭代器 iter()函数与next()函数 for...in...循环的本质
  2. [Android6.0][MTK6737] 启动流程分析
  3. Halcon 排线检测|固定颜色检测
  4. 今日恐慌与贪婪指数为23,恐慌程度有所下降
  5. 移植实时操作系统到 risc-v 架构芯片时上下文切换的实现
  6. 揭开均线系统的神秘面纱_揭开极限编程的神秘面纱,重新探讨“ XP蒸馏”,第2部分...
  7. 共享充电宝:涨价、上市、合并,“剩”者该如何破局?
  8. 航海家软件公式全破解
  9. html5制作一个六角星,儿童节手工折纸六角星制作教程
  10. 搭建hexo博客与yilia主题优化