GNU ld的linker script簡介

Wen Liao
GNU ld的linker script簡介
Wen Liao
Disclaimer
投影片資料為作者整理資料及個人意見,沒有經
過嚴謹確認,請讀者自行斟酌
目標
簡介在GNU ld 吃的linker script 語法
測試環境: OS
假設你是天龍國內糊區的企業
家。決定把手上不同地區的德
國豬腳、萬巒豬腳、里港豬腳
中央廚房合併成超級豬腳工
廠,你會怎麼處理?
● 取得原料
● 預先處理(醃漬、除毛等)
● 烹煮
● 出貨
假設豬腳處理方式
如何合併?
廢話!當然是把相同功能的區
塊規劃放在同一個場所
● 豬腳存放在同一個倉庫
● 預先處理在同一個廠區
● 建立烹煮區,切割成德國豬腳、萬巒
豬腳、里港豬腳三個子區塊
● ...
萬巒豬腳廠區
倉儲區
預先處理區
烹煮區
建設搬移公司
照遷移計劃書
執行
出貨區
德國豬腳廠區
倉儲區
預先處理區
烹煮區
出貨區
里港豬腳廠區
倉儲區
預先處理區
烹煮區
出貨區 新廠區
倉儲區
萬巒豬腳預先處理區
德國豬腳預先處理區
里港豬腳預先處理區
萬巒豬腳烹煮區
德國豬腳烹煮區
里港豬腳烹煮區
萬巒豬腳出貨區
德國豬腳出貨區
里港豬腳出貨區
恭喜!你已經知道linker
在幹啥了
三小!?
你寫的程式不是只有描
述行為,而是描述處理
資料的行為!
● 上帝的歸上帝、凱薩的歸凱薩
● linker
○ 行為的歸行為,資料的歸資料、除錯
的歸除錯、xx的歸xx
GNU ld 是啥?問問男人吧
man ld
...
ld combines a number of object and archive files, relocates
their data and ties up symbol references. Usually the last
step in compiling a program is to run ld.
...
ld combines a number of object and archive files, relocates
their data and ties up symbol references. Usually the last
step in compiling a program is to run ld.
...
英文!眼睛!我的眼睛!
不要擔心,聽眾是來聽分享,
不是來學英文。當然內容儘量
用中文,翻譯米糕啟動!
PS: 專用術語或重要意義會保留原文
名詞解釋1
● Object檔
○ relocatable 的機械碼
● Archive
○ 把一個或多個object檔壓成一個檔案
Demo 或是你的練習時間
和主題無關作業
● 找出write和printf的關係
● 找出為何需要printf而不用write
GNU ld
● 吃object 檔和archive檔,把他們的資料合併,
連結symbol後,輸出成另外一個object檔
● 通常linker用在產生執行檔的最後一個步驟
● ld 要怎麼知道那塊資料放在那邊?當然是要
有人告訴他
file1.o
程式碼(機械碼):
foo()
{...
有初始值的資料:
int g_var =
0xdeadbeef;
沒有初始值的資料:
int g_var_1;
main.o
程式碼(機械碼):
bar()
{
...
main()
{...
有初始值的資料:
int g_var_m =
0xdeadbeef;
沒有初始值的資料:
int g_var_2;
linker 照 linker
script執行
main (執行檔)
程式碼(機械碼):
foo()
{
...
bar()
{
…
main()
{
...
有初始值的資料:
int g_var =
0xdeadbeef;
int g_var_m =
0xdeadbeef;
沒有初始值的資料:
int g_var_1;
int g_var_2;
Demo 或是你的練習時間
很複雜對不對?
我也懶得搞懂這是三小朋友
重點是,
ld會用到linker script
Linker script
● 每次link的時候,都會依照特定的命令去產生
新的object檔。而這些命令就是linker script
● 換句話說,linker script提供一連串的命令讓
linker照表操課
Linker script的目的
● 還記得豬腳的故事?
● 每個object檔都會有共通的區塊
● linker要透過script才知道把輸入object檔案哪
個section的資料放在輸出object 檔的section,
以及最後放在記憶體的那個位置
因為很重要,再講一次
● Linker script命令可以區分為
○ 平台記憶體長什麼樣子
○ 要把輸入object檔
名詞解釋2
● object 檔格式
○ 格式輸入檔案和輸出檔案所遵循的格式
● object 檔案
○ linker處理時讀入除了linker script外的輸入檔案和將
結果存放的輸出檔案
● executable
○ ld輸出的檔案,有時候會這樣稱呼
名詞解釋3
● 每個object檔案都有好幾個section
○ input section:輸入object檔案中的section
○ output section:輸出object檔案中的section
● 常用section
○ .bss
■ 存放沒有初始值全域變數的地方 ex: int g_var;
○ .text
■ 存放編譯過的執行機械碼的地方
○ .data
■ 存放有初始值全域變數的地方 ex: int g_var =
0xdeadbeef;
名詞解釋4
● locale counter
○ 代表目前輸出object檔案位置的最後端,表示符號為.
● region
○ 執行平台實體的記憶體區塊。
■ 如0x1000~0x1999是ROM, 0x5000~0x9999是
RAM。那麼這個平台就可以設定成有兩個region
■ 要注意RAM和ROM的差別唷
名詞解釋5
● Section
○ object存放檔案的區塊
■ 可能是資料,可能是程式碼
○ 內容
■ 名稱
■ 長度
■ 要放到平台記憶體的那個位址 (VMA)
■ 要從那塊記憶體載入 (LMA)
■ 檔案中存放的offset
■ alignment
■ 資料內容
名詞解釋6
● Section狀態
○ LOAD
■ 表示這個section需要從檔案載入到記憶體
○ DATA
■ 表示這個section存放資料,不可以被執行
○ READONLY
■ 可以望文生義吧?
名詞解釋7
● Section狀態 (接關)
○ ALLOC
■ 表示該section會吃記憶體,你可能會想說廢話,
section不放記憶體放檔案是放心酸的嘛?還真的
有,例如放除錯的section
○ CONTENTS
■ 表示這個section是執行程式所需要的資訊,如程式
碼或是資料
Demo 或是你的練習時間
終於回到主題了
● 這次要介紹的兩個主要指令
○ MEMORY
■ 描述平台記憶體區塊,還記得region嘛?
○ SECTIONS
■ 描述輸出object檔案 section有幾個,裏面每個
section該和哪些輸入object檔案合體。以及自訂
symbol。
MEMORY
MEMORY 欄位說明
● name
○ 你給這塊記憶體取的名稱,也就是說前面一直講的
region(以下以region稱呼)。這個名稱不可以和同個
linker script中以下的名稱相同
■ symbol名稱
■ section名稱
■ 檔案名稱
MEMORY 欄位說明
● attr
○ optional
○ 告訴linker這塊記憶體有什麼值得注意的地方,一個
region可以有多個屬性,列出如下
■ R: Read only
■ W: 可讀寫
■ X: executable
■ A: 可allocate
■ I和L: Initialized section,據說是link後就用不到的
section,所以不需要存到輸出object檔案中
■ !: 將該符號後面所有的屬性inverse
MEMORY 欄位說明
● ORIGIN
○ 一個expression,表示該region的起始位址
■ expression懶得講,請看參考資料
● LENGTH
○ region 大小,單位為byte
範例 ● 唯讀、可執行
● 起始位址為0
● 長度為256k
● 非唯讀、不可執行
● 起始位址為0x40000000
● 長度為4M
● 使用了縮寫,縮寫規則不
想翻,請自己看參考資料
SECTIONS
Section commands?
● 主要的兩個用途
○ 設定symbol
○ 描述輸出object檔案 section有幾個,裏面每個section
該和哪些輸入object檔案體。
設定symbol
範例
● 計算結果為數字
○ 大部分情況代表記憶體位置
○ 但是還是有可能不是記憶體位置
● 這些assignment有發生時間由上往下
. = 0x2000
_sdata = .
… (中間actions)
_edata = .
data_size = _edata - _sdata
_estack = ORIGIN(RAM) + LENGTH(RAM);
. 代表目前輸出locale 位
置,所以_data是0x2000
輸出object檔案section描述格式
[..] 表示
optional
因為是Optional,所以我只挑
簡單我想講的部份
指定從特定位址將section載入記憶體
● 情境模擬
○ ROM裏面放有初始值的全域變數section,
○ 程式要去更動全域變數 => GG
○ 解法
■ 把這些section內的資料複製到RAM裏面
● LMA (load memory address)
● VMA (virtual memory address)
● 上面的情境模擬哪個是LMA,那個是VMA?
指定從特定位址將section載入記憶體
● AT(LMA)
○ 告訴linker這個section應該要去哪個LMA載入資料到
VMA
● AT>lma_region
○ region,memory 指定的區塊
○ 告訴linker這個section LMA的資料放在那個section
指定該section要放在哪個region
● >region
○ 不解釋
output-section-command
● 有很多,挑簡單我想講的
○ 設定symbol,前面講過,跳過。
■ 設定symbol可以在linker script的任何地方。
○ 輸入object 檔案的section應該要放到輸出object檔案
的那個section
● 格式:檔案(section1 section2 ...)
○ 檔案支援萬用字元
● 範例
○ *(.text)
■ 所有輸入object檔案的.text就放目前的section
輸入object 檔案的section應該要放到
輸出object檔案的那個section
GNU ld的linker script簡介
GNU ld的linker script簡介
最後範例:rtenv的linker script
● rtenv
○ ARM CM3的RTOS
○ 台灣國立成功大學資訊工程系學生課堂作業
○ URL
■ https://github.com/southernbear/rtenv.git
● 程式起始點是main
● 使用MEMORY指令設了兩個region,分別為
FLASH和RAM
○ 請對照CM3 規格裏面的memory map和這邊的設定
的數值!
● SECTIONS,描述輸出object檔案有幾個section
● .text section有會存放所有輸入object檔案的
○ .isr_vector, .text, .rom.開頭的等section
● .text 要放在FLASH的region
● symbol有_sromdev, eromdev, _sidata。它們有
用處的,請自己下載rtenv trace 程式碼
● .data的LMA (載入記憶體位址)是_sidata,就
是.text結束的地方。另外這邊你要自己搬,有
興趣請查原始碼
● .data要放在RAM的region
● 所有輸入object檔案的.data和所有.data開頭
的section
● symbol _sdata和_edata分別代表section起始
和結束位置
● .bss要放在RAM的region
● 所有輸入object檔案的.bss會放入這個輸出
object檔案section
● 有_sbss和_ebss代表.bss的開始和結束位址
● 這個symbol沒放在section命令中
● 位址是RAM的開頭位址加上RAM的size
● 有印象程式使用的stack是由記憶體最後面往
前面長的嘛?沒印象?那就估狗linux, stack,
text的圖片吧
總結
● 本投影片簡單的介紹linker script的用處以及
部份指令。最後以台灣成功大學資訊工程系課
堂作業開發的小型RTOS裏面的linker script為
範例做結尾。
● 部份指令就是說很多都省略掉,請自行參考附
錄的參考資料
Q & A
參考資料
● GNU linker ld: Linker Scripts
○ https://sourceware.org/binutils/docs/ld/Scripts.
html#Scripts
● GNU LD 手冊略讀 (0): 目錄和簡介
○ http://wen00072-blog.logdown.com/posts/246068-
study-on-the-linker-script-0-table-of-contents
● rtenv的linker script解釋
○ http://wen00072-blog.logdown.com/posts/247207-
rtenv-linker-script-explained
1 of 61

Recommended

from Source to Binary: How GNU Toolchain Works by
from Source to Binary: How GNU Toolchain Worksfrom Source to Binary: How GNU Toolchain Works
from Source to Binary: How GNU Toolchain WorksNational Cheng Kung University
13.5K views63 slides
How A Compiler Works: GNU Toolchain by
How A Compiler Works: GNU ToolchainHow A Compiler Works: GNU Toolchain
How A Compiler Works: GNU ToolchainNational Cheng Kung University
50.2K views86 slides
LLVM 總是打開你的心:從電玩模擬器看編譯器應用實例 by
LLVM 總是打開你的心:從電玩模擬器看編譯器應用實例LLVM 總是打開你的心:從電玩模擬器看編譯器應用實例
LLVM 總是打開你的心:從電玩模擬器看編譯器應用實例National Cheng Kung University
19.2K views46 slides
Learn C Programming Language by Using GDB by
Learn C Programming Language by Using GDBLearn C Programming Language by Using GDB
Learn C Programming Language by Using GDBNational Cheng Kung University
13.4K views78 slides
The Internals of "Hello World" Program by
The Internals of "Hello World" ProgramThe Internals of "Hello World" Program
The Internals of "Hello World" ProgramNational Cheng Kung University
15.3K views74 slides
Interpreter, Compiler, JIT from scratch by
Interpreter, Compiler, JIT from scratchInterpreter, Compiler, JIT from scratch
Interpreter, Compiler, JIT from scratchNational Cheng Kung University
11.9K views62 slides

More Related Content

What's hot

淺談探索 Linux 系統設計之道 by
淺談探索 Linux 系統設計之道 淺談探索 Linux 系統設計之道
淺談探索 Linux 系統設計之道 National Cheng Kung University
11.2K views91 slides
ARM and SoC Traning Part II - System by
ARM and SoC Traning Part II - SystemARM and SoC Traning Part II - System
ARM and SoC Traning Part II - SystemNational Cheng Kung University
5K views92 slides
Linux MMAP & Ioremap introduction by
Linux MMAP & Ioremap introductionLinux MMAP & Ioremap introduction
Linux MMAP & Ioremap introductionGene Chang
10.4K views26 slides
twlkh-linux-vsyscall-and-vdso by
twlkh-linux-vsyscall-and-vdsotwlkh-linux-vsyscall-and-vdso
twlkh-linux-vsyscall-and-vdsoViller Hsiao
4.5K views32 slides
Embedded Virtualization applied in Mobile Devices by
Embedded Virtualization applied in Mobile DevicesEmbedded Virtualization applied in Mobile Devices
Embedded Virtualization applied in Mobile DevicesNational Cheng Kung University
6.9K views88 slides
Understand more about C by
Understand more about CUnderstand more about C
Understand more about CYi-Hsiu Hsu
3.9K views55 slides

What's hot(20)

Linux MMAP & Ioremap introduction by Gene Chang
Linux MMAP & Ioremap introductionLinux MMAP & Ioremap introduction
Linux MMAP & Ioremap introduction
Gene Chang10.4K views
twlkh-linux-vsyscall-and-vdso by Viller Hsiao
twlkh-linux-vsyscall-and-vdsotwlkh-linux-vsyscall-and-vdso
twlkh-linux-vsyscall-and-vdso
Viller Hsiao4.5K views
Understand more about C by Yi-Hsiu Hsu
Understand more about CUnderstand more about C
Understand more about C
Yi-Hsiu Hsu3.9K views
Page reclaim by siburu
Page reclaimPage reclaim
Page reclaim
siburu9K views
The Microkernel Mach Under NeXTSTEP by Gregor Schmidt
The Microkernel Mach Under NeXTSTEPThe Microkernel Mach Under NeXTSTEP
The Microkernel Mach Under NeXTSTEP
Gregor Schmidt3.8K views
用十分鐘 向jserv學習作業系統設計 by 鍾誠 陳鍾誠
用十分鐘  向jserv學習作業系統設計用十分鐘  向jserv學習作業系統設計
用十分鐘 向jserv學習作業系統設計
鍾誠 陳鍾誠20.3K views
Linux Kernel Booting Process (1) - For NLKB by shimosawa
Linux Kernel Booting Process (1) - For NLKBLinux Kernel Booting Process (1) - For NLKB
Linux Kernel Booting Process (1) - For NLKB
shimosawa12.5K views
Introduction to Kernel and Device Drivers by RajKumar Rampelli
Introduction to Kernel and Device DriversIntroduction to Kernel and Device Drivers
Introduction to Kernel and Device Drivers
RajKumar Rampelli4.8K views
Launch the First Process in Linux System by Jian-Hong Pan
Launch the First Process in Linux SystemLaunch the First Process in Linux System
Launch the First Process in Linux System
Jian-Hong Pan2.1K views
U boot porting guide for SoC by Macpaul Lin
U boot porting guide for SoCU boot porting guide for SoC
U boot porting guide for SoC
Macpaul Lin11.9K views
Linux Kernel Module - For NLKB by shimosawa
Linux Kernel Module - For NLKBLinux Kernel Module - For NLKB
Linux Kernel Module - For NLKB
shimosawa5.9K views
Anatomy of the loadable kernel module (lkm) by Adrian Huang
Anatomy of the loadable kernel module (lkm)Anatomy of the loadable kernel module (lkm)
Anatomy of the loadable kernel module (lkm)
Adrian Huang271 views

Viewers also liked

Trace 程式碼之皮 by
Trace 程式碼之皮Trace 程式碼之皮
Trace 程式碼之皮Wen Liao
7.6K views25 slides
GNU AS簡介 by
GNU AS簡介GNU AS簡介
GNU AS簡介Wen Liao
3.1K views18 slides
UPnP 1.0 簡介 by
UPnP 1.0 簡介UPnP 1.0 簡介
UPnP 1.0 簡介Wen Liao
3.7K views93 slides
Hello world在那邊?背景說明 by
Hello world在那邊?背景說明Hello world在那邊?背景說明
Hello world在那邊?背景說明Wen Liao
2.7K views26 slides
故事:自由軟體和 Richard Stallman by
故事:自由軟體和 Richard Stallman故事:自由軟體和 Richard Stallman
故事:自由軟體和 Richard StallmanWen Liao
4.1K views62 slides
開放街圖 自助旅行的好幫手 by
開放街圖   自助旅行的好幫手開放街圖   自助旅行的好幫手
開放街圖 自助旅行的好幫手Wen Liao
3.1K views41 slides

Viewers also liked(20)

Trace 程式碼之皮 by Wen Liao
Trace 程式碼之皮Trace 程式碼之皮
Trace 程式碼之皮
Wen Liao7.6K views
GNU AS簡介 by Wen Liao
GNU AS簡介GNU AS簡介
GNU AS簡介
Wen Liao3.1K views
UPnP 1.0 簡介 by Wen Liao
UPnP 1.0 簡介UPnP 1.0 簡介
UPnP 1.0 簡介
Wen Liao3.7K views
Hello world在那邊?背景說明 by Wen Liao
Hello world在那邊?背景說明Hello world在那邊?背景說明
Hello world在那邊?背景說明
Wen Liao2.7K views
故事:自由軟體和 Richard Stallman by Wen Liao
故事:自由軟體和 Richard Stallman故事:自由軟體和 Richard Stallman
故事:自由軟體和 Richard Stallman
Wen Liao4.1K views
開放街圖 自助旅行的好幫手 by Wen Liao
開放街圖   自助旅行的好幫手開放街圖   自助旅行的好幫手
開放街圖 自助旅行的好幫手
Wen Liao3.1K views
GNU Make, Autotools, CMake 簡介 by Wen Liao
GNU Make, Autotools, CMake 簡介GNU Make, Autotools, CMake 簡介
GNU Make, Autotools, CMake 簡介
Wen Liao25.8K views
Testing in python 2.7.3 by Wen Liao
Testing in python 2.7.3Testing in python 2.7.3
Testing in python 2.7.3
Wen Liao1.8K views
Guide to GStreamer Application Development Manual: CH1 to CH10 by Wen Liao
Guide to GStreamer Application Development Manual: CH1 to CH10Guide to GStreamer Application Development Manual: CH1 to CH10
Guide to GStreamer Application Development Manual: CH1 to CH10
Wen Liao4.1K views
GNU gettext簡介 - 以C語言為範例 by Wen Liao
GNU gettext簡介 - 以C語言為範例GNU gettext簡介 - 以C語言為範例
GNU gettext簡介 - 以C語言為範例
Wen Liao1.5K views
A Brief Introduction to Regular Expression with Python 2.7.3 Standard Library by Wen Liao
A Brief Introduction to Regular Expression with Python 2.7.3 Standard LibraryA Brief Introduction to Regular Expression with Python 2.7.3 Standard Library
A Brief Introduction to Regular Expression with Python 2.7.3 Standard Library
Wen Liao2.8K views
Debug C/C++ Programs More Comfortably @ 2014.12.14 Trace Code Meetup by Jian-Hong Pan
Debug C/C++ Programs More Comfortably @ 2014.12.14 Trace Code MeetupDebug C/C++ Programs More Comfortably @ 2014.12.14 Trace Code Meetup
Debug C/C++ Programs More Comfortably @ 2014.12.14 Trace Code Meetup
Jian-Hong Pan3K views
防竊隱藏式車庫 by lys167
防竊隱藏式車庫防竊隱藏式車庫
防竊隱藏式車庫
lys167376 views
Trace kernel code tips by Viller Hsiao
Trace kernel code tipsTrace kernel code tips
Trace kernel code tips
Viller Hsiao4.2K views
Cygwin Install How-To (Chinese) by William Lee
Cygwin Install How-To (Chinese)Cygwin Install How-To (Chinese)
Cygwin Install How-To (Chinese)
William Lee977 views
Re-identification of Anomized CDR datasets using Social networlk Data by Alket Cecaj
Re-identification of Anomized CDR datasets using Social networlk DataRe-identification of Anomized CDR datasets using Social networlk Data
Re-identification of Anomized CDR datasets using Social networlk Data
Alket Cecaj555 views
泰式料理專題報告 by Yeh Yu
泰式料理專題報告泰式料理專題報告
泰式料理專題報告
Yeh Yu7.4K views
Timing over packet demarcation by Nir Cohen
Timing over packet demarcationTiming over packet demarcation
Timing over packet demarcation
Nir Cohen1.9K views

Similar to GNU ld的linker script簡介

数据库内核分享第二期(Inno db 日志 回滚段 & 崩溃恢复实现详解) by
数据库内核分享第二期(Inno db 日志 回滚段 & 崩溃恢复实现详解)数据库内核分享第二期(Inno db 日志 回滚段 & 崩溃恢复实现详解)
数据库内核分享第二期(Inno db 日志 回滚段 & 崩溃恢复实现详解)frogd
10.8K views73 slides
Using vim by
Using vimUsing vim
Using vimRhythm Sun
577 views37 slides
Introduction to Nand Flash interface (chinese) by
Introduction to Nand Flash interface (chinese)Introduction to Nand Flash interface (chinese)
Introduction to Nand Flash interface (chinese)Sneeker Yeh
896 views16 slides
探奇部落格文章彙整 by
探奇部落格文章彙整探奇部落格文章彙整
探奇部落格文章彙整信仁 邱
2K views34 slides
Continuous Delivery Workshop with Ansible x GitLab CI by
Continuous Delivery Workshop with Ansible x GitLab CIContinuous Delivery Workshop with Ansible x GitLab CI
Continuous Delivery Workshop with Ansible x GitLab CIChu-Siang Lai
866 views129 slides
Xcode tutorial by
Xcode tutorialXcode tutorial
Xcode tutorialMarch Liu
1K views34 slides

Similar to GNU ld的linker script簡介(6)

数据库内核分享第二期(Inno db 日志 回滚段 & 崩溃恢复实现详解) by frogd
数据库内核分享第二期(Inno db 日志 回滚段 & 崩溃恢复实现详解)数据库内核分享第二期(Inno db 日志 回滚段 & 崩溃恢复实现详解)
数据库内核分享第二期(Inno db 日志 回滚段 & 崩溃恢复实现详解)
frogd10.8K views
Introduction to Nand Flash interface (chinese) by Sneeker Yeh
Introduction to Nand Flash interface (chinese)Introduction to Nand Flash interface (chinese)
Introduction to Nand Flash interface (chinese)
Sneeker Yeh896 views
探奇部落格文章彙整 by 信仁 邱
探奇部落格文章彙整探奇部落格文章彙整
探奇部落格文章彙整
信仁 邱2K views
Continuous Delivery Workshop with Ansible x GitLab CI by Chu-Siang Lai
Continuous Delivery Workshop with Ansible x GitLab CIContinuous Delivery Workshop with Ansible x GitLab CI
Continuous Delivery Workshop with Ansible x GitLab CI
Chu-Siang Lai866 views
Xcode tutorial by March Liu
Xcode tutorialXcode tutorial
Xcode tutorial
March Liu1K views

More from Wen Liao

Hello world 的一生 by
Hello world 的一生Hello world 的一生
Hello world 的一生Wen Liao
6K views42 slides
Notes on oracle solaris 11.3 linkers and libraries guide chapter one by
Notes on oracle solaris 11.3 linkers  and libraries guide  chapter oneNotes on oracle solaris 11.3 linkers  and libraries guide  chapter one
Notes on oracle solaris 11.3 linkers and libraries guide chapter oneWen Liao
430 views9 slides
A successful git branching model 導讀 by
A successful git branching model 導讀A successful git branching model 導讀
A successful git branching model 導讀Wen Liao
2.1K views20 slides
淺談Debian套件打包 by
淺談Debian套件打包淺談Debian套件打包
淺談Debian套件打包Wen Liao
4.6K views52 slides
從組裝軟體中談談軟體發展管理 by
從組裝軟體中談談軟體發展管理從組裝軟體中談談軟體發展管理
從組裝軟體中談談軟體發展管理Wen Liao
2.4K views93 slides
軟體組裝心得分享 by
軟體組裝心得分享軟體組裝心得分享
軟體組裝心得分享Wen Liao
9.5K views113 slides

More from Wen Liao(7)

Hello world 的一生 by Wen Liao
Hello world 的一生Hello world 的一生
Hello world 的一生
Wen Liao6K views
Notes on oracle solaris 11.3 linkers and libraries guide chapter one by Wen Liao
Notes on oracle solaris 11.3 linkers  and libraries guide  chapter oneNotes on oracle solaris 11.3 linkers  and libraries guide  chapter one
Notes on oracle solaris 11.3 linkers and libraries guide chapter one
Wen Liao430 views
A successful git branching model 導讀 by Wen Liao
A successful git branching model 導讀A successful git branching model 導讀
A successful git branching model 導讀
Wen Liao2.1K views
淺談Debian套件打包 by Wen Liao
淺談Debian套件打包淺談Debian套件打包
淺談Debian套件打包
Wen Liao4.6K views
從組裝軟體中談談軟體發展管理 by Wen Liao
從組裝軟體中談談軟體發展管理從組裝軟體中談談軟體發展管理
從組裝軟體中談談軟體發展管理
Wen Liao2.4K views
軟體組裝心得分享 by Wen Liao
軟體組裝心得分享軟體組裝心得分享
軟體組裝心得分享
Wen Liao9.5K views
Introduce to Linux command line by Wen Liao
Introduce to Linux command lineIntroduce to Linux command line
Introduce to Linux command line
Wen Liao16.6K views

GNU ld的linker script簡介