2012年6月17日 星期日

Prepare Eglibc source code ....

What is eglibc ?
Embedded GLIBC (EGLIBC) is a variant of the GNU C Library (GLIBC) that is designed to work well on embedded systems.
http://www.eglibc.org/home

因為我們產品是 Embedded System . 所以放棄 glibc , 選 eglibc .
相同的 , 我們先要進行一些 patch , patch 的內容如下:

Submitted By: Jim Gifford (jim at cross-lfs dot org)
Date: 07-26-2009
Initial Package Version: 2.10.1
Origin: Upstream
Upstream Status: Applied
Description: These are fixes eglibc-2.10.1, and should be
rechecked periodically.

diff -Naur libc.orig/elf/ldd.bash.in libc/elf/ldd.bash.in
--- libc.orig/elf/ldd.bash.in 2009-02-13 13:31:14.533608000 -0500
+++ libc/elf/ldd.bash.in 2009-07-26 17:57:12.160403278 -0400
@@ -1,4 +1,4 @@
-#! @BASH@
+#! /bin/bash
# Copyright (C) 1996-2008, 2009 Free Software Foundation, Inc.
# This file is part of the GNU C Library.

diff -Naur libc.orig/libio/Makefile libc/libio/Makefile
--- libc.orig/libio/Makefile 2009-07-02 16:03:14.096441000 -0400
+++ libc/libio/Makefile 2009-07-26 17:57:12.160403278 -0400
@@ -170,6 +170,7 @@
tst-fopenloc-ENV = LOCPATH=$(common-objpfx)localedata \
MALLOC_TRACE=$(objpfx)tst-fopenloc.mtrace
tst-fgetws-ENV = LOCPATH=$(common-objpfx)localedata
+tst-fgetwc-ENV = LOCPATH=$(common-objpfx)localedata
tst-ungetwc1-ENV = LOCPATH=$(common-objpfx)localedata
tst-ungetwc2-ENV = LOCPATH=$(common-objpfx)localedata
bug-ungetwc2-ENV = LOCPATH=$(common-objpfx)localedata
diff -Naur libc.orig/sunrpc/Makefile libc/sunrpc/Makefile
--- libc.orig/sunrpc/Makefile 2008-04-25 07:12:05.875033000 -0400
+++ libc/sunrpc/Makefile 2009-07-26 17:57:12.157073385 -0400
@@ -144,11 +144,11 @@
$(+link)

$(addprefix $(objpfx)cross-,$(rpcgen-objs)): $(objpfx)cross-%.o: %.c
- gcc $< -c -D_RPC_THREAD_SAFE_ -D_CROSS_RPCGEN_ \
+ $(BUILD_CC) $< -c -D_RPC_THREAD_SAFE_ -D_CROSS_RPCGEN_ \
$(OUTPUT_OPTION) $(compile-mkdep-flags)

$(objpfx)cross-rpcgen: $(addprefix $(objpfx)cross-,$(rpcgen-objs))
- gcc $^ -o $@
+ $(BUILD_CC) $^ -o $@

# This makes sure -DNOT_IN_libc is passed for all these modules.
cpp-srcs-left := $(rpcgen-objs:.o=.c)
diff -Naur libc.orig/timezone/Makefile libc/timezone/Makefile
--- libc.orig/timezone/Makefile 2009-03-03 08:14:09.770962000 -0500
+++ libc/timezone/Makefile 2009-07-26 17:57:12.157073385 -0400
@@ -181,11 +181,11 @@
$(objpfx)zic: $(addprefix $(objpfx), $(zic-objs))

$(addprefix $(objpfx)cross-,$(zic-objs)): $(objpfx)cross-%.o: %.c
- gcc $< -c $(OUTPUT_OPTION) $(CFLAGS-$*.c) $(CPPFLAGS-$*) \
+ $(BUILD_CC) $< -c $(OUTPUT_OPTION) $(CFLAGS-$*.c) $(CPPFLAGS-$*) \
-DCROSS_ZIC $(compile-mkdep-flags)

$(objpfx)cross-zic: $(addprefix $(objpfx)cross-,$(zic-objs))
- gcc $(addprefix $(objpfx)cross-,$(zic-objs)) -o $@
+ $(BUILD_CC) $(addprefix $(objpfx)cross-,$(zic-objs)) -o $@

tz-cflags = -DTZDIR='"$(zonedir)"' \
-DTZDEFAULT='"$(localtime-file)"' \



接著 , 我們要將 eglibc-ports-2.10.1-20090726-r8632.tar.bz2 也解縮到 eglic 的 source tree 中.

另外 , 也需要對Makeconfig 檔案進行 patch .
cp -v Makeconfig Makeconfig.orig ;
sed -e 's/-lgcc_eh//g' Makeconfig.orig > Makeconfig ;
這樣就準備好了 eglibc 的 source code 了 !!

可以進行下一個階段了 ...... !!

沒有留言:

張貼留言