Hi! I use this method for generating small and tiny arm toolchain, but after building, if try compile sample program - give error: arm-eabi-tcc: undefined symbol 'open' arm-eabi-tcc: undefined symbol 'perror' and others
Of course they exists in libc.a from linking directory This is my method: For compiling some small hacking utility or kernel module you don need > in hole gcc toolkit (more than 60 MB) and hole libc. > So we need for something small and tiny. It can be tiny C compiler (tcc) > and dietlibc > If you want to know how i building it - read below: > > For example we choose working directory as $HOME/build > > Download latest release of tiny C compiler (http://tinycc.org/) from git: > > git clone git://repo.or.cz/tinycc.git $HOME/build/tinycc > > Download latest release of dietlibc (http://www.fefe.de/dietlibc/) from > cvs: > > cvs -d :pserver:[email protected]:/cvs -z9 co $HOME/build/dietlibc > > After this we need to build tcc: > > cd $HOME/build/tinycc > ./configure --enable-cross --prefix=$HOME/build/tiny-toolchain > make > make install > > So we have this tools in $HOME/build/tiny-toolchain/bin: > > arm-eabi-tcc > arm-fpa-ld-tcc > arm-fpa-tcc > arm-vfp-tcc > c67-tcc > i386-win32-tcc > tcc > x86_64-tcc > x86_64-win32-tcc > > Add them in enviroment variable PATH for easy executing: > > export PATH=$HOME/build/tiny-toolchain/bin:$PATH > > But also we need a C library. So make the "target root" directory: > > mkdir $HOME/build/tiny-root > > Building dietlibc: > > cd $HOME/build/dietlibc > make prefix=$HOME/build/tiny-root > make prefix=$HOME/build/tiny-root ARCH=arm > CROSS=arm-android-linux-uclibcgnueabi- > make install-headers prefix=$HOME/build/tiny-root ARCH=arm > CROSS=arm-android-linux-uclibcgnueabi- > make install-bin prefix=$HOME/build/tiny-root ARCH=arm > CROSS=arm-android-linux-uclibcgnueabi- > > Prepare "target root" directory: > > ln -s $HOME/build/tiny-root/lib-arm $HOME/build/tiny-root/lib > cp $HOME/build/tiny-toolchain/include/* $HOME/build/tiny-root/include/ > cp $HOME/build/tiny-toolchain/lib/* $HOME/build/tiny-root/lib/ > > Also, for kernel development we need for kernel headers: > > cd /path/to/you/kernel/sources > make headers_install ARCH=arm > INSTALL_HDR_PATH=$HOME/build/tiny-root/include > > So, we have all needed libraries and headers in $HOME/build/tiny-root > You can use tcc for compiling your small utilities, for example by this > command: > > arm-eabi-tcc -static -nostdinc -nostdlib -I$HOME/build/tiny-root/include > -L$HOME/build/tiny-root/lib -lc -o example example.c > -- Best regards, XVilka.
_______________________________________________ Tinycc-devel mailing list [email protected] http://lists.nongnu.org/mailman/listinfo/tinycc-devel
