diff options
Diffstat (limited to 'doc/001291.html')
-rw-r--r-- | doc/001291.html | 242 |
1 files changed, 242 insertions, 0 deletions
diff --git a/doc/001291.html b/doc/001291.html new file mode 100644 index 0000000..5115daf --- /dev/null +++ b/doc/001291.html @@ -0,0 +1,242 @@ +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN"> +<HTML> + <HEAD> + <TITLE> uclibc vs glibc + </TITLE> + <LINK REL="Index" HREF="index.html" > + <LINK REL="made" HREF="mailto:hlfs-dev%40linuxfromscratch.org?Subject=uclibc%20vs%20glibc&In-Reply-To=200411062022.37679.robert%40linuxfromscratch.org"> + <META NAME="robots" CONTENT="index,nofollow"> + <META http-equiv="Content-Type" content="text/html; charset=us-ascii"> + <LINK REL="Previous" HREF="001290.html"> + <LINK REL="Next" HREF="001292.html"> + </HEAD> + <BODY BGCOLOR="#ffffff"> + <H1>uclibc vs glibc</H1> + <B>Robert Connolly</B> + <A HREF="mailto:hlfs-dev%40linuxfromscratch.org?Subject=uclibc%20vs%20glibc&In-Reply-To=200411062022.37679.robert%40linuxfromscratch.org" + TITLE="uclibc vs glibc">robert at linuxfromscratch.org + </A><BR> + <I>Sun Nov 7 00:10:55 MST 2004</I> + <P><UL> + <LI>Previous message: <A HREF="001290.html">uclibc vs glibc +</A></li> + <LI>Next message: <A HREF="001292.html">uclibc vs glibc +</A></li> + <LI> <B>Messages sorted by:</B> + <a href="date.html#1291">[ date ]</a> + <a href="thread.html#1291">[ thread ]</a> + <a href="subject.html#1291">[ subject ]</a> + <a href="author.html#1291">[ author ]</a> + </LI> + </UL> + <HR> +<!--beginarticle--> +<PRE>I think I have success, except that the host system is detected as -gnu +instead of -uclibc. But otherwise its working fine {:-] I attached my +instruction sheet. It appears as though we need to use --host/build/target on +every package, but I'm starting to get the feeling it doesn't really matter +excpet for packages that are patched for it. I'm interested to know what +happens in chapter 6. + +Gawk's testsuite passed. Coreutils did not... it fails strait away. + +make[3]: Entering directory +`/mnt/hlfs/sources/temp/coreutils-5.2.1/tests/basename' +-: test fail-1: stderr mismatch, comparing fail-1.1 (actual) and fail-1.E +(expected) +*** fail-1.1 Sun Nov 7 02:02:47 2004 +--- fail-1.E Sun Nov 7 02:02:47 2004 + +If I run Coreutils tests with make -k I get a lot of passes, but a lot of +failures too. Odd stuff, like no such file, and permission denied, and +mismatches too. Coreutils doesn't leave me any .out files to look at so I'll +shelf this for now and I'll try to get to chapter 6 (tommorrow). + +nini +Robert +-------------- next part -------------- +# LFS with uclibc +# robert + +# This is so the cross linker is found for cross gcc's build, and again for uClibc. +# It gets removed after native tools are set up. +# This path must go on the end so the native tools in /tools/bin are used when +# they get installed. + +export PATH="$PATH:/tools/cross/bin" + +- Uclibc unpack + +Just unpack it. + +- Linux-libc-headers 2.6 + +cp -R include/asm-i386 ../uClibc/include/asm && +cp -R include/{linux,sound} ../uClibc/include + +- Uclibc headers + +make allyesconfig && +sed '<A HREF="http://linuxfromscratch.org/mailman/listinfo/hlfs-dev">s at RUNTIME_PREFIX.</A>*@RUNTIME_PREFIX="/tools"@' -i .config && +echo > extra/scripts/fix_includes.sh + +# This is better than 'cp -R include /tools/include' because this doesn't install +# libintl.h because it doesn't seem to work. +# Ignore the error about missing lib/ + +make headers +make DEVEL_PREFIX=/tools/cross/i386-pc-linux-uclibc/ install_dev + +# Remove this broken link (lets not pretend it works). +# Then remove the empty directory (lets not pretend something is inside). + +rm /tools/cross/i386-pc-linux-uclibc/lib/libthread_db.so && +rmdir /tools/cross/i386-pc-linux-uclibc/lib/ + +- Binutils cross linker + +# The second patch might not be needed, but I don't think it hurts either. + +cat ../binutils-2.15.90.0.3-uclibc-100-conf.patch \ + | sed -e 's@/lib/@/tools/lib/@g' | patch -Np1 && +patch -Np1 -i ../binutils-2.15.90.0.3-uclibc-210-cflags.patch + +mkdir ../binutils-build && +cd ../binutils-build + +../binutils-2.15.90.0.3/configure --prefix=/tools/cross --disable-nls \ + --target=i386-pc-linux-uclibc && +make configure-host && +make LDFLAGS="-all-static" && +make install && +make -C ld clean && +make -C ld LDFLAGS="-all-static" LIB_PATH=/tools/lib + +- Gcc cross compiler + +# Just unpack gcc-core + +# This is a replacement for the LFS specs patch, and adds uClibc specific stuff so +# --target=uclibc works nicer. +patch -Np1 -i ../gcc-3.4.3-uclibc_tools_conf-1.patch + +mkdir ../gcc-build && +cd ../gcc-build + +# The most important thing here is --disable-shared. Untill we have a native C library +# Gcc can not build a libgcc.so (because it uses functions from libc.so). +../gcc-3.4.3/configure --prefix=/tools/cross --target=i386-pc-linux-uclibc \ + --libexecdir=/tools/cross/i386-pc-linux-uclibc/lib \ + --with-local-prefix=/tools/cross \ + --disable-nls --disable-shared --enable-languages=c + +# Not BOOT_LDFLAGS because we are not doing a bootstrap here. +make LDFLAGS="-static" + +make install + +- uClibc build + +make CROSS=i386-pc-linux-uclibc- + +make RUNTIME_PREFIX=/tools/ install_runtime +make DEVEL_PREFIX=/tools/ install_dev + +- Adjusting toolchain + +# In binutils-build +make -C ld install + +# I dont know how to avoid this. Its only for use durring cross compiling. +ln -s /tools/lib/crt* /tools/cross/i386-pc-linux-uclibc/lib + +# Theres no sed(1) command in this, the gcc-uclibc-conf patch took care of it. +# Now test that the compiler works. +echo 'main(){}' > dummy.c +i386-pc-linux-uclibc-gcc dummy.c +readelf -l a.out | grep ': /tools' + +- Gcc native + +patch -Np1 -i ../gcc-3.4.3-uclibc_tools_conf-1.patch + +# This patch tells GCC how to build with uClibc locales for c++. +patch -Np1 -i ../gcc-3.4.1-uclibc-200-locale.patch + +# This is so we don't run the fixincludes scripts. +patch -Np1 -i ../gcc-3.4.3-no_fixincludes-1.patch + +mkdir ../gcc-build && +cd ../gcc-build + +# Uclibc and __cxa_atexit don't get along. --enable-clocale=uclibc, but don't define +# that or else it won't work, it will be echo'd during configure though. + +# The first pass will be with the cross compiler, the bootstrap is with the native. +CC="i386-pc-linux-uclibc-gcc" \ +../gcc-3.4.3/configure --prefix=/tools \ + --host=i386-pc-linux-uclibc --build=i386-pc-linux-uclibc \ + --target=i386-pc-linux-uclibc --enable-shared \ + --libexecdir=/tools/lib --with-local-prefix=/tools \ + --enable-threads=posix --disable-__cxa_atexit \ + --enable-languages=c,c++ --disable-libstdcxx-pch + +make bootstrap + +make install && +ln -s gcc /tools/bin/cc + +- Binutils native + +cat ../binutils-2.15.90.0.3-uclibc-100-conf.patch \ + | sed -e 's@/lib/@/tools/lib/@g' | patch -Np1 && +patch -Np1 -i ../binutils-2.15.90.0.3-uclibc-210-cflags.patch + +mkdir ../binutils-build && +cd ../binutils-build + +../binutils-2.15.90.0.3/configure --prefix=/tools \ + --enable-shared --with-lib-path=/tools/lib \ + --host=i386-pc-linux-uclibc --build=i386-pc-linux-uclibc \ + --target=i386-pc-linux-uclibc && +make && +make install && +make -C ld clean && +make -C ld LIB_PATH=/usr/lib:/lib + +- Gawk + +./configure --prefix=/tools --host=i386-pc-linux-uclibc \ + --build=i386-pc-linux-uclibc --target=i386-pc-linux-uclibc && +make && +make install + +- Coreutils + +./configure --prefix=/tools --host=i386-pc-linux-uclibc \ + --build=i386-pc-linux-uclibc --target=i386-pc-linux-uclibc && +make && +make install + +</PRE> + +<!--endarticle--> + <HR> + <P><UL> + <!--threads--> + <LI>Previous message: <A HREF="001290.html">uclibc vs glibc +</A></li> + <LI>Next message: <A HREF="001292.html">uclibc vs glibc +</A></li> + <LI> <B>Messages sorted by:</B> + <a href="date.html#1291">[ date ]</a> + <a href="thread.html#1291">[ thread ]</a> + <a href="subject.html#1291">[ subject ]</a> + <a href="author.html#1291">[ author ]</a> + </LI> + </UL> + +<hr> +<a href="http://linuxfromscratch.org/mailman/listinfo/hlfs-dev">More information about the hlfs-dev +mailing list</a><br> +</body></html> |