投稿

ラベル(make)が付いた投稿を表示しています

Mac OS X Lion で x86_64 ELF

64bit の ELFプログラムを、Mac OS X で開発するための過程です。 英語のサイト参考にしていますが、日本語の訳が適当だったり間違ってたりする恐れ有ります……。 用意するのは以下の2つ。 binutils gcc 例えば、 $HOME/cross というディレクトリを作って、 mkdir build-gcc build-binutils COMMON_INSTALL とかする。 gcc はソースコードとは別のディレクトリで configure 、 make する。 binutils クロス開発環境に必要なツール群。gcc より先に make する。 ../configure --prefix-$HOME/cross/COMMON_INSTALL --target=x86_64-elf --enable-64-bit-bfd make install --enable-64-bit-bfd BFD library を使用。 BFD library は binutils がすべてのファイルにアクセスすることに使われるメソッド。 gcc 言わずと知れた gnu コンパイラ。 newlib をダウンロード、コンパイルし、そのディレクトリの位置にシンボリックリンクを貼る。 ln -s newlib-x.x.x $HOME/cross/build-gcc ../configure --prefix=$HOME/cross/COMMON_INSTALL --target=x86_64-elf --disable-bootstrap --enable-languages=c --enable-checking=tree,rtl,assert,types --disable-nls --with-newlib --without-headers --disable-libssp --disable-libquadmath make install --with-newlib シンボリックリンクの貼られた newlib を使用。 --disable-bootstrap ブートストラップビルド(ビルドしたプログラムを使って再ビルド)をさせない。 --without-headers gcc...

make error "Circular"

Circular start.o make のエラーでこういうのが出ました。 参考のサイトを調べてみると、依存性が循環しちゃってるみたいでした。 というわけで Makefile を見てみると、 start.o: start.c start.o main.o おおい、start.o 生成するのに start.o が使えるわけねーじゃん! という可哀想なオチでした。 参考 http://www.ecoop.net/coop/translated/GNUMake3.77/make_16.jp.html

make

Makefile について。 作成されるファイル :元になるファイル 実行するコマンド が基本。 例 hello: hello.c cc -g -ohello hello.c hello: hello.c abc.h cc ${CFLAGS} -o hello hello.c みたいな感じ。 CFLAGS は最初に定義しておく。 make clean を打った時の処理も加えると、 CFLAGS = -g hello : hello.c cc ${CFLAGS} -o hello hello.c clean: rm -rf hello* *.o というように書ける。これがある階層で make と打つだけみたい。 *cc の前にはタブが入ります。

Fedora16kernel source【Fedora15】

linuxのソースコードのコンパイル。 linuxを利用するところまでは行きません。 linuxはFedora15上でFedora16をコンパイルする形になります。 使うコマンド 単純に好みと興味で、ディレクトリ移動に %pushd/popd を使ってみた。移動したディレクトリをスタックに積むコマンドである。 ということを確認するために一度調べて、たった今 %pushd と言った感じで、引数なしで実行すると履歴が表示されることを知った。cdを引数なしで実行すると、ホームディレクトリに行くことも最近知ったのでもういろいろと切ない。 検索には %grep -R "検索目標" .(カレントディレクトリ) を使用した。-Rオプションでディレクトリを再帰的に検索する。"検索目標"は、ファイル内部のテキストまで拾ってくる。 準備 %su -c 'yum install rpmdevtools yum-utils' rpmdevtoolsは面倒なrpmをビルドする環境づくりの手助けをしてくれる。 yum-utilsはリポジトリ利用のためのコマンド。 rpmのビルド環境を構築する。ホームディレクトリで行うのがいいらしい。 %rpmdev-setuptree 実行後は /rpmbuild% ls BUILD BUILDROOT RPMS SOURCES SPECS SRPMS というディレクトリ群ができる。 次はカーネルソースのダウンロード。 %yumdownloader --source kernel ほいほいと取れる。 次はソースの依存関係を構築する。 %su -c 'yum-builddep kernel- .src.rpm' 最後に %rpm -Uvh kernel- .src.rpm おなじみrpm。そんなに馴染んでないか。 警告: ユーザー mockbuild は存在しません - root を使用します 警告: グループ mockbuild は存在しません - root を使用します みたいなメッセージが大量に出てくるけどスルーで大丈夫。 %pushd ~/home/rpmbuild/SPECS ...