« scsi-target-utilsとmtxで作る仮想CDライブラリ | トップページ | KVMとAFT »

2011年1月 8日 (土)

小ネタ:32bitOS用プログラムのコンパイル

某所でiscsi-initというプログラムを見つけました。

この詳細はまた別の機会に書くとしてmake時に引っかかったことについてのメモ。

このiscsi-init、つまりはinitrdの中で呼ぶとrootfsをマウントしてくれるというものなんですが、モノがモノだけに、スタティックリンクなわけです。さらに、自分が64bitOS使ってても、32bitモードで作るほうがいいよね、と思ったのですが、gccのくそ長いhelpからは見つけだせなかったのでwebを漁った内容。

つまり、-m32オプションをつけばいい。MakefileでCFLAGS=を指定するなら、LDFLAGSにも-m32が必要。そうしないと、64bit用のリンカが呼び出されて、オブジェクトの形式が不正といって怒られる。

だけど、リンクするにはライブラリが必要なので、glibc.i686が必要。スタティックリンクしたいならglibc-static.i686も必要

実は、meegoをネットブートにしたいと思って持ってきたのですが、meegoにはそもそもinitrdがありませんでした。高速化のために、実ディスクのinitを直接呼び出すらしいのです。
まぁ、もともとそうだったわけで、先祖帰りというのでしょう。

« scsi-target-utilsとmtxで作る仮想CDライブラリ | トップページ | KVMとAFT »

コメント

コメントを書く

(ウェブ上には掲載しません)

トラックバック

この記事のトラックバックURL:
http://app.cocolog-nifty.com/t/trackback/60027/50530410

この記事へのトラックバック一覧です: 小ネタ:32bitOS用プログラムのコンパイル:

« scsi-target-utilsとmtxで作る仮想CDライブラリ | トップページ | KVMとAFT »