== JinLiveCD/UcLibc == === uClibc toolchain ¼³Ä¡ === * http://buildroot.uclibc.org/downloads/snapshots/ * buildroot-20050819.t..> 18-Aug-2005 23:15 1.5M * bunzip2 buildroot-20050819.tar.bz2 * tar xvf buildroot-20050819.tar * cd buildroot {{{ [root@localhost buildroot]# ls CVS config.arm config.mips config.sh4 target Config.in config.armeb config.mipsel docs toolchain Makefile config.i386 config.powerpc package [root@localhost buildroot]# cd toolchain/ [root@localhost toolchain]# ls CVS Makefile.in ccache gdb patch-kernel.sh Config.in binutils gcc kernel-headers uClibc [root@localhost toolchain]# cd ../package/ [root@localhost package]# ls CVS diffutils iptables microcom patch tar Config.in distcc jpeg microwin pciutils tinylogin Makefile.in dnsmasq less mkdosfs pcmcia tinyx autoconf dropbear_sshd libfloat mke2fs portage tn5250 automake ed libglib12 mpg123 portmap ttcp bash fakeroot libmad mrouted pppd udhcp berkeleydb file libpng nano procps util-linux bison findutils libtool ncurses python valgrind boa flex links netkitbase raidtools vtun bridge gawk linux netkittelnet rsync wget busybox gettext lrzsz netsnmp rxvt which bzip2 grep ltp-testsuite newt sed wtools config gzip ltrace ntp sfdisk zlib coreutils hostap lzo openssh slang customize hotplug m4 openssl socat dhcp_relay iproute2 make openvpn strace }}} * make menuconfig * Target Architecture (i386): hardware * Build options * Toolchain Options * Kernel Header Options * uClibc Options * Binutils Options * Gcc Options * Ccache Options * Gdb Options * Common Toolchain Options * Package Selection for the target * Target Options : target file system * BR2_KERNEL_HEADERS_2_6_12=y * BR2_DEFAULT_KERNEL_HEADERS="2.6.12" * BR2_ENABLE_LOCALE=y * BR2_BINUTILS_VERSION="2.15.94.0.2.2" * BR2_GCC_VERSION_4_0_0=y * BR2_GCC_VERSION="4.0.0" * BR2_CCACHE=y * BR2_PACKAGE_BUSYBOX=y * BR2_PACKAGE_BUSYBOX_SNAPSHOT=y * BR2_PACKAGE_BUSYBOX_CONFIG="package/busybox/busybox.config" * busybox config * CONFIG_EJECT=y * CONFIG_FEATURE_2_6_MODULES=y * make * ¼³Á¤µÈ ÆÄÀϵéÀ» wget À» ÀÌ¿ëÇÏ¿© ´Ù¿î·Îµå * binutils ´Ù¿î·ÎµåÇÏ°í ÄÄÆÄÀÏ (½Ã°£ÀÌ Á¦¹ý °É¸± °ÍÀÓ) * ¿À·ù ¹ß»ý * FC4 ÀÇ binutil »ç¿ëÇØ º½ °°Àº ¿À·ù ¹ß»ý * ¿ø»ó º¹±Í * binutil-2.16.1 ·Î º¯°æ Åë°ú * gcc ´Ù¿î·ÎµåÇÏ°í ÄÄÆÄÀÏ (¿ª½Ã ½Ã°£ÀÌ Á¦¹ý °É¸±±î?) * rootfs.i386.ext2 »ý¼ºµÊ * kernel include ¿Í busybox ¸¦ º¯°æ½ÃÅ°°í ¸¸µé¾î¾ß ÇÔ. * DL_DIR : dl * BUILD_DIR : build_i386 * TOOL_BUILD_DIR : toolchain_build_i386 * STAGING_DIR : /buildroot/build_i386/staging_dir * /buildroot/toolchain_build_i386/linux/include ¸¦ ¹Ù²Ù¾úÀ½. {{{ /buildroot/toolchain/kernel-headers/kernel-headers.mk touch $(LINUX_HEADERS_DIR)/.configured mv $(LINUX_HEADERS_DIR)/include $(LINUX_HEADERS_DIR)/include.org cp -Rp /usr/src/linux/include $(LINUX_HEADERS_DIR)/ }}} === buildroot Makefile === * TOPDIR=./ * CONFIG_CONFIG_IN = Config.in * CONFIG_DEFCONFIG = .defconfig * CONFIG = package/config * noconfig_targets := menuconfig config oldconfig randconfig \ * defconfig allyesconfig allnoconfig clean distclean \ * release tags {{{ Variables defined with `=' are recursively expanded variables. Variables defined with `:=' are simply expanded variables; foo = $(bar) bar = $(ugh) ugh = Huh? all:;echo $(foo) will echo `Huh?': `$(foo)' expands to `$(bar)' which expands to `$(ugh)' which finally expands to `Huh?'. CFLAGS = $(include_dirs) -O include_dirs = -Ifoo -Ibar will do what was intended: when `CFLAGS' is expanded in a command, it will expand to `-Ifoo -Ibar -O'. CFLAGS = $(CFLAGS) -O because it will cause an infinite loop in the variable expansion. (Actually make detects the infinite loop and reports an error.) }}} * ifeq ($(filter $(noconfig_targets),$(MAKECMDGOALS)),) * -include $(TOPDIR).config * endif * .config ÆÄÀÏÀÌ ¾ø¾îµµ ¿À·ù¹ß»ýÇÏÁö ¾ÊÀ½. * Áï make menuconfig µîÀ» »ç¿ëÇϸé, .config °¡ ¾ø¾îµµ menuconfig ¸¦ ¼öÇàÇϵµ·Ï ÇÏ´Â °ÍÀÓ. * make menuconfig ¸¦ Çϸé, package/config ¹Ø¿¡ ÀÖ´Â mconf ¸¦ ¼öÇàÇÔ. * filter $(noconfig_targets),$(MAKECMDGOALS) * $(MAKECMDGOALS) Áß¿¡ $(noconfig_targets) ¿Í ÀÏÄ¡ÇÏ´Â °ÍÀÌ ÀÖÀ¸¸é ¸®ÅÏÇÔ. {{{ MAKECMDGOALS: The targets given to make on the command line. Setting this variable has no effect on the operation of make. }}} {{{ If an included makefile cannot be found in any of these directories, a warning message is generated, but it is not an immediately fatal error; processing of the makefile containing the include continues. Once it has finished reading makefiles, make will try to remake any that are out of date or don't exist. See section How Makefiles Are Remade. Only after it has tried to find a way to remake a makefile and failed, will make diagnose the missing makefile as a fatal error. If you want make to simply ignore a makefile which does not exist and cannot be remade, with no error message, use the -include directive instead of include, like this: -include filenames... This acts like include in every way except that there is no error (not even a warning) if any of the filenames do not exist. }}} * ifeq ($(BR2_TAR_VERBOSITY),y) * TAR_OPTIONS=-xvf * else * TAR_OPTIONS=-xf * endif * ifeq ($(strip $(BR2_HAVE_DOT_CONFIG)),y) * BR2_HAVE_DOT_CONFIG °¡ y ¸é endif ±îÁö ¼öÇà. {{{ strip ¸¦ »ç¿ëÇÏ´Â °ÍÀº º¸´Ù ¾ÈÀüÇÏ°Ô Çϱâ À§Çؼ­ÀÓ. Removes leading and trailing whitespace from string and replaces each internal sequence of one or more whitespace characters with a single space. }}} * TARGETS:=host-sed kernel-headers uclibc-configured binutils gcc uclibc-target-utils * include toolchain/Makefile.in {{{ ifeq ($(BR2_ENABLE_MULTILIB),y) MULTILIB:=--enable-multilib endif # FIXME -- this is temporary OPTIMIZE_FOR_CPU=$(ARCH) # gcc has a bunch of needed stuff.... include toolchain/gcc/Makefile.in }}} {{{ GCC_VERSION:=$(BR2_GCC_VERSION) TARGET_OPTIMIZATION:=$(BR2_TARGET_OPTIMIZATION) (-Os -pipe) * -Os Optimize for size. -Os enables all -O2 optimizations that do not typically increase code size. It also performs further optimiza- tions designed to reduce code size. -Os disables the following optimization flags: -falign-functions -falign-jumps -falign-loops -falign-labels -freorder-blocks -freorder-blocks-and-partition -fprefetch-loop-arrays If you use multiple -O options, with or without level numbers, the last such option is the one that is effective. * -pipe : For a big program involving a lot of inter linked files and functions, temporary files tend to get created while compilation. When this option is specified, the compiler makes use of pipes rather than creating temporary files. The output of each function is piped to the next. The swap space is used instead. EXTRA_GCC_CONFIG_OPTIONS:=$(BR2_EXTRA_GCC_CONFIG_OPTIONS) ifeq ($(BR2_GCC_USE_SJLJ_EXCEPTIONS),y) GCC_USE_SJLJ_EXCEPTIONS:=--enable-sjlj-exceptions endif ( y ·Î µÇ¾î¾ß ¹®Á¦°¡ ¾ø´Â °ÍÀ¸·Î º¸ÀÓ.) ¿É¼Ç°ú ¹öÀü¿¡ µû¶ó ´ÙÀ½ º¯¼ö¸¦ ¼³Á¤ÇÔ. SOFT_FLOAT_CONFIG_OPTION,TARGET_SOFT_FLOAT,ARCH_FPU_SUFFIX ifeq ($(BR2_PACKAGE_GCC_TARGET),y) TARGETS+=gcc_target endif }}} * include package/Makefile.in {{{ MAKE1=make MAKE=make -j$(BR2_JLEVEL) * -j jobs Specifies the number of jobs (commands) to run simultaneously. If there is more than one -j option, the last one is effective. If the -j option is given without an argument, make will not limit the number of jobs that can run simultaneously. # Strip off the quoting ARCH, WGET, SVN ifneq ($(BR2_LARGEFILE),y) DISABLE_LARGEFILE= --disable-largefile endif TARGET_CFLAGS=$(TARGET_OPTIMIZATION) $(TARGET_DEBUGGING) $(TARGET_OPTIMIZATION) À» -march=i386 -mcpu=i686 À¸·Î ¸¸µå´Â °ÍÀÌ ÁÁÀ» °Í °°À½. HOSTCC:=gcc BASE_DIR:=${shell pwd} DL_DIR:=$(BASE_DIR)/dl BUILD_DIR:=$(BASE_DIR)/build_i386 TARGET_DIR:=$(BUILD_DIR)/root TOOL_BUILD_DIR=$(BASE_DIR)/toolchain_build_i386 * BR2_STAGING_DIR="$(BUILD_DIR)/staging_dir" STAGING_DIR:=build_i386/staging_dir TARGET_PATH=$(STAGING_DIR)/bin:/bin:/sbin:/usr/bin:/usr/sbin IMAGE:=$(BASE_DIR)/rootfs.$(ARCH)$(ARCH_FPU_SUFFIX) REAL_GNU_TARGET_NAME=i386-linux-uclibc GNU_TARGET_NAME=i386-linux KERNEL_CROSS=$(STAGING_DIR)/bin/i386-linux-uclibc- TARGET_CROSS=$(STAGING_DIR)/bin/i386-linux-uclibc- * TARGET_CROSS: build_i386/staging_dir/bin/i386-linux-uclibc- TARGET_CC=$(TARGET_CROSS)gcc TARGET_RANLIB=$(TARGET_CROSS)ranlib STRIP=$(TARGET_CROSS)strip --remove-section=.comment --remove-section=.note INSTALL=/usr/bin/install HOST_ARCH ¼³Á¤ * [root@localhost buildroot]# gcc -dumpmachine * i386-redhat-linux GNU_HOST_NAME:=$(HOST_ARCH)-pc-linux-gnu TARGET_CONFIGURE_OPTS=PATH=$(TARGET_PATH) \ AR=$(TARGET_CROSS)ar \ AS=$(TARGET_CROSS)as \ LD=$(TARGET_CROSS)ld \ NM=$(TARGET_CROSS)nm \ CC=$(TARGET_CROSS)gcc \ GCC=$(TARGET_CROSS)gcc \ CXX=$(TARGET_CROSS)g++ \ RANLIB=$(TARGET_CROSS)ranlib \ OBJCOPY=$(TARGET_CROSS)objcopy ifeq ($(ENABLE_LOCALE),true) DISABLE_NLS:= else DISABLE_NLS:=--disable-nls endif }}} * all: world *This should be the default target. * world: $(DL_DIR) $(BUILD_DIR) $(STAGING_DIR) $(TARGET_DIR) $(TARGETS) * $(DL_DIR) $(BUILD_DIR) * dl, build_i386 µð·ºÅ丮 »ý¼º * $(STAGING_DIR)Àº build_i386/staging_dir ÀÓ * $(STAGING_DIR) µð·ºÅ丮 ¹Ø¿¡ lib, include, i386-linux-uclibc µð·ºÅ丮 »ý¼º * $(REAL_GNU_TARGET_NAME) Àº i386-linux-uclibc ÀÓ * ln -snf ../lib $(STAGING_DIR)/$(REAL_GNU_TARGET_NAME)/lib * $(TARGET_DIR): Àº build_i386/root ÀÓ * if [ -f "$(TARGET_SKELETON)" ] ; then \ * zcat $(TARGET_SKELETON) | tar -C $(BUILD_DIR) -xf -; \ * fi; * if [ -d "$(TARGET_SKEL_DIR)" ] ; then \ * cp -a $(TARGET_SKEL_DIR)/* $(TARGET_DIR)/; \ * fi; * touch $(STAGING_DIR)/fakeroot.env * -find $(TARGET_DIR) -type d -name CVS | xargs rm -rf * -find $(TARGET_DIR) -type d -name .svn | xargs rm -rf * $(BUILD_DIR)/root °¡ ¾øÀ¸¸é ´ÙÀ½ ÀÛ¾÷ ¼öÇà * $(TARGET_SKELETON) ÀÌ ÀÖÀ¸¸é, uncompress Çؼ­ root µð·ºÅ丮 »ý¼º * $(TARGET_SKEL_DIR) ÀÌ ÀÖÀ¸¸é root ¹Ø¿¡ º¹»ç {{{ target/generic/Makefile.in TARGET_SKELETON=target/generic/skel.tar.gz TARGET_SKEL_DIR=target/generic/target_skeleton TARGET_DEVICE_TABLE=target/generic/device_table.txt }}} * $(TARGETS) * TARGETS:=host-sed kernel-headers uclibc-configured binutils gcc uclibc-target-utils {{{ * package/sed/sed.mk host-sed: $(HOST_SED_TARGET) * toolchain/kernel-headers/kernel-headers.mk kernel-headers: $(LINUX_HEADERS_DIR)/.configured * toolchain/uClibc/uclibc.mk uclibc-configured: $(UCLIBC_DIR)/.configured * toolchain/binutils/binutils.mk binutils: binutils-dependancies $(STAGING_DIR)/$(REAL_GNU_TARGET_NAME)/bin/ld * toolchain/gcc/gcc-uclibc-3.x.mk gcc: uclibc-configured binutils gcc_initial $(LIBFLOAT_TARGET) uclibc \ $(TARGET_DIR)/lib/libgcc_s.so.1 $(GCC_BUILD_DIR2)/.installed $(GCC_TARGETS) * toolchain/uClibc/uclibc.mk uclibc-target-utils: $(TARGET_DIR)/usr/bin/ldd * ÀÌ ¿Ü¿¡ .mk ÆÄÀÏ¿¡¼­ TARGETS+=busybox ¿Í °°ÀÌ TARGETS ¿¡ Ãß°¡¸¦ Çϱ⵵ ÇÔ. }}} * include .config.cmd * include toolchain/*/*.mk * include package/*/*.mk * include target/*/*.mk * host-sed: $(HOST_SED_TARGET) * HOST_SED_TARGET=$(shell package/sed/sedcheck.sh) * /usr/bin/sed ³ª /bin/sed °¡ ¾øÀ¸¸é build-sed-host-binary ¸¦ ¼öÇàÇÏ°í ¾Æ´Ï¸é use-sed-host-binary ¼öÇàÇÔ {{{ build-sed-host-binary: $(SED_DIR1)/$(SED_BINARY) @if [ -L $(HOST_SED_DIR)/$(SED_TARGET_BINARY) ] ; then \ rm -f $(HOST_SED_DIR)/$(SED_TARGET_BINARY); fi; @if [ ! -f $(HOST_SED_DIR)/$(SED_TARGET_BINARY) -o $(HOST_SED_DIR)/$(SED_TARGET_BINARY) \ -ot $(SED_DIR1)/$(SED_BINARY) ] ; then \ set -x; \ mkdir -p $(HOST_SED_DIR)/bin; \ $(MAKE) DESTDIR=$(HOST_SED_DIR) -C $(SED_DIR1) install; \ mv $(HOST_SED_DIR)/usr/bin/sed $(HOST_SED_DIR)/bin/; \ rm -rf $(HOST_SED_DIR)/share/locale $(HOST_SED_DIR)/usr/info \ $(HOST_SED_DIR)/usr/man $(HOST_SED_DIR)/usr/share/doc; fi use-sed-host-binary: @if [ -x /usr/bin/sed ]; then SED="/usr/bin/sed"; else \ if [ -x /bin/sed ]; then SED="/bin/sed"; fi; fi; \ mkdir -p $(HOST_SED_DIR)/bin; \ rm -f $(HOST_SED_DIR)/$(SED_TARGET_BINARY); \ ln -s $$SED $(HOST_SED_DIR)/$(SED_TARGET_BINARY) }}} * kernel-headers: $(LINUX_HEADERS_DIR)/.configured * LINUX_HEADERS_DIR:=$(TOOL_BUILD_DIR)/linux {{{ * dl ¿¡ linux-libc-headers-2.6.12.0.tar.bz2 ÀÌ ¾øÀ¸¸é wget À¸·Î °¡Áö°í ¿Â´Ù. * $(LINUX_HEADERS_DIR)¿¡ .unpacked ÆÄÀÏÀÌ ¾øÀ¸¸é, $(TOOL_BUILD_DIR) ¿¡ uncopmress ÇÏ°í, touch .unpacked * $(LINUX_HEADERS_DIR)¿¡ .patchedÆÄÀÏÀÌ ¾øÀ¸¸é, toolchain/patch-kernel.sh ¼öÇà * $(LINUX_HEADERS_DIR)¿¡ .configured ÆÄÀÏÀÌ ¾øÀ¸¸é, $(LINUX_HEADERS_DIR)/include/asm ÀÇ ¸µÅ©¸¦ »õ·Î ¸¸µé°í, Makefile ¿¡ ¹öÀü°ü·Ã ºÎºÐÀ» ³ÖÀ½. }}} * uclibc-configured: $(UCLIBC_DIR)/.configured * UCLIBC_DIR:=$(TOOL_BUILD_DIR)/uClibc-$(UCLIBC_VER) * wget, uncompress, and patch-kernel.sh ¼öÇà * .config ¼öÁ¤ * ÇÊ¿äÇÑ µð·ºÅ丮 »ý¼º * $(MAKE1) -C $(UCLIBC_DIR) \ * PREFIX=$(TOOL_BUILD_DIR)/uClibc_dev/ \ * DEVEL_PREFIX=/usr/ \ * RUNTIME_PREFIX=$(TOOL_BUILD_DIR)/uClibc_dev/ \ * HOSTCC="$(HOSTCC)" \ * pregen install_dev; {{{ package/Makefile.in MAKE1=make MAKE=make -j$(BR2_JLEVEL) }}} {{{ `-C dir' `--directory=dir' Change to directory dir before reading the makefiles. If multiple `-C' options are specified, each is interpreted relative to the previous one: `-C / -C etc' is equivalent to `-C /etc'. This is typically used with recursive invocations of make (see section Recursive Use of make). }}} {{{ toolchain_build_i386/uClibc/Makefile pregen: headers install_dev: }}} * binutils: binutils-dependancies $(STAGING_DIR)/$(REAL_GNU_TARGET_NAME)/bin/ld * binutils-dependancies: bison, flex, msgfmt(gettext) °¡ ÀÖ¾î¾ß ÇÔ. ¾Æ´Ï¸é ¿À·ù ¹ß»ý {{{ BINUTILS_DIR1:=$(TOOL_BUILD_DIR)/binutils-$(BINUTILS_VERSION)-build $(STAGING_DIR)/$(REAL_GNU_TARGET_NAME)/bin/ld: $(BINUTILS_DIR1)/binutils/objdump $(MAKE) -C $(BINUTILS_DIR1) install }}} {{{ $(BINUTILS_DIR1)/binutils/objdump: $(BINUTILS_DIR1)/.configured $(MAKE) -C $(BINUTILS_DIR1) all }}} {{{ $(BINUTILS_DIR1)/.configured: $(BINUTILS_DIR)/.patched mkdir -p $(BINUTILS_DIR1) (cd $(BINUTILS_DIR1); \ $(BINUTILS_DIR)/configure \ --prefix=$(STAGING_DIR) \ --build=$(GNU_HOST_NAME) \ --host=$(GNU_HOST_NAME) \ --target=$(REAL_GNU_TARGET_NAME) \ $(DISABLE_NLS) \ $(MULTILIB) \ --disable-werror \ $(SOFT_FLOAT_CONFIG_OPTION) ); touch $(BINUTILS_DIR1)/.configured }}} {{{ $(BINUTILS_DIR)/.patched: $(BINUTILS_DIR)/.unpacked # Apply appropriate binutils patches. toolchain/patch-kernel.sh $(BINUTILS_DIR) toolchain/binutils/$(BINUTILS_VERSION) \*.patch touch $(BINUTILS_DIR)/.patched }}} {{{ $(BINUTILS_DIR)/.unpacked: $(DL_DIR)/$(BINUTILS_SOURCE) mkdir -p $(TOOL_BUILD_DIR) $(BINUTILS_CAT) $(DL_DIR)/$(BINUTILS_SOURCE) | tar -C $(TOOL_BUILD_DIR) $(TAR_OPTIONS) - touch $(BINUTILS_DIR)/.unpacked }}} {{{ $(DL_DIR)/$(BINUTILS_SOURCE): mkdir -p $(DL_DIR) $(WGET) -P $(DL_DIR) $(BINUTILS_SITE)/$(BINUTILS_SOURCE) }}} * TARGETS_CLEAN:=$(patsubst %,%-clean,$(TARGETS)) * TARGETS_SOURCE:=$(patsubst %,%-source,$(TARGETS)) * TARGETS_DIRCLEAN:=$(patsubst %,%-dirclean,$(TARGETS)) {{{ $(subst from,to,text) Performs a textual replacement on the text text: each occurrence of from is replaced by to. The result is substituted for the function call. $(patsubst pattern,replacement,text) Finds whitespace-separated words in text that match pattern and replaces them with replacement. Here pattern may contain a `%' which acts as a wildcard, matching any number of any characters within a word. If replacement also contains a `%', the `%' is replaced by the text that matched the `%' in pattern. Only the first `%' in the pattern and replacement is treated this way; any subsequent `%' is unchanged. }}} * .PHONY: all world clean dirclean distclean source $(TARGETS) \ * $(TARGETS_CLEAN) $(TARGETS_DIRCLEAN) $(TARGETS_SOURCE) \ * $(DL_DIR) $(BUILD_DIR) $(TOOL_BUILD_DIR) $(STAGING_DIR) * .PHONY: all world clean dirclean distclean source $(TARGETS) \ * $(TARGETS_CLEAN) $(TARGETS_DIRCLEAN) $(TARGETS_SOURCE) \ * $(DL_DIR) $(BUILD_DIR) $(TOOL_BUILD_DIR) $(STAGING_DIR) {{{ A phony target is one that is not really the name of a file. It is just a name for some commands to be executed when you make an explicit request. There are two reasons to use a phony target: to avoid a conflict with a file of the same name, and to improve performance. If you write a rule whose commands will not create the target file, the commands will be executed every time the target comes up for remaking. Here is an example: clean: rm *.o temp Because the rm command does not create a file named `clean', probably no such file will ever exist. Therefore, the rm command will be executed every time you say `make clean'. The phony target will cease to work if anything ever does create a file named `clean' in this directory. Since it has no prerequisites, the file `clean' would inevitably be considered up to date, and its commands would not be executed. To avoid this problem, you can explicitly declare the target to be phony, using the special target .PHONY (see section Special Built-in Target Names) as follows: .PHONY : clean Once this is done, `make clean' will run the commands regardless of whether there is a file named `clean'. }}} === uclibc makefile === * config ½ÃÇàÇÏ¿© .config ÆÄÀÏ »ý¼º * headers ¿¡¼­´Â ÇÊ¿äÇÑ include ÆÄÀÏ ¸µÅ© * pregen ¿¡¼­´Â ¸ÕÀú ¸¸µé¾î ³õÀº locale ÀÌ ÀÖÀ¸¸é À̸¦ Àû¿ë. * subdirs ¿¡¼­ ÇÊ¿äÇÑ ¶óÀ̺귯¸® »ý¼º * shared ¿¡¼­ shared libtary »ý¼º * finished ´Â echo ¸¸ ÇÔ. {{{ noconfig_targets := menuconfig config oldconfig randconfig \ defconfig allyesconfig allnoconfig clean distclean \ release tags TAGS TOPDIR=./ include Rules.mak DIRS = ldso libc libcrypt libresolv libnsl libutil libm libpthread librt ifeq ($(strip $(UCLIBC_HAS_GETTEXT_AWARENESS)),y) DIRS += libintl endif ifeq ($(strip $(HAVE_DOT_CONFIG)),y) all: headers pregen subdirs shared finished }}} * headers: include/bits/uClibc_config.h * include/bits/uClibc_config.h: .config {{{ include/bits/uClibc_config.h: .config @if [ ! -x ./extra/config/conf ] ; then \ $(MAKE) -C extra/config conf; \ fi; * extra/config ¹Ø¿¡ conf ½ÇÇà ÆÄÀÏÀÌ ¾øÀ¸¸é, extra/config ÀÇ makefile À» ¼öÇàÇÔ. (make conf) * make conf ´Â conf ½ÇÇà ÆÄÀÏÀ» ¸¸µë. $(RM) -r include/bits $(INSTALL) -d include/bits * INSTALL Àº Rules.mak ¿¡ install ·Î Á¤ÀǵǾî ÀÖÀ½. * sh ¸í·ÉÀÓ. * ´ÜÁö include/bits µð·ºÅ丮¸¦ ¸¸µå´Â °ÍÀ¸·Î »ý°¢µÊ. @./extra/config/conf -o extra/Configs/Config.in * extra/config/conf ¸¦ ½ÇÇàÇÏ¿© extra/Configs ¹Ø¿¡ Config.in À» ÀÔ·ÂÆÄÀÏ·Î »ç¿ëÇÏ¿© .confog ÆÄÀÏÀ» »ý¼ºÇÔ. * extra/config/conf.c * extra/config/confdata.c * .config ÆÄÀÏÀº ÀÌ °÷¿¡ Á¤ÀǵǾî ÀÖÀ½. }}} {{{ headers: include/bits/uClibc_config.h @$(SHELL_SET_X); \ * Rules.mak ¿¡ Á¤ÀǵǾî ÀÖÀ½. set -x ¶Ç´Â set +x ./extra/scripts/fix_includes.sh \ -k $(KERNEL_SOURCE) -t $(TARGET_ARCH) \ $(header_extra_args) * Target_ARCH ¿¡ ÇÊ¿äÇÑ include ÆÄÀÏÀÌ Àִ°¡ Á¡°Ë @cd include/bits; \ set -e; \ for i in `ls ../../libc/sysdeps/linux/common/bits/*.h` ; do \ $(LN) -fs $$i .; \ done; \ if [ -d ../../libc/sysdeps/linux/$(TARGET_ARCH)/bits ] ; then \ for i in `ls ../../libc/sysdeps/linux/$(TARGET_ARCH)/bits/*.h` ; do \ $(LN) -fs $$i .; \ done; \ fi * include/bits µð·ºÅ丮 ¹Ø¿¡ ÇÊ¿äÇÑ ÆÄÀϵéÀ» ¸µÅ© ½ÃÅ´. * buildroot/toolchain_build_i386/uClibc/include/bits ¹Ø¿¡´Â ¾Æ¹« °Íµµ ¾øÀ½. * ¾îµð¿¡¼±°¡ Áö¿î °ÍÀÎÁö? @cd include/sys; \ set -e; \ for i in `ls ../../libc/sysdeps/linux/common/sys/*.h` ; do \ $(LN) -fs $$i .; \ done; \ if [ -d ../../libc/sysdeps/linux/$(TARGET_ARCH)/sys ] ; then \ for i in `ls ../../libc/sysdeps/linux/$(TARGET_ARCH)/sys/*.h` ; do \ $(LN) -fs $$i .; \ done; \ fi * include/sys ¹Ø¿¡ ÇÊ¿äÇÑ ÆÄÀÏÀ» ¸µÅ©ÇÔ. @cd $(TOPDIR); \ set -e; \ $(SHELL_SET_X); \ TOPDIR=. CC="$(CC)" /bin/sh extra/scripts/gen_bits_syscall_h.sh > include/bits/sysnum.h.new; \ if cmp include/bits/sysnum.h include/bits/sysnum.h.new >/dev/null 2>&1; then \ $(RM) include/bits/sysnum.h.new; \ else \ mv -f include/bits/sysnum.h.new include/bits/sysnum.h; \ fi $(MAKE) -C libc/sysdeps/linux/common headers $(MAKE) -C libc/sysdeps/linux/$(TARGET_ARCH) headers * include ¹Ø¿¡ fpu_control.h ¸¦ ¸µÅ© ½ÃÅ´. }}} * pregen * locale °ü·Ã ÀÛ¾÷À» ÇÔ. * locale ¸¦ ³ÖÀ» °ÍÀΰ¡? ÇÑ±Û codeset À» Áö¿øÇÏÁö ¾Ê´Â °Í °°À½. * ÀØ¾î ¹ö¸± °Í * subdirs {{{ DIRS = ldso libc libcrypt libresolv libnsl libutil libm libpthread librt subdirs: $(patsubst %, _dir_%, $(DIRS)) $(patsubst %, _dir_%, $(DIRS)): headers $(MAKE) -C $(patsubst _dir_%, %, $@) DIRS ÀÇ °¢ µð·ºÅ丮·Î °¡¼­ make ¸¦ ¼öÇàÇÔ. }}} * shared * shared library »ý¼º * lib ·Î ½ÃÀÛÇÏ°í .so ·Î ³¡³ª´Â ¶óÀ̺귯¸®ÀÓ. {{{ shared: subdirs ifeq ($(strip $(HAVE_SHARED)),y) $(SECHO) $(SECHO) Building shared libraries ... $(SECHO) @$(MAKE) -C libc shared @$(MAKE) -C ldso shared @$(MAKE) -C libcrypt shared @$(MAKE) -C libresolv shared @$(MAKE) -C libnsl shared @$(MAKE) -C libutil shared @$(MAKE) -C libm shared @$(MAKE) -C libpthread shared @$(MAKE) -C librt shared ifeq ($(strip $(UCLIBC_HAS_GETTEXT_AWARENESS)),y) @$(MAKE) -C libintl shared endif else $(SECHO) $(SECHO) Not building shared libraries ... $(SECHO) endif }}} * finished {{{ finished: shared $(SECHO) $(SECHO) Finally finished compiling ... $(SECHO) }}} * install_dev * PREFIX=$(TOOL_BUILD_DIR)/uClibc_dev/ * DEVEL_PREFIX=/usr/ * RUNTIME_PREFIX=$(TOOL_BUILD_DIR)/uClibc_dev/ {{{ install_dev: $(INSTALL) -d $(PREFIX)$(DEVEL_PREFIX)lib $(INSTALL) -d $(PREFIX)$(DEVEL_PREFIX)include -$(INSTALL) -m 644 lib/*.[ao] $(PREFIX)$(DEVEL_PREFIX)lib/ * $(SED) 's,^KERNEL_SOURCE=.*,KERNEL_SOURCE=\"$(LINUX_HEADERS_DIR)\",g' \ $(UCLIBC_DIR)/.config if [ "$(KERNEL_SOURCE)" == "$(DEVEL_PREFIX)" ] ; then \ extra_exclude="--exclude include/linux --exclude include/asm'*'" ; \ else \ extra_exclude="" ; \ fi ; \ tar -chf - include --exclude .svn --exclude CVS $$extra_exclude \ | tar -xf - -C $(PREFIX)$(DEVEL_PREFIX) ifneq ($(strip $(UCLIBC_HAS_FLOATS)),y) # Remove floating point related headers since float support is disabled. $(RM) $(PREFIX)$(DEVEL_PREFIX)include/complex.h $(RM) $(PREFIX)$(DEVEL_PREFIX)include/fpu_control.h $(RM) $(PREFIX)$(DEVEL_PREFIX)include/ieee754.h $(RM) $(PREFIX)$(DEVEL_PREFIX)include/math.h $(RM) $(PREFIX)$(DEVEL_PREFIX)include/tgmath.h endif ifneq ($(strip $(UCLIBC_HAS_WCHAR)),y) # Remove wide char headers since wide char support is disabled. $(RM) $(PREFIX)$(DEVEL_PREFIX)include/wctype.h $(RM) $(PREFIX)$(DEVEL_PREFIX)include/wchar.h endif ifneq ($(strip $(UCLIBC_HAS_LOCALE)),y) # Remove iconv header since locale support is disabled. $(RM) $(PREFIX)$(DEVEL_PREFIX)include/iconv.h endif ifneq ($(strip $(UCLIBC_HAS_GLIBC_CUSTOM_PRINTF)),y) # Remove printf header since custom print specifier support is disabled. $(RM) $(PREFIX)$(DEVEL_PREFIX)include/printf.h endif ifneq ($(strip $(UCLIBC_HAS_XLOCALE)),y) # Remove xlocale header since extended locale support is disabled. $(RM) $(PREFIX)$(DEVEL_PREFIX)include/xlocale.h endif ifneq ($(strip $(UCLIBC_HAS_GETTEXT_AWARENESS)),y) # Remove libintl header since gettext support is disabled. $(RM) $(PREFIX)$(DEVEL_PREFIX)include/libintl.h endif ifneq ($(strip $(UCLIBC_HAS_REGEX)),y) # Remove regex headers since regex support is disabled. $(RM) $(PREFIX)$(DEVEL_PREFIX)include/regex.h $(RM) $(PREFIX)$(DEVEL_PREFIX)include/regexp.h endif ifneq ($(strip $(UCLIBC_HAS_WORDEXP)),y) # Remove wordexp header since wordexp support is disabled. $(RM) $(PREFIX)$(DEVEL_PREFIX)include/wordexp.h endif ifneq ($(strip $(UCLIBC_HAS_FTW)),y) # Remove ftw header since ftw support is disabled. $(RM) $(PREFIX)$(DEVEL_PREFIX)include/ftw.h endif ifneq ($(strip $(UCLIBC_HAS_GLOB)),y) # Remove glob header since glob support is disabled. $(RM) $(PREFIX)$(DEVEL_PREFIX)include/glob.h endif ifneq ($(strip $(UCLIBC_HAS_GNU_GETOPT)),y) # Remove getopt header since gnu getopt support is disabled. $(RM) $(PREFIX)$(DEVEL_PREFIX)include/getopt.h endif ifneq ($(strip $(HAS_SHADOW)),y) # Remove getopt header since shadow password support is disabled. $(RM) $(PREFIX)$(DEVEL_PREFIX)include/shadow.h endif -@for i in `find $(PREFIX)$(DEVEL_PREFIX) -type d` ; do \ chmod 755 $$i; chmod 644 $$i/*.h > /dev/null 2>&1; \ done; -find $(PREFIX)$(DEVEL_PREFIX) -name .svn | xargs $(RM) -r; -chown -R `id | sed 's/^uid=\([0-9]*\).*gid=\([0-9]*\).*$$/\1:\2/'` $(PREFIX)$(DEVEL_PREFIX) ifeq ($(strip $(HAVE_SHARED)),y) for i in `find lib/ -type l -name 'lib[a-zA-Z]*.so' | \ sed -e 's/lib\///'` ; do \ $(LN) -sf $(RUNTIME_PREFIX_LIB_FROM_DEVEL_PREFIX_LIB)$$i.$(MAJOR_VERSION) \ $(PREFIX)$(DEVEL_PREFIX)lib/$$i; \ done; ifeq ($(strip $(PTHREADS_DEBUG_SUPPORT)),y) $(LN) -sf $(RUNTIME_PREFIX_LIB_FROM_DEVEL_PREFIX_LIB)libthread_db.so.1 \ $(PREFIX)$(DEVEL_PREFIX)lib/libthread_db.so endif # # If we build shared libraries then the static libs are PIC... # # Make _pic.a symlinks to make mklibs.py and similar tools happy. for i in `find lib/ -type f -name '*.a' | sed -e 's/lib\///'` ; do \ $(LN) -sf $$i $(PREFIX)$(DEVEL_PREFIX)lib/`echo $$i \ | sed -e 's/\.a$$/_pic.a/'`; \ done; # Ugh!!! Remember that libdl.a and libdl_pic.a are different. Since # libdl is pretty small, and not likely to benefit from mklibs.py and # similar, lets just remove libdl_pic.a and avoid the issue rm -f $(PREFIX)$(DEVEL_PREFIX)lib/libdl_pic.a endif }}} {{{ cd extra/locale cat >codesets.txt «EOF ./charmaps/ASCII.pairs ./charmaps/ISO-8859-1.pairs EOF cat >locales.txt «EOF @euro e @cyrillic c #----- UTF-8 yes 8-BIT yes #----- en_US ISO-8859-1 en_US.UTF-8 UTF-8 EOF }}} {{{ tar -chf - include --exclude .svn --exclude CVS $$extra_exclude \ | tar -xf - -C $(PREFIX)$(DEVEL_PREFIX) * include µð·ºÅ丮ÀÇ tar ÆÄÀÏÀ» ¸¸µå´Âµ¥, .svn, CVS ´Â Á¦¿ÜÇÑ´Ù. * À̸¦ $(PREFIX)$(DEVEL_PREFIX) ¹Ø¿¡ Ǭ´Ù. }}} [root@localhost ~]# mv UCLIBC /mnt/hdc3 mv: reading `UCLIBC/buildroot/toolchain_build_i386/binutils-2.16.1/gas/testsuite/gas/frv/fr450-insn.s': ÀÔ·Â/Ãâ·Â ¿À·ù mv: reading `UCLIBC/buildroot/toolchain_build_i386/binutils-2.16.1/gas/testsuite/gas/h8300/h8sx_rtsl.s': ÀÔ·Â/Ãâ·Â ¿À·ù mv: reading `UCLIBC/buildroot/toolchain_build_i386/binutils-2.16.1/gas/testsuite/gas/h8300/t04_sub.exp': ÀÔ·Â/Ãâ·Â ¿À·ù mv: reading `UCLIBC/buildroot/toolchain_build_i386/binutils-2.16.1/gas/testsuite/gas/h8300/t07_ari3.exp': ÀÔ·Â/Ãâ·Â ¿À·ù mv: reading `UCLIBC/buildroot/toolchain_build_i386/binutils-2.16.1/gas/testsuite/gas/h8300/t09_xor.exp': ÀÔ·Â/Ãâ·Â ¿À·ù mv: reading `UCLIBC/buildroot/toolchain_build_i386/binutils-2.16.1/gas/testsuite/gas/h8300/t11_logs.exp': ÀÔ·Â/Ãâ·Â ¿À·ù mv: reading `UCLIBC/buildroot/toolchain_build_i386/binutils-2.16.1/gas/testsuite/gas/hppa/basic/basic.exp': ÀÔ·Â/Ãâ·Â ¿À·ù === uclibc === {{{ mkdir -p dl mkdir -p build_i386 mkdir -p build_i386/staging_dir/lib mkdir -p build_i386/staging_dir/include mkdir -p build_i386/staging_dir/i386-linux-uclibc ln -sf ../lib build_i386/staging_dir/i386-linux-uclibc/lib zcat target/default/skel.tar.gz | tar -C build_i386 -xf - cp -a target/default/target_skeleton/* build_i386/root/ find build_i386/root -type d -name CVS -exec rm -rf {} \; > /dev/null 2>&1 [root@localhost bin]# pwd /root/buildroot/build_i386/staging_dir/bin [root@localhost bin]# ls -l ÇÕ°è 0 lrwxrwxrwx 1 root root 8 9¿ù 5 00:41 sed -> /bin/sed [root@localhost buildroot]# make mkdir -p /root/buildroot/toolchain_build_i386 bzcat /root/buildroot/dl/uClibc-snapshot.tar.bz2 | tar -C /root/buildroot/toolchain_build_i386 -xf - touch /root/buildroot/toolchain_build_i386/uClibc/.unpacked 's,^CROSS=.*,CROSS=/root/buildroot/build_i386/staging_dir/bin/i386-linux-uclibc-,g' /root/buildroot/toolchain_build_i386/uClibc/Rules.mak make: s,^CROSS=.*,CROSS=/root/buildroot/build_i386/staging_dir/bin/i386-linux-uclibc-,g: ¸í·ÉÀ» ãÁö ¸øÇßÀ½ make: *** [/root/buildroot/toolchain_build_i386/uClibc/.configured] ¿À·ù 127 menuconfig ¿¡¼­ ccache, busybox, ext2 file system Á¦°Å target Àº host-sed ¸¸ ÁÖ¸é buildroot/build_i386/staging_dir/bin ÀÌ »ý±â°í ÀÌ ¹Ø¿¡ sed »ý±è. [root@localhost bin]# pwd /root/buildroot/build_i386/staging_dir/bin [root@localhost bin]# ls -l ÇÕ°è 0 lrwxrwxrwx 1 root root 8 9¿ù 5 03:23 sed -> /bin/sed target ¿¡ kernel-headers Ãß°¡ mkdir -p /root/buildroot/toolchain_build_i386 bzcat /root/buildroot/dl/linux-libc-headers-2.4.27.tar.bz2 | tar -C /root/buildroot/toolchain_build_i386 -xf - mv /root/buildroot/toolchain_build_i386/linux-libc-headers-2.4.27 /root/buildroot/toolchain_build_i386/linux touch /root/buildroot/toolchain_build_i386/linux/.unpacked toolchain/patch-kernel.sh /root/buildroot/toolchain_build_i386/linux toolchain/kernel-headers linux-libc-headers-2.4.25-\*.patch Applying toolchain/kernel-headers/linux-libc-headers-2.4.25-*.patch using plaintext: cat: toolchain/kernel-headers/linux-libc-headers-2.4.25-*.patch: ±×·± ÆÄÀÏÀ̳ª µð·ºÅ丮°¡ ¾øÀ½ touch /root/buildroot/toolchain_build_i386/linux/.patched rm -f /root/buildroot/toolchain_build_i386/linux/include/asm touch /root/buildroot/toolchain_build_i386/linux/include/linux/autoconf.h; touch /root/buildroot/toolchain_build_i386/linux/.configured http://ep09.pld-linux.org/~mmazur/linux-libc-headers/ }}} {{{ [root@localhost buildroot]# make mkdir -p /root/buildroot/toolchain_build_i386 bzcat /root/buildroot/dl/uClibc-snapshot.tar.bz2 | tar -C /root/buildroot/toolchain_build_i386 -xf - touch /root/buildroot/toolchain_build_i386/uClibc/.unpacked /root/buildroot/build_i386/staging_dir/bin/sed -i -e 's,^CROSS=.*,CROSS=/root/buildroot/build_i386/staging_dir/bin/i386-linux-uclibc-,g' /root/buildroot/toolchain_build_i386/uClibc/Rules.mak cp toolchain/uClibc/uClibc.config-locale /root/buildroot/toolchain_build_i386/uClibc/.config /root/buildroot/build_i386/staging_dir/bin/sed -i -e 's,^.*TARGET_i386.*,TARGET_i386=y,g' \ /root/buildroot/toolchain_build_i386/uClibc/.config /root/buildroot/build_i386/staging_dir/bin/sed -i -e 's,^TARGET_ARCH.*,TARGET_ARCH=\"i386\",g' /root/buildroot/toolchain_build_i386/uClibc/.config /root/buildroot/build_i386/staging_dir/bin/sed -i -e 's,^KERNEL_SOURCE=.*,KERNEL_SOURCE=\"/root/buildroot/toolchain_build_i386/linux\",g' \ /root/buildroot/toolchain_build_i386/uClibc/.config /root/buildroot/build_i386/staging_dir/bin/sed -i -e 's,^RUNTIME_PREFIX=.*,RUNTIME_PREFIX=\"/\",g' \ /root/buildroot/toolchain_build_i386/uClibc/.config /root/buildroot/build_i386/staging_dir/bin/sed -i -e 's,^DEVEL_PREFIX=.*,DEVEL_PREFIX=\"/usr/\",g' \ /root/buildroot/toolchain_build_i386/uClibc/.config /root/buildroot/build_i386/staging_dir/bin/sed -i -e 's,^SHARED_LIB_LOADER_PREFIX=.*,SHARED_LIB_LOADER_PREFIX=\"/lib\",g' \ /root/buildroot/toolchain_build_i386/uClibc/.config /root/buildroot/build_i386/staging_dir/bin/sed -i -e 's,^.*UCLIBC_HAS_LFS.*,UCLIBC_HAS_LFS=n,g' /root/buildroot/toolchain_build_i386/uClibc/.config /root/buildroot/build_i386/staging_dir/bin/sed -i -e 's,.*UCLIBC_HAS_WCHAR.*,UCLIBC_HAS_WCHAR=y,g' /root/buildroot/toolchain_build_i386/uClibc/.config mkdir -p /root/buildroot/toolchain_build_i386/uClibc_dev/usr/include mkdir -p /root/buildroot/toolchain_build_i386/uClibc_dev/usr/lib mkdir -p /root/buildroot/toolchain_build_i386/uClibc_dev/lib make -C /root/buildroot/toolchain_build_i386/uClibc \ PREFIX=/root/buildroot/toolchain_build_i386/uClibc_dev/ \ DEVEL_PREFIX=/usr/ \ RUNTIME_PREFIX=/root/buildroot/toolchain_build_i386/uClibc_dev/ \ HOSTCC="gcc" \ pregen install_dev; make[1]: /root/buildroot/build_i386/staging_dir/bin/i386-linux-uclibc-gcc: ¸í·É À» ãÁö ¸øÇßÀ½ make[1]: Entering directory `/root/buildroot/toolchain_build_i386/uClibc' make[1]: /root/buildroot/build_i386/staging_dir/bin/i386-linux-uclibc-gcc: ¸í·É À» ãÁö ¸øÇßÀ½ make[2]: /root/buildroot/build_i386/staging_dir/bin/i386-linux-uclibc-gcc: Command not found make[2]: Entering directory `/root/buildroot/toolchain_build_i386/uClibc/extra/config' make[2]: /root/buildroot/build_i386/staging_dir/bin/i386-linux-uclibc-gcc: Command not found cp zconf.tab.h_shipped zconf.tab.h gcc -O2 -Wall -I. -c conf.c -o conf.o cp zconf.tab.c_shipped zconf.tab.c cp lex.zconf.c_shipped lex.zconf.c gcc -O2 -Wall -I. -c zconf.tab.c -o zconf.tab.o gcc conf.o zconf.tab.o -o conf make[2]: Leaving directory `/root/buildroot/toolchain_build_i386/uClibc/extra/config' rm -f -r include/bits install -d include/bits # # using defaults found in .config # .config:46: trying to assign nonexistent symbol UCLIBC_PROPOLICE .config:47: trying to assign nonexistent symbol UCLIBC_PROFILING * * uClibc Configuration * Target Architecture 1. alpha (TARGET_alpha) 2. arm (TARGET_arm) 3. bfin (TARGET_bfin) 4. cris (TARGET_cris) 5. e1 (TARGET_e1) 6. frv (TARGET_frv) 7. h8300 (TARGET_h8300) > 8. i386 (TARGET_i386) 9. i960 (TARGET_i960) 10. m68k (TARGET_m68k) 11. microblaze (TARGET_microblaze) 12. mips (TARGET_mips) 13. nios (TARGET_nios) 14. nios2 (TARGET_nios2) 15. powerpc (TARGET_powerpc) 16. superh (TARGET_sh) 17. sh64 (TARGET_sh64) (NEW) 18. sparc (TARGET_sparc) 19. v850 (TARGET_v850) 20. x86_64 (TARGET_x86_64) (NEW) choice[1-20?]: 8 * * Target Architecture Features and Options * Target x86 Processor Family > 1. Generic 386 (CONFIG_GENERIC_386) (NEW) 2. 386 (CONFIG_386) (NEW) 3. 486 (CONFIG_486) (NEW) 4. Pentium/586/K5/5x86/6x86/6x86MX (CONFIG_586) (NEW) 5. Pentium-MMX (CONFIG_586MMX) (NEW) 6. Pentium-Pro (CONFIG_686) (NEW) 7. Celeron/Pentium-II (CONFIG_PENTIUMII) (NEW) 8. Pentium-III/Celeron(Coppermine)/Pentium-III Xeon (CONFIG_PENTIUMIII) (NEW) 9. Pentium-4/Celeron(P4-based)/Xeon (CONFIG_PENTIUM4) (NEW) 10. K6/K6-II/K6-III (CONFIG_K6) (NEW) 11. Athlon/Duron/K7 (CONFIG_K7) (NEW) 12. Elan (CONFIG_ELAN) (NEW) 13. Crusoe (CONFIG_CRUSOE) (NEW) 14. Winchip-C6 (CONFIG_WINCHIPC6) (NEW) 15. Winchip-2/Winchip-2A/Winchip-3 (CONFIG_WINCHIP2) (NEW) 16. CyrixIII/VIA-C3 (CONFIG_CYRIXIII) (NEW) 17. VIA C3-2 (Nehemiah) (CONFIG_NEHEMIAH) (NEW) choice[1-17?]: 1 Target Processor Endianness > 1. Little Endian (ARCH_LITTLE_ENDIAN) (NEW) choice[1]: 1 Target CPU has a memory management unit (MMU) (ARCH_HAS_MMU) [Y/?] (NEW) y Enable floating point number support (UCLIBC_HAS_FLOATS) [Y/n/?] y Target CPU has a floating point unit (FPU) (HAS_FPU) [Y/n/?] y Enable full C99 math library support (DO_C99_MATH) [Y/n/?] y Linux kernel header location (KERNEL_SOURCE) [/root/buildroot/toolchain_build_i386/linux] /root/buildroot/toolchain_build_i386/linux * * General Library Settings * Generate Position Independent Code (PIC) (DOPIC) [Y/n/?] y Enable support for shared libraries (HAVE_SHARED) [Y/n/?] y Compile native shared library loader (BUILD_UCLIBC_LDSO) [Y/n/?] y Only load shared libraries which can share their text segment (FORCE_SHAREABLE_TEXT_SEGMENTS) [N/y/?] n Native shared library loader 'ldd' support (LDSO_LDD_SUPPORT) [Y/n/?] y Enable shared library loader cache (LDSO_CACHE_SUPPORT) [Y/n/?] (NEW) n Enable shared library loader preload file support (LDSO_PRELOAD_FILE_SUPPORT) [N/y/?] (NEW) Enable ELF RUNPATH tag support (LDSO_RUNPATH) [Y/n/?] (NEW) uClibc 0.9.27 compatibility (DL_FINI_CRT_COMPAT) [N/y/?] (NEW) Support global constructors and destructors (UCLIBC_CTOR_DTOR) [Y/n/?] y POSIX Threading Support (UCLIBC_HAS_THREADS) [Y/n/?] y Build pthreads debugging support (PTHREADS_DEBUG_SUPPORT) [Y/n/?] y Large File Support (UCLIBC_HAS_LFS) [N/y/?] n Link ldconfig statically (UCLIBC_STATIC_LDCONFIG) [Y/n/?] (NEW) Malloc Implementation 1. malloc (MALLOC) 2. malloc-simple (MALLOC_SIMPLE) > 3. malloc-standard (MALLOC_STANDARD) choice[1-3?]: 3 Malloc returns live pointer for malloc(0) (MALLOC_GLIBC_COMPAT) [Y/n/?] y Dynamic atexit() Support (UCLIBC_DYNAMIC_ATEXIT) [Y/n/?] y Shadow Password Support (HAS_SHADOW) [Y/n/?] y Support only Unix 98 PTYs (UNIX98PTY_ONLY) [N/y/?] n Assume that /dev/pts is a devpts or devfs file system (ASSUME_DEVPTS) [Y/n/?] y Support 'struct tm' timezone extension fields (UCLIBC_HAS_TM_EXTENSIONS) [Y/n/?] y Enable caching of the last valid timezone 'TZ' string (UCLIBC_HAS_TZ_CACHING) [Y/n/?] y Enable '/etc/TZ' file support to set a default timezone (uClibc-specific) (UCLIBC_HAS_TZ_FILE) [Y/n/?] y Repeatedly read the '/etc/TZ' file (UCLIBC_HAS_TZ_FILE_READ_MANY) [Y/n/?] y Path to the 'TZ' file for setting the global timezone (UCLIBC_TZ_FILE_PATH) [/etc/TZ] /etc/TZ * * Networking Support * IP version 6 Support (UCLIBC_HAS_IPV6) [Y/n/?] y Remote Procedure Call (RPC) support (UCLIBC_HAS_RPC) [Y/n/?] y Full RPC support (UCLIBC_HAS_FULL_RPC) [Y/n/?] y Reentrant RPC support (UCLIBC_HAS_REENTRANT_RPC) [N/y/?] (NEW) * * String and Stdio Support * Use glibc generic string functions (UCLIBC_HAS_STRING_GENERIC_OPT) [Y/n/?] (NEW) Use arch-specific string functions (UCLIBC_HAS_STRING_ARCH_OPT) [Y/n/?] (NEW) Use Table Versions Of 'ctype.h' Functions. (UCLIBC_HAS_CTYPE_TABLES) [Y/?] y Support Signed Characters In 'ctype.h' Functions. (UCLIBC_HAS_CTYPE_SIGNED) [Y/n/?] y ctype argument checking 1. Do not check -- unsafe (UCLIBC_HAS_CTYPE_UNSAFE) > 2. Detect and handle appropriately (UCLIBC_HAS_CTYPE_CHECKED) 3. Issue a diagnostic and abort() (UCLIBC_HAS_CTYPE_ENFORCED) choice[1-3?]: 2 Wide Character Support (UCLIBC_HAS_WCHAR) [Y/?] y Locale Support (UCLIBC_HAS_LOCALE) [Y/n/?] y Use Pre-generated Locale Data (UCLIBC_PREGENERATED_LOCALE_DATA) [Y/n/?] y Automagically Download the Pre-generated Locale Data (if necessary) (UCLIBC_DOWNLOAD_PREGENERATED_LOCALE_DATA) [Y/n/?] y Extended Locale Support (experimental/incomplete) (UCLIBC_HAS_XLOCALE) [Y/n/?] y Support hexadecimal float notation (UCLIBC_HAS_HEXADECIMAL_FLOATS) [Y/n/?] y Support glibc's "'" flag for allowing locale-specific digit grouping (UCLIBC_HAS_GLIBC_DIGIT_GROUPING) [Y/n/?] y Do not require digit grouping when the "'" flag is specified (UCLIBC_HAS_SCANF_LENIENT_DIGIT_GROUPING) [Y/n/?] y Support glibc's register_printf_function() (glibc-compat) (UCLIBC_HAS_GLIBC_CUSTOM_PRINTF) [Y/n/?] y Maximum number of positional args. Either 0 or >= 9. (UCLIBC_PRINTF_SCANF_POSITIONAL_ARGS) [9] 9 Support glibc's 'a' flag for scanf string conversions (not implemented) (UCLIBC_HAS_SCANF_GLIBC_A_FLAG) [Y/n/?] y Stdio buffer size 1. 256 (minimum ANSI/ISO C99 value) (UCLIBC_HAS_STDIO_BUFSIZ_256) 2. 512 (UCLIBC_HAS_STDIO_BUFSIZ_512) 3. 1024 (UCLIBC_HAS_STDIO_BUFSIZ_1024) 4. 2048 (UCLIBC_HAS_STDIO_BUFSIZ_2048) > 5. 4096 (UCLIBC_HAS_STDIO_BUFSIZ_4096) 6. 8192 (UCLIBC_HAS_STDIO_BUFSIZ_8192) choice[1-6?]: 5 Stdio builtin buffer size (uClibc-specific) > 1. None (UCLIBC_HAS_STDIO_BUILTIN_BUFFER_NONE) 2. 4 (UCLIBC_HAS_STDIO_BUILTIN_BUFFER_4) 3. 8 (UCLIBC_HAS_STDIO_BUILTIN_BUFFER_8) choice[1-3?]: 1 Attemt to shutdown stdio subsystem when abort() is called. (UCLIBC_HAS_STDIO_SHUTDOWN_ON_ABORT) [N/y/?] (NEW) Provide a macro version of getc() (UCLIBC_HAS_STDIO_GETC_MACRO) [Y/n/?] y Provide a macro version of putc() (UCLIBC_HAS_STDIO_PUTC_MACRO) [Y/n/?] y Support auto-r/w transition (UCLIBC_HAS_STDIO_AUTO_RW_TRANSITION) [Y/n/?] y Support an fopen() 'x' flag for exclusive mode (glibc-compat) (UCLIBC_HAS_FOPEN_EXCLUSIVE_MODE) [Y/n/?] y Support fmemopen(), open_memstream(), and fopencookie() (glibc-compat) (UCLIBC_HAS_GLIBC_CUSTOM_STREAMS) [Y/n/?] y Support the '%m' specifier in printf format strings (glibc-compat) (UCLIBC_HAS_PRINTF_M_SPEC) [Y/n/?] y Include the errno message text in the library (UCLIBC_HAS_ERRNO_MESSAGES) [Y/n/?] y Support sys_errlist[] (obsolete-compat) (UCLIBC_HAS_SYS_ERRLIST) [N/y/?] n Include the signum message text in the library (UCLIBC_HAS_SIGNUM_MESSAGES) [Y/n/?] y Support sys_siglist[] (bsd-compat) (UCLIBC_HAS_SYS_SIGLIST) [N/y/?] n Support gnu getopt (UCLIBC_HAS_GNU_GETOPT) [Y/n/?] y * * Big and Tall * Regular Expression Support (UCLIBC_HAS_REGEX) [Y/n/?] y Support the wordexp() interface (UCLIBC_HAS_WORDEXP) [Y/n/?] y Support the ftw() and nftw() interfaces (UCLIBC_HAS_FTW) [Y/n/?] y Support the glob() interface (UCLIBC_HAS_GLOB) [Y/n/?] y * * Library Installation Options * Shared library loader path (SHARED_LIB_LOADER_PREFIX) [/lib] /lib uClibc runtime library directory (RUNTIME_PREFIX) [/] / uClibc development environment directory (DEVEL_PREFIX) [/usr/] /usr/ * * uClibc security related options * Enable security options (UCLIBC_SECURITY) [N/y] n * * uClibc development/debugging options * Cross-compiling toolchain prefix (CROSS_COMPILER_PREFIX) [] (NEW) Build uClibc with debugging symbols (DODEBUG) [N/y/?] n Build pthread with debugging output (DODEBUG_PT) [N/y/?] (NEW) Build uClibc with run-time assertion testing (DOASSERTS) [N/y/?] n Build the shared library loader with debugging support (SUPPORT_LD_DEBUG) [N/y/?] n Build the shared library loader with early debugging support (SUPPORT_LD_DEBUG_EARLY) [N/y/?] n Compiler Warnings (WARNINGS) [-Wall] -Wall Manuel's hidden warnings (UCLIBC_MJN3_ONLY) [N/y/?] n + ./extra/scripts/fix_includes.sh -k /root/buildroot/toolchain_build_i386/linux -t i386 -n Current kernel version is 2.6.12 Using kernel headers from 2.6.12 for architecture 'i386' provided in directory /root/buildroot/toolchain_build_i386/linux + TOPDIR=. + CC=/root/buildroot/build_i386/staging_dir/bin/i386-linux-uclibc-gcc + /bin/sh extra/scripts/gen_bits_syscall_h.sh extra/scripts/gen_bits_syscall_h.sh: line 15: /root/buildroot/build_i386/staging_dir/bin/i386-linux-uclibc-gcc: No such file or directory extra/scripts/gen_bits_syscall_h.sh: line 18: /root/buildroot/build_i386/staging_dir/bin/i386-linux-uclibc-gcc: No such file or directory + cmp include/bits/sysnum.h include/bits/sysnum.h.new + mv -f include/bits/sysnum.h.new include/bits/sysnum.h make -C libc/sysdeps/linux/common headers make[2]: /root/buildroot/build_i386/staging_dir/bin/i386-linux-uclibc-gcc: Command not found make[2]: Entering directory `/root/buildroot/toolchain_build_i386/uClibc/libc/sysdeps/linux/common' make[2]: /root/buildroot/build_i386/staging_dir/bin/i386-linux-uclibc-gcc: Command not found ln -fs ../libc/sysdeps/linux/common/fpu_control.h ../../../..//include/ make[2]: Leaving directory `/root/buildroot/toolchain_build_i386/uClibc/libc/sysdeps/linux/common' make -C libc/sysdeps/linux/i386 headers make[2]: /root/buildroot/build_i386/staging_dir/bin/i386-linux-uclibc-gcc: Command not found make[2]: Entering directory `/root/buildroot/toolchain_build_i386/uClibc/libc/sysdeps/linux/i386' make[2]: /root/buildroot/build_i386/staging_dir/bin/i386-linux-uclibc-gcc: Command not found ln -fs ../libc/sysdeps/linux/i386/fpu_control.h ../../../../include/ make[2]: Leaving directory `/root/buildroot/toolchain_build_i386/uClibc/libc/sysdeps/linux/i386' (cd extra/locale; \ if [ ! -f uClibc-locale-030818.tgz ] ; then \ wget --passive-ftp http://www.uclibc.org/downloads/uClibc-locale-030818.tgz ; \ fi ); --04:09:53-- http://www.uclibc.org/downloads/uClibc-locale-030818.tgz => `uClibc-locale-030818.tgz' Resolving www.uclibc.org... 140.211.166.41 Connecting to www.uclibc.org[140.211.166.41]:80... connected. HTTP request sent, awaiting response... 200 OK Length: 236,073 [application/x-tar] 100%[====================================>] 236,073 70.37K/s ETA 00:00 04:09:57 (70.19 KB/s) - `uClibc-locale-030818.tgz' saved [236,073/236,073] (cd extra/locale; zcat uClibc-locale-030818.tgz | tar -xvf -) c8tables.h locale_data.c locale_mmap.h lt_defines.h uClibc_locale_data.h wctables.h make -C extra/locale pregen make[2]: /root/buildroot/build_i386/staging_dir/bin/i386-linux-uclibc-gcc: Command not found make[2]: Entering directory `/root/buildroot/toolchain_build_i386/uClibc/extra/locale' make[2]: /root/buildroot/build_i386/staging_dir/bin/i386-linux-uclibc-gcc: Command not found cat uClibc_locale_data.h | awk 'BEGIN{i=1}{ if ( /WANT_/ ) i = /endif/ ; else if (i) print }' > ../../include/bits/uClibc_locale_data.h make[2]: Leaving directory `/root/buildroot/toolchain_build_i386/uClibc/extra/locale' install -d /root/buildroot/toolchain_build_i386/uClibc_dev//usr/lib install -d /root/buildroot/toolchain_build_i386/uClibc_dev//usr/include install -m 644 lib/*.[ao] /root/buildroot/toolchain_build_i386/uClibc_dev//usr/lib/ install: cannot stat `lib/*.[ao]': No such file or directory make[1]: [install_dev] ¿À·ù 1 (¹«½ÃµÊ) if [ ""/root/buildroot/toolchain_build_i386/linux"" == "/usr/" ] ; then \ extra_exclude="--exclude include/linux --exclude include/asm'*'" ; \ else \ extra_exclude="" ; \ fi ; \ tar -chf - include --exclude .svn --exclude CVS $extra_exclude \ | tar -xf - -C /root/buildroot/toolchain_build_i386/uClibc_dev//usr/ tar: include/asm-generic: Cannot stat: No such file or directory tar: Error exit delayed from previous errors make[1]: [install_dev] ¿À·ù 1 (¹«½ÃµÊ) find /root/buildroot/toolchain_build_i386/uClibc_dev//usr/ -name .svn | xargs rm -f -r; chown -R `id | sed 's/^uid=\([0-9]*\).*gid=\([0-9]*\).*$/\1:\2/'` /root/buildroot/toolchain_build_i386/uClibc_dev//usr/ for i in `find lib/ -type l -name 'lib[a-zA-Z]*.so' | \ sed -e 's/lib\///'` ; do \ ln -sf ../../root/buildroot/toolchain_build_i386/uClibc_dev/lib/$i.0 \ /root/buildroot/toolchain_build_i386/uClibc_dev//usr/lib/$i; \ done; find: lib/: No such file or directory ln -sf ../../root/buildroot/toolchain_build_i386/uClibc_dev/lib/libthread_db.so.1 \ /root/buildroot/toolchain_build_i386/uClibc_dev//usr/lib/libthread_db.sofor i in `find lib/ -type f -name '*.a' | sed -e 's/lib\///'` ; do \ ln -sf $i /root/buildroot/toolchain_build_i386/uClibc_dev//usr/lib/`echo $i \ | sed -e 's/\.a$/_pic.a/'`; \ done; find: lib/: No such file or directory # Ugh!!! Remember that libdl.a and libdl_pic.a are different. Since # libdl is pretty small, and not likely to benefit from mklibs.py and # similar, lets just remove libdl_pic.a and avoid the issue rm -f /root/buildroot/toolchain_build_i386/uClibc_dev//usr/lib/libdl_pic.a make[1]: Leaving directory `/root/buildroot/toolchain_build_i386/uClibc' touch /root/buildroot/toolchain_build_i386/uClibc/.configured [root@localhost buildroot]# }}} {{{ uclibc-target-utils [root@localhost buildroot]# make if [ ! -e "/root/buildroot/build_i386/staging_dir/i386-linux-uclibc/lib" ] ; then \ ln -snf ../lib /root/buildroot/build_i386/staging_dir/i386-linux-uclibc/lib; \ fi make -C /root/buildroot/toolchain_build_i386/uClibc PATH=/root/buildroot/build_i386/staging_dir/bin:/root/buildroot/toolchain_build_i386/bin:/bin:/sbin:/usr/bin:/usr/sbin AR=/root/buildroot/build_i386/staging_dir/bin/i386-linux-uclibc-ar AS=/root/buildroot/build_i386/staging_dir/bin/i386-linux-uclibc-as LD=/root/buildroot/build_i386/staging_dir/bin/i386-linux-uclibc-ld NM=/root/buildroot/build_i386/staging_dir/bin/i386-linux-uclibc-nm CC=/root/buildroot/build_i386/staging_dir/bin/i386-linux-uclibc-gcc GCC=/root/buildroot/build_i386/staging_dir/bin/i386-linux-uclibc-gcc CXX=/root/buildroot/build_i386/staging_dir/bin/i386-linux-uclibc-g++ RANLIB=/root/buildroot/build_i386/staging_dir/bin/i386-linux-uclibc-ranlib OBJCOPY=/root/buildroot/build_i386/staging_dir/bin/i386-linux-uclibc-objcopy \ PREFIX=/root/buildroot/build_i386/root utils install_utils make[1]: Entering directory `/root/buildroot/toolchain_build_i386/uClibc' make CROSS=" /root/buildroot/build_i386/staging_dir/bin/i386-linux-uclibc-" CC="/root/buildroot/build_i386/staging_dir/bin/i386-linux-uclibc-gcc" -C utils make[2]: Entering directory `/root/buildroot/toolchain_build_i386/uClibc/utils' /root/buildroot/build_i386/staging_dir/bin/i386-linux-uclibc-gcc -Wall -Wstrict-prototypes -Wno-trigraphs -fno-strict-aliasing -fno-builtin -nostdinc -D_LIBC -I../include -I. -mpreferred-stack-boundary=2 -falign-jumps=0 -falign-loops=0 -Os -funit-at-a-time -isystem /root/buildroot/build_i386/staging_dir/lib/gcc/i386-linux-uclibc/4.0.0/include -DNDEBUG -fPIC \ -DUCLIBC_RUNTIME_PREFIX=\"/\" \ -DUCLIBC_LDSO=ld-uClibc.so.0 -I. -I../ldso/include \ ldd.c -o ldd /root/buildroot/build_i386/staging_dir/bin/i386-linux-uclibc-strip -s -x -R .note -R .comment ldd /root/buildroot/build_i386/staging_dir/bin/i386-linux-uclibc-gcc -Wall -Wstrict-prototypes -Wno-trigraphs -fno-strict-aliasing -fno-builtin -nostdinc -D_LIBC -I../include -I. -mpreferred-stack-boundary=2 -falign-jumps=0 -falign-loops=0 -Os -funit-at-a-time -isystem /root/buildroot/build_i386/staging_dir/lib/gcc/i386-linux-uclibc/4.0.0/include -DNDEBUG -fPIC \ -DUCLIBC_RUNTIME_PREFIX=\"/\" \ -DUCLIBC_LDSO=ld-uClibc.so.0 -I. -I../ldso/include \ ldconfig.c -o ldconfig ldconfig.c: In function 'is_shlib': ldconfig.c:281: warning: pointer targets in passing argument 1 of 'strncmp' differ in signedness /root/buildroot/build_i386/staging_dir/bin/i386-linux-uclibc-strip -s -x -R .note -R .comment ldconfig /root/buildroot/build_i386/staging_dir/bin/i386-linux-uclibc-gcc -Wall -Wstrict-prototypes -Wno-trigraphs -fno-strict-aliasing -fno-builtin -nostdinc -D_LIBC -I../include -I. -mpreferred-stack-boundary=2 -falign-jumps=0 -falign-loops=0 -Os -funit-at-a-time -isystem /root/buildroot/build_i386/staging_dir/lib/gcc/i386-linux-uclibc/4.0.0/include -DNDEBUG -fPIC readelf.c -o readelf /root/buildroot/build_i386/staging_dir/bin/i386-linux-uclibc-strip -s -x -R .note -R .comment readelf /root/buildroot/build_i386/staging_dir/bin/i386-linux-uclibc-gcc -Wall -Wstrict-prototypes -Wno-trigraphs -fno-strict-aliasing -fno-builtin -nostdinc -D_LIBC -I../include -I. -mpreferred-stack-boundary=2 -falign-jumps=0 -falign-loops=0 -Os -funit-at-a-time -isystem /root/buildroot/build_i386/staging_dir/lib/gcc/i386-linux-uclibc/4.0.0/include -DNDEBUG -fPIC \ -DL_iconv_main \ ../libc/misc/wchar/wchar.c -o iconv ../libc/misc/wchar/wchar.c: In function 'main': ../libc/misc/wchar/wchar.c:1628: warning: pointer targets in assignment differ in signedness /root/buildroot/build_i386/staging_dir/bin/i386-linux-uclibc-strip -s -x -R .note -R .comment iconv make[2]: Leaving directory `/root/buildroot/toolchain_build_i386/uClibc/utils' make CROSS=" /root/buildroot/build_i386/staging_dir/bin/i386-linux-uclibc-" CC="/root/buildroot/build_i386/staging_dir/bin/i386-linux-uclibc-gcc" -C utils install make[2]: Entering directory `/root/buildroot/toolchain_build_i386/uClibc/utils' install -d /root/buildroot/build_i386/root/sbin install -d /root/buildroot/build_i386/root/usr/bin install -m 755 ldd /root/buildroot/build_i386/root/usr/bin/ldd install -m 755 ldconfig /root/buildroot/build_i386/root/sbin/ldconfig; #install -m 755 readelf /root/buildroot/build_i386/root/usr/bin/readelf install -m 755 iconv /root/buildroot/build_i386/root/usr/bin/iconv make[2]: Leaving directory `/root/buildroot/toolchain_build_i386/uClibc/utils' make[1]: Leaving directory `/root/buildroot/toolchain_build_i386/uClibc' mkdir -p /root/buildroot/build_i386/staging_dir/i386-linux-uclibc/target_utils install -c /root/buildroot/build_i386/root/usr/bin/ldd \ /root/buildroot/build_i386/staging_dir/i386-linux-uclibc/target_utils/ldd touch -c /root/buildroot/build_i386/root/usr/bin/ldd }}} {{{ ccache [root@localhost buildroot]# make if [ ! -e "/root/buildroot/build_i386/staging_dir/i386-linux-uclibc/lib" ] ; then \ ln -snf ../lib /root/buildroot/build_i386/staging_dir/i386-linux-uclibc/lib; \ fi wget --passive-ftp -P /root/buildroot/dl http://ccache.samba.org/ftp/ccache/ccache-2.4.tar.gz --04:08:14-- http://ccache.samba.org/ftp/ccache/ccache-2.4.tar.gz => `/root/buildroot/dl/ccache-2.4.tar.gz' Resolving ccache.samba.org... 66.70.73.150 Connecting to ccache.samba.org[66.70.73.150]:80... connected. HTTP ¿äûÀ» º¸³À´Ï´Ù, ¼­¹ö·ÎºÎÅÍÀÇ ÀÀ´äÀ» ±â´Ù¸²...200 OK ±æÀÌ: 86,363 [application/x-tar] 100%[====================================>] 86,363 72.17K/s 04:08:16 (72.00 KB/s) - `/root/buildroot/dl/ccache-2.4.tar.gz' saved [86,363/86,363] zcat /root/buildroot/dl/ccache-2.4.tar.gz | tar -C /root/buildroot/toolchain_build_i386 -xf - touch /root/buildroot/toolchain_build_i386/ccache-2.4/.unpacked # WARNING - this will break if the toolchain is moved. # Should probably patch things to use a relative path. /root/buildroot/toolchain_build_i386/bin/sed -i -e "s,getenv(\"CCACHE_PATH\"),\"/root/buildroot/build_i386/staging_dir/bin-ccache\",g" \ /root/buildroot/toolchain_build_i386/ccache-2.4/execute.c # WARNING - this will break if the toolchain build dir is deleted. /root/buildroot/toolchain_build_i386/bin/sed -i -e "s,getenv(\"CCACHE_DIR\"),\"/root/buildroot/toolchain_build_i386/ccache-2.4/cache\",g" \ /root/buildroot/toolchain_build_i386/ccache-2.4/ccache.c mkdir -p /root/buildroot/toolchain_build_i386/ccache-2.4/cache touch /root/buildroot/toolchain_build_i386/ccache-2.4/.patched mkdir -p /root/buildroot/toolchain_build_i386/ccache-2.4 (cd /root/buildroot/toolchain_build_i386/ccache-2.4; rm -rf config.cache; \ CC=gcc \ /root/buildroot/toolchain_build_i386/ccache-2.4/configure \ --target=i386-pc-linux-gnu \ --host=i386-pc-linux-gnu \ --build=i386-pc-linux-gnu \ --prefix=/usr \ ); configure: Configuring ccache checking for i386-pc-linux-gnu-gcc... gcc checking for C compiler default output file name... a.out checking whether the C compiler works... yes checking whether we are cross compiling... no checking for suffix of executables... checking for suffix of object files... o checking whether we are using the GNU C compiler... yes checking whether gcc accepts -g... yes checking for gcc option to accept ANSI C... none needed checking how to run the C preprocessor... gcc -E checking for a BSD-compatible install... /usr/bin/install -c checking for dirent.h that defines DIR... yes checking for library containing opendir... none required checking whether time.h and sys/time.h may both be included... yes checking for sys/wait.h that is POSIX.1 compatible... yes checking for egrep... grep -E checking for ANSI C header files... yes checking for sys/types.h... yes checking for sys/stat.h... yes checking for stdlib.h... yes checking for string.h... yes checking for memory.h... yes checking for strings.h... yes checking for inttypes.h... yes checking for stdint.h... yes checking for unistd.h... yes checking ctype.h usability... yes checking ctype.h presence... yes checking for ctype.h... yes checking for strings.h... (cached) yes checking for stdlib.h... (cached) yes checking for string.h... (cached) yes checking pwd.h usability... yes checking pwd.h presence... yes checking for pwd.h... yes checking for realpath... yes checking for snprintf... yes checking for vsnprintf... yes checking for vasprintf... yes checking for asprintf... yes checking for mkstemp... yes checking for gethostname... yes checking for getpwuid... yes checking for compar_fn_t in stdlib.h... yes checking for C99 vsnprintf... yes configure: creating ./config.status config.status: creating Makefile config.status: creating config.h touch /root/buildroot/toolchain_build_i386/ccache-2.4/.configured make -j1 CC=gcc -C /root/buildroot/toolchain_build_i386/ccache-2.4 make[1]: Entering directory `/root/buildroot/toolchain_build_i386/ccache-2.4' gcc -g -O2 -Wall -W -I. -c -o ccache.o ccache.c gcc -g -O2 -Wall -W -I. -c -o mdfour.o mdfour.c gcc -g -O2 -Wall -W -I. -c -o hash.o hash.c gcc -g -O2 -Wall -W -I. -c -o execute.o execute.c gcc -g -O2 -Wall -W -I. -c -o util.o util.c gcc -g -O2 -Wall -W -I. -c -o args.o args.c gcc -g -O2 -Wall -W -I. -c -o stats.o stats.c gcc -g -O2 -Wall -W -I. -c -o cleanup.o cleanup.c gcc -g -O2 -Wall -W -I. -c -o snprintf.o snprintf.c gcc -g -O2 -Wall -W -I. -c -o unify.o unify.c gcc -g -O2 -Wall -W -I. -o ccache ccache.o mdfour.o hash.o execute.o util.o args.o stats.o cleanup.o snprintf.o unify.o make[1]: Leaving directory `/root/buildroot/toolchain_build_i386/ccache-2.4' mkdir -p /root/buildroot/build_i386/staging_dir/usr/bin; cp /root/buildroot/toolchain_build_i386/ccache-2.4/ccache /root/buildroot/build_i386/staging_dir/usr/bin # Keep the actual toolchain binaries in a directory at the same level. # Otherwise, relative paths for include dirs break. mkdir -p /root/buildroot/build_i386/staging_dir/bin-ccache; (cd /root/buildroot/build_i386/staging_dir/bin-ccache; \ ln -fs i386-linux-uclibc-gcc i386-linux-gcc; \ ln -fs i386-linux-uclibc-gcc i386-linux-cc; \ ln -fs i386-linux-uclibc-gcc i386-linux-uclibc-cc); [ -f /root/buildroot/build_i386/staging_dir/bin/i386-linux-uclibc-gcc ] && \ mv /root/buildroot/build_i386/staging_dir/bin/i386-linux-uclibc-gcc /root/buildroot/build_i386/staging_dir/bin-ccache/ (cd /root/buildroot/build_i386/staging_dir/bin; \ ln -fs ../usr/bin/ccache i386-linux-cc; \ ln -fs ../usr/bin/ccache i386-linux-gcc; \ ln -fs ../usr/bin/ccache i386-linux-uclibc-cc; \ ln -fs ../usr/bin/ccache i386-linux-uclibc-gcc); }}} {{{ sstrip [root@localhost buildroot]# make if [ ! -e "/root/buildroot/build_i386/staging_dir/i386-linux-uclibc/lib" ] ; then \ ln -snf ../lib /root/buildroot/build_i386/staging_dir/i386-linux-uclibc/lib; \ fi ln -snf ../../bin/i386-linux-uclibc-sstrip \ /root/buildroot/build_i386/staging_dir/i386-linux-uclibc/bin/sstrip ln -snf i386-linux-uclibc-sstrip \ /root/buildroot/build_i386/staging_dir/bin/i386-linux-sstrip gcc .//toolchain/sstrip/sstrip.c -o /root/buildroot/build_i386/staging_dir/bin/i386-linux-uclibc-sstrip 15580 /root/buildroot/build_i386/staging_dir/bin/i386-linux-uclibc-gcc -Os -pipe .//toolchain/sstrip/sstrip.c -o /root/buildroot/build_i386/root/usr/bin/sstrip 10776 }}} {{{ host/build system target system http://www.xs4all.nl/~lennartb/rescuedisk/node2.html }}} * make menuconfig : package/config ¿¡¼­ make * build_i386 * root * staging_dir : toolchain and header files * dl * toolchain_build_i386