Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
静的ライブラリと 共有ライブラリの違いを実験で確認
Search
Satoru Takeuchi
PRO
December 27, 2024
Technology
150
1
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
静的ライブラリと 共有ライブラリの違いを実験で確認
以下動画のテキストです。
https://youtu.be/JYu85UZPzVE
Satoru Takeuchi
PRO
December 27, 2024
More Decks by Satoru Takeuchi
See All by Satoru Takeuchi
119-多機能ファイルシステムBtrfs_のコピー.pdf
sat
PRO
1
67
Linuxカーネルの インタフェースは変わりうる?
sat
PRO
1
92
あなたの知らないバージョン命名規則
sat
PRO
3
890
Rook: Intro and Deep Dive with Ceph
sat
PRO
1
64
Machine Check Exception
sat
PRO
2
64
バイナリダンプの模様を読む
sat
PRO
0
89
cpコマンドはディスク上でデータを コピーしないことがある
sat
PRO
3
87
114-ファイルのshallow_copy.pdf
sat
PRO
2
57
113-Btrfsのスナップショット.pdf
sat
PRO
0
40
Other Decks in Technology
See All in Technology
2026-09-10 【Snowflake World Tour Tokyo 2026】dbt Core と Snowflake で実現する多層的なデータガバナンス / Multi-Layered Data Governance Powered by dbt Core and Snowflake
civitaspo
0
310
SQL文一行も書けない人事がCortexもろもろを使って人事業務を楽にしてみる
ponponmikankan
1
210
KPIだけでは評価できないプロダクトが考えるべき Evalsという第二の評価系 / Beyond KPIs: Evals as a Second Evaluation Framework for Products #PdEConf
aki_iinuma
4
3.9k
プロダクト思考 × 基盤思考を AIで実現する Compound Engineering
tkc66buzz
1
310
WAF 運用改善の承認サイクル/SRE_BizReach_MIXI_1
visional_engineering_and_design
2
420
スクラムで身についていた動き方を、XPで捉え直してみた
codmoninc
PRO
1
340
Code4Lib JAPANカンファレンス2026 開会挨拶 / Code4Lib JAPAN Conference 2026: Opening Remarks
ykiyota
0
330
AIで仕事のやり方を変える
matsu7874
3
1k
アリアドネの糸と、20年ごとの建て替え ── 長尾真『電子図書館』を、伊勢で読み直す / Rereading Makoto Nagao’s "Electronic Library" in Ise
ykiyota
0
150
Slack上でインフラをトラブルシュートする! Agentic Platform Engineeringの第一歩
teru0x1
1
240
Podは生きているのにGoだけが落ちる:GOGCとGOMEMLIMITで追うInvisible OOM Killの謎
tkc66buzz
1
500
Sigmaで作る業務アプリ
kazushiro_honma
0
110
Featured
See All Featured
GraphQLとの向き合い方2022年版
quramy
50
15k
Art, The Web, and Tiny UX
lynnandtonic
304
22k
First, design no harm
axbom
PRO
2
1.3k
Sharpening the Axe: The Primacy of Toolmaking
bcantrill
46
3k
How to Ace a Technical Interview
jacobian
281
24k
The Spectacular Lies of Maps
axbom
PRO
1
990
Leo the Paperboy
mayatellez
9
2.3k
How to Get Subject Matter Experts Bought In and Actively Contributing to SEO & PR Initiatives.
livdayseo
0
190
Noah Learner - AI + Me: how we built a GSC Bulk Export data pipeline
techseoconnect
PRO
0
430
The browser strikes back
jonoalderson
0
1.7k
Introduction to Domain-Driven Design and Collaborative software design
baasie
1
980
[RailsConf 2023 Opening Keynote] The Magic of Rails
eileencodes
31
10k
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 静的ライブラリ 共有ライブラリ ライブラリのサイズ 小さい 大きい ライブラリをリンクした プログラムのサイズ 大きい
小さい ライブラリファイルを 削除した後にプログラムは 動作するか 動作する 動作しない ライブラリファイルを 変更した後にプログラムの 動作は変化するか しない する