Address
:
[go:
up one dir
,
main page
]
Include Form
Remove Scripts
Accept Cookies
Show Images
Show Referer
Rotate13
Base64
Strip Meta
Strip Title
Session Cookies
More Web Proxy on the site http://driver.im/
Submit Search
野良ビルドから見たGentoo
•
6 likes
•
2,674 views
Naohiro Aota
Follow
1 of 29
Download now
Downloaded 14 times
More Related Content
野良ビルドから見たGentoo
1.
野良ビルドから見た Gentoo 〜ビルドのおとしあなと QA
〜
2.
ビルドなんて ./configure
make make install でだいたいすむ
3.
そう思っていると
思わぬおとしぁなが待っている 今日のメインテーマ ( 時代は cmake とかそういう話じゃないよ )
4.
build process ●
unpack ● (patch あてたりする ) ● ./configure ● make ● (make test) ● make install ● いろいろする
5.
unpack ●
特に注目するようなところはない ● 一応 unpack hoge fuga とかするだけで展開 するように – gz – xz – bz2
6.
configure ●
econf コマンド – ./configure – --prefix=/usr – --build=x86_64-pc-linux-gnu --host=x86_64-pc-linux-gnu – --mandir=/usr/share/man --infodir=/usr/share/info – --datadir=/usr/share --sysconfdir=/etc --localstatedir=/var/lib – --libdir=/usr/lib64 – --disable-dependency-tracking – --disable-silent-rules
7.
--disable-dependency-tracking ●
automake の機能 dependency-tracking – コードのの依存をチェック – 依存によってリビルドが行なわれてべんり ● ただし – 依存チェックのコスト – 一回だけならただのムダ
8.
--disable-silent-rules ●
silent rules ● Linux kernel の出力 CC foo LD foo ● デバッグにはふべん
9.
patch あてる ●
patch あてて build できたぞ ! => 新しいバージョン出る => あれ、 patch どこいった ? ● /etc/portage/patches – <package name> – <package name>-<version> – <package name>-<revision>
10.
make のおとしあな ●
Makefile がおかしい – “cd hoge;make” とか書いている – CFLAGS ・ LDFLAGS が反映されない – gcc 直接よんでる – リンクがおかしい ● こっそり – command not found – file dose not exist
11.
make 対策 ●
ビルドログの監視 ● -frecord-gcc-switches – .GCC.command.line section ● --hash-style=gnu – ELF でのシンボル・ルックアップ – .hash section ● ld.gold を使う
12.
build log 監視 ●
command not found 以外にも ● gcc の警告 – Strict Aliasing – Implicit Declarations – Used Uninitialized – Invalid X<=Y<=Z Comparisons – Non-Null Required – Truncating Pointers
13.
strict aliasing int X
int X; float *Y; float Y ------------- X = 1; *Y = 3.14; printf("%dn", X);
14.
underlinking 1/2
Library Program Bar foo Library Nyoro Link Use
15.
--as-needed
Library Program Bar foo Library Nyoro Link Use
16.
New nyoro
Library Program Bar foo Rebuild Library Nyoro Link Use Library Nyoro
17.
underlinking 2/2
Library Program Bar foo Library Nyoro Link Use
18.
underlinking 2/2
Library Program Bar foo Broken Library Nyoro-1.0 Link Use Library Nyoro-2.0
19.
underlinking 2/2
Library Program Bar foo Broken Library Nyoro-1.0 Link Use Library Nyoro-2.0
20.
make install のおとしぁな ●
root で実行されてる – 変なとこさわるかも ● 突然 rm -r /usr されたりな ● インストールしたバイナリがやばいかも – RUNPATH ・ TEXTREL ・ EXECSTACK – DT_NEEDED – SONAME – world writable – debug 情報ついたまま
21.
他にもいろいろ ●
めっちゃ容量使うやつ – /usr とか /var とかの容量事前確認 – メモリとかも ● gcc のバージョン・カーネルの設定などの チェック ● ABI の更新による rebuild
22.
ABI rebuild Program
Library foo Nyoro-1.0 Library Nyoro-1.1 Link Use
23.
ABI rebuild Program
Library foo Nyoro-1.0 Library Nyoro-1.1 Link Use
24.
ABI rebuild Program
Library foo Nyoro-1.0 Library Update Nyoro-1.1 Link Use
25.
ABI rebuild Program
Library foo Nyoro-1.0 Rebuild Library Update Nyoro-1.1 Link Use
26.
ABI rebuild Program
Library foo Nyoro-1.0 Library Nyoro-1.1 Link Use
27.
個別まとめ ●
Gentoo 使っている人むけまとめ – portage 裏でいろいろやってるやべえ ! ● 野良ビルドしている人むけまとめ – いろいろおとしあな多いやばい ! – portage べんりかも ! ● なんかパッケージ書いてる人むけまとめ – 頭の片隅において対策しとこう ● とくに underlinking とか SONAME とか ● 他の distro の人 – うちの distro での build について次回発表するよ ! – Nix の patchelf とかおもしろそうなんだけど ( チラッ
28.
全体まとめ ●
コンパイルだからめんどい、わけではない – いやたしかに時間はかかるんやけどね ● むしろいろいろチェックしてくれててべんり でよい ● ビルドシステム極めてる ● いまからインストールしてみよう
29.
おまけ ●
Gentoo に興味あるけど・・・でも・・・ ブラウザで Gentoo 体験 http://bit.ly/9VG7xz
Download