!kiyoka.blog.2012_09 RSSPLAIN

Related pages: !kiyoka.blog.list
5555555444444444444444444444444444444444444444444444444444444444444444444443444555555555535
5

kiyoka日記。NendoSekkaの開発や、最近思うことなど

5

最新10件!kiyoka.blog   過去記事一覧!kiyoka.blog.list

5

kiyoka.blog_header 

5

このブログを書いている人: 西山 清香(kiyoka) - twitter: @kiyokaEXT

5

5

 

5

 

4

kiyoka.2012_09_12[Linux] static linkしたアプリケーション配布の時代は終わったのだろうか

4

LinuxにはたくさんのDistributionがある。

4

昔は配布するビルド済みバイナリを1種類にしたい場合はglibcをstatic linkしたバイナリを配布するのが一般的だったように思う。

4

2005年くらいのMySQLはstaticバイナリを配布していて、rpm以外のディストリビューションの場合はそれを選べた。(Debianとか)

4

最近ではMySQLはrpmパッケージしか配布していない。

4

 

4

JDK

4

JDKはどうかと調べてみたら、JDK-1.7.0_05にはtar.gz版バイナリも置いてあったので中身を調べてみた。

4

 

4
 [64bit版のJDK-7u7]
4
 $ tar zxf jdk-7u7-linux-x64.tar.gz
4
 $ cd jdk1.7.0_07/bin
4
 $ ldd java
4
        linux-vdso.so.1 =>  (0x00007fff4cdff000)
4
        libpthread.so.0 => /lib/libpthread.so.0 (0x00007fd4cc205000)
4
        libjli.so => /home/kiyoka/Dropbox/temp/jdk1.7.0_07/bin/./../jre/lib/amd64/jli/libjli.so (0x00007fd4cbfee000)
4
        libdl.so.2 => /lib/libdl.so.2 (0x00007fd4cbdea000)
4
        libc.so.6 => /lib/libc.so.6 (0x00007fd4cba88000)
4
        /lib64/ld-linux-x86-64.so.2 (0x00007fd4cc431000)
4
 $ ldd javac
4
        linux-vdso.so.1 =>  (0x00007fff7e3ff000)
4
        libpthread.so.0 => /lib/libpthread.so.0 (0x00007f413512c000)
4
        libjli.so => /home/kiyoka/Dropbox/temp/jdk1.7.0_07/bin/./../jre/lib/amd64/jli/libjli.so (0x00007f4134f15000)
4
        libdl.so.2 => /lib/libdl.so.2 (0x00007f4134d11000)
4
        libc.so.6 => /lib/libc.so.6 (0x00007f41349af000)
4
        /lib64/ld-linux-x86-64.so.2 (0x00007f4135358000)
4

 

4

ネットの情報をあさってみたが、最近のglibcはもうstaticリンクできないようだ。

4

JDKもglibcのstaticリンクはあきらめているようだが、これで、どのDistributionでも動くのかなぁ。なんか不安だなあ。

4

 

4

Rubyは?

4

さて、自分が作りたい全方位Distribution対応Rubyバイナリはどうすれば作れるか。

4

Debian squeeze(64bit環境)でオプション無しのconfigureで ruby-1.9.3-p194 をビルドすると次のようになる。

4
 (1) [./configure 版]
4
 $ ldd ./ruby-1.9.3-p194/bin/ruby
4
        linux-vdso.so.1 =>  (0x00007fffc25ff000)
4
        libpthread.so.0 => /lib/libpthread.so.0 (0x00007fc720431000)
4
        librt.so.1 => /lib/librt.so.1 (0x00007fc720228000)
4
        libdl.so.2 => /lib/libdl.so.2 (0x00007fc720024000)
4
        libcrypt.so.1 => /lib/libcrypt.so.1 (0x00007fc71fded000)
4
        libm.so.6 => /lib/libm.so.6 (0x00007fc71fb6a000)
4
        libc.so.6 => /lib/libc.so.6 (0x00007fc71f808000)
4
        /lib64/ld-linux-x86-64.so.2 (0x00007fc72065d000)
4

 

4
 (2) [./configure --with-static-linked-ext --disable-shared]
4
 かつ、ext/Setupを次のように変更したバージョン
4

これは、拡張ライブラリがruby本体にスタティックリンクされるオプションのようだが…

4

 

4
 $ ldd ruby
4
        linux-vdso.so.1 =>  (0x00007fff554f3000)
4
        libpthread.so.0 => /lib/libpthread.so.0 (0x00007fdf7e270000)
4
        librt.so.1 => /lib/librt.so.1 (0x00007fdf7e067000)
4
        libdl.so.2 => /lib/libdl.so.2 (0x00007fdf7de63000)
4
        libcrypt.so.1 => /lib/libcrypt.so.1 (0x00007fdf7dc2c000)
4
        libm.so.6 => /lib/libm.so.6 (0x00007fdf7d9a9000)
4
        libc.so.6 => /lib/libc.so.6 (0x00007fdf7d647000)
4
        /lib64/ld-linux-x86-64.so.2 (0x00007fdf7e49c000)
4

 

4

あれ? 結局glibc部分はshared objectにリンクされるのはかわないのか…

4

というわけで、staticリンクはあきらめた。

4

 

4

解決策

4

要は、ユーザーのLinuxシステムがどのようなミニマム構成であっても自分のプログラムが動いてほしいということなのだ。opensslとかgdbmとかを使いたい。

4

実は、必要な *.so を自分でビルドしいっしょに配布すればよいのだった。

4

そして起動スクリプトで、LD_LIBRARY_PATHの先頭に、パスを追加すればよいだけだ。

4

 

4

うっかり深入りする前に気がついてよかった…

4

 

3

comment (disabled)

4

4

 

4

 

5

kiyoka.2012_09_08[日本語][IME] 日本語IMEを作る責任について

5
 身の振り方を考えるついでに、日本語について考えた - アスペ日記EXT
5

この方のエントリを読んでいると、安易にIMEを作っている自分を振り返ってしまう。

5

自分はそこまで深く考えてIME作ってないよ。

5

自分もSekkaというIME(日本語入力システム)を作っているけど、日本語(というか漢字)は得意では無いし、日本語を大事にするほうでもない。

5

それでもIMEを作っているのは、自分の思い通りに入力できるものを作れないかという想いから作っている。自分だから自分の満足するものを作れると。

5

だがしかし、視点を外に向けてIMEありきの世界で今後日本語がどのように書かれるかまでは考えたことは無かったなぁ。

5

この方のように日本語にこだわる人は、自分で全てを掌握できるSKKやSekkaを使えば良いのだろうけど、そこで止まっていないところが凄いというか尊敬するというか救いがたい。

5

いろんな意味で、今後どのような記事が書かれるのか気になる存在となってしまった。

5

 

3

comment (disabled)

5