Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
静的ライブラリと 共有ライブラリの違いを実験で確認
Search
Satoru Takeuchi
PRO
December 27, 2024
Technology
1
100
静的ライブラリと 共有ライブラリの違いを実験で確認
以下動画のテキストです。
https://youtu.be/JYu85UZPzVE
Satoru Takeuchi
PRO
December 27, 2024
Tweet
Share
More Decks by Satoru Takeuchi
See All by Satoru Takeuchi
eBPF
sat
PRO
1
110
waruiBPF
sat
PRO
0
100
eBPFとwaruiBPF
sat
PRO
5
3.4k
Pythonのコードの気になる行でスタックトレースを出す
sat
PRO
0
92
ソースコードを読むときの思考プロセスの例 ~markdownのレンダリング方法を知りたかった2 markdownパッケージ~
sat
PRO
0
190
様々なファイルシステム
sat
PRO
0
330
ソースを読む時の思考プロセスの例-MkDocs
sat
PRO
1
420
ソースを読むプロセスの例
sat
PRO
22
18k
メモリマップトファイル
sat
PRO
1
180
Other Decks in Technology
See All in Technology
善意の活動は、なぜ続かなくなるのか ーふりかえりが"構造を変える判断"になった半年間ー
matsukurou
0
310
Cloud WAN MCP Serverから考える新しいネットワーク運用 / 20251228 Masaki Okuda
shift_evolve
PRO
0
140
AIと融ける人間の冒険
pujisi
0
110
国井さんにPurview の話を聞く会
sophiakunii
1
330
わが10年の叡智をぶつけたカオスなクラウドインフラが、なくなるということ。
sogaoh
PRO
1
300
Oracle Database@AWS:サービス概要のご紹介
oracle4engineer
PRO
2
710
Claude Codeを使った情報整理術
knishioka
20
12k
AIエージェントを5分で一気におさらい!AIエージェント「構築」元年に備えよう
yakumo
1
140
Sansan Engineering Unit 紹介資料
sansan33
PRO
1
3.6k
[PR] はじめてのデジタルアイデンティティという本を書きました
ritou
0
770
名刺メーカーDevグループ 紹介資料
sansan33
PRO
0
1k
技術選定、下から見るか?横から見るか?
masakiokuda
0
180
Featured
See All Featured
Joys of Absence: A Defence of Solitary Play
codingconduct
1
260
Reality Check: Gamification 10 Years Later
codingconduct
0
2k
Breaking role norms: Why Content Design is so much more than writing copy - Taylor Woolridge
uxyall
0
130
Making Projects Easy
brettharned
120
6.5k
職位にかかわらず全員がリーダーシップを発揮するチーム作り / Building a team where everyone can demonstrate leadership regardless of position
madoxten
54
49k
It's Worth the Effort
3n
187
29k
Self-Hosted WebAssembly Runtime for Runtime-Neutral Checkpoint/Restore in Edge–Cloud Continuum
chikuwait
0
270
Abbi's Birthday
coloredviolet
0
4.2k
Organizational Design Perspectives: An Ontology of Organizational Design Elements
kimpetersen
PRO
0
51
Utilizing Notion as your number one productivity tool
mfonobong
2
190
Being A Developer After 40
akosma
91
590k
WCS-LA-2024
lcolladotor
0
400
Transcript
静的ライブラリと 共有ライブラリの違いを 実験で確認 Dec. 28th, 2024 Satoru Takeuchi X: satoru_takeuchi
1
はじめに • 静的ライブラリと共有ライブラリの違いを実験によって確認 • 事前知識が得られる動画 ◦ 📝 コード再利用のしくみ ライブラリ •
ソースコード ◦ https://github.com/satoru-takeuchi/youtube-sample/tree/master/0083-library • やること ◦ ある関数を定義したコードから静的ライブラリ、共有ライブラリを作る ◦ プログラムから2つのライブラリをリンクした場合の違いを確認する 2
登場人物 • main-static: 静的ライブラリlibtest.aからmultiplyという関数を呼び出す • main-dynamic: 動的ライブラリlibtest.soからmultiplyを呼び出す • libtest.{a,so}: 2つの引数を掛けた値を返す関数multiplyを定義する
3 main()のコード main-static (実行ファイル) multiply()のコー ド multiply()のコード libtest.a 共有ライブラリ multiply()のコード libtest.so main()のコード main-dynamic (実行ファイル) libtest.soを動的リ ンクしているという 情報 静的ライブラリ 他のライブラリ のコード リンク時に必要な メタデータ
確認事項 1. 動的リンク状況 a. ldd main-static b. ldd main-dynamic 2.
ライブラリファイルのサイズ a. ls -l libtest* 3. 実行ファイルのサイズ a. ls -l main-* 4
ライブラリファイルを削除するとどうなる? 1. rm libtest.a libtest.so 2. ./main-static 3. ./main-dynamic 5
main()のコード main-static (実行ファイル) multiply()のコー ド multiply()のコード libtest.a 共有ライブラリ multiply()のコード libtest.so main()のコード main-dynamic (実行ファイル) libtest.soを動的リ ンクしているという 情報 静的ライブラリ 他のライブラリ のコード リンク時に必要な メタデータ
ライブラリファイルを更新するとどうなる? 1. libtest.cを編集してmultiply()の定義を変更 2. ライブラリ再作成(make libtest.a libtest.so)後にプログラム実行 3. 実行ファイル再作成(make main-static,
main-dynamic)後にプログラム実行 6 main()のコード main-static (実行ファイル) multiply()のコー ド multiply()の 新しいコード libtest.a 共有ライブラリ multiply()の 新しいコード libtest.so main()のコード main-dynamic (実行ファイル) libtestfoo.soを動的 リンクしているという 情報 静的ライブラリ 他のライブラリ のコード リンク時に必要な メタデータ
まとめ 7 静的ライブラリ 共有ライブラリ ライブラリのサイズ 小さい 大きい ライブラリをリンクした プログラムのサイズ 大きい
小さい ライブラリファイルを 削除した後にプログラムは 動作するか 動作する 動作しない ライブラリファイルを 変更した後にプログラムの 動作は変化するか しない する