Linux

19a8bc97 :Anonymous 2009-11-02 18:31
>>ced3b3b7
>>1815c3a5
手作業でdietlibc-0.32がコンパイルできたのでメモ。
(x86環境下で)
・i386、syscalls.s、lib*の各cソース、Sソース、dyn_start.c、dyn_stop.cをgcc -I. -I./include -c でオブジェクト化(-D__dietlibc__は要らない?)
・lib*、syscall.s下のオブジェクトファイルと同名のオブジェクトがi386下にあれば上書きコピー
・libcompat、liblatin1、libpthread、librpcは同名のスタティックリンクライブラリに(ar cru libhogehoge.a *.o)
・libmはi386/Makefile.addのLIBMATH+=にあるオブジェクトをi386からlibmへコピー後、ar cru libm.a *.o
・dietlibc.aはMakefileのDIETLIBC_OBJ = にあるように
  ・i386/unified.o syscall.s/*.o lib/*.o libstdio/*.o libugly/*.o libcruft/*.o libcrypto/*.o libshell/*.o libregex/*.o
  ・i386/__longjmp.o i386/setjmp.o i386/clone.o
 さらにi386/Makefile.addのLIBOBJ+=にある
  ・i386/__ten.o i386/md5asm.o i386/__restore_rt.o
 をまとめてdietlibc.aにアーカイブすれば完了
・diet本体はMakefileにあるように
  ・gcc -isystem include -nostdlib -o diet i386/start.o dyn_start.o diet.c dietlibc.a dyn_stop.o -DDIETHOME=\"$(PWD)\" -DVERSION=\"dietlibc-0.32\" -lgcc
・これらdiet、dyn_*.o i386/start.o *.aをbin-i386ディレクトリに入れれば完了
(インストールバージョンのdietはdiet本体のコンパイル時、-DDIETHOMEにインストール先ディレクトリフルパスを、ならびに-DINSTALLVERSIONをつければオッケー。
その場合、インストール先ディレクトリ/lib-i386にbin-i386に入れたファイルをコピー、dietlibc.aをlibc.aにリネームすればいいはず)。
Powered by shinGETsu.