FreeBSDでLinuxプログラムを作る

FreeBSDLinuxバイナリを生成するにはdevel/linux_devtoolsが要るはずだったがPortsから消えてる・・・
http://www.freshports.org/devel/linux_devtoolsを見ると9月頃まではあったらしい。


調べてみると、既にemulators/linux_base-fc4が入ってるのでこの場合はdevel/linux_devtoolsの代わりにemulators/linux_dist-gentoo-stage3を入れればいいらしい。


以下作業工程

インストール

mulators/linux_base-fc4が入ってる時は、オプションに何も付けずにPortsでインストールする。
すると/usr/local/gentoo-stage3以下にGentooの環境が出来上がるのでここにchrootして使う。

chrootする準備

rootが使ってるシェルにshからシンボリックリンクを貼る。
自分はtcshを使ってるのでこうなる。

# cd /usr/local/gentoo-stage3/bin
# ln -s sh tcsh


Gentoo環境にdevファイルシステムを作る。

# mkdir /usr/local/gentoo-stage3/dev
# mount_devfs devfs /usr/local/gentoo-stage3/dev

chrootする

# chroot /usr/local/gentoo-stage3

とするとGentoo環境になる。


とりあえずHello worldを作ってみる。

# cd /tmp
# cat > test.c
#include 

void main(void)
{
    printf("Hello, world!\n");
}
# cc test.c
test.c: In function `main':
test.c:4: 警告: return type of 'main' is not `int'
# ./a.out
Hello, world!

とりあえず生成したa.outはVine Linux 4.0でも動作確認した。