On 06/29/2013 05:38 AM, Wayne Blaszczyk wrote:
> On 13/06/13 01:36, Armin K. wrote:
>>>
>>
>> I see nothing wrong there. It can be that your ldd is part of 32bit
>> glibc (was it you that was building multilib CLFS?) and it can't check
>> 64bit libraries. My practice for multilib LFS (yes LFS) is only to
>> install 32bit libraries into /lib32 and/or /usr/lib32 and maybe some
>> required executables to /usr/bin with -32 suffix - gio-querymodules-32,
>> gdk-pixbuf-query-loaders-32, gtk-query-immodules-2.0-32,
>> pango-querymodules-32 and so on. (everything is done using DESTDIR method).
>>
>
> Hi Armin,
>
> I would be very interested in how you achieved this. Have you got some
> kind of guide you can post?
> I too myself would like to install some 32 bit libs, in my case I use
> ICA Client which is 32 bit only. Currently, I have an old 32bit tarball
> of libraries which I complied, maybe 5 years ago on a 32 bit system
> which I just un-tar on my 64bit system. That seems to work fine, but I
> would like to build a fresh set.
> I can successfully build a 32 bit glibc onto my 64 bit system using some
> of the CLFS (cross-tools) instructions, but that is as far as I got. I
> cannot build gcc with multi lib as I'm not to sure about the prerequisites.
>
> Thanks,
> Wayne.
>
>
Ugh, I don't have the guide anymore, but I did combine CLFS and
Temporary Toolchain Instructions from LFS to achieve this.
In the first step you need static multilib binutils and compiler:
export PATH=/usr/gcc:$PATH
Binutils:
...
--prefix=/usr/gcc \
--target=x86_64-krejzi-linux-gnu \
--enable-multilib
make
make install
Static GCC:
...
--target=x86_64-krejzi-linux-gnu \
--prefix=/usr/gcc \
--with-newlib \
--without-headers \
--disable-shared \
--disable-decimal-float \
--disable-threads \
--disable-libatomic \
--disable-libgomp \
--disable-libitm \
--disable-libmudflap \
--disable-libquadmath \
--disable-libsanitizer \
--disable-libssp \
--disable-libstdc++-v3 \
--enable-languages=c \
--enable-multilib
make all-gcc all-target-libgcc
make install-gcc install-target-libgcc
ln -sv libgcc.a `x86_64-krejzi-linux-gnu-gcc -print-libgcc-file-name |
sed 's/libgcc/&_eh/'`
ln -sv libgcc.a `x86_64-krejzi-linux-gnu-gcc -m32
-print-libgcc-file-name | sed 's/libgcc/&_eh/'`
32 bit Glibc:
echo slibdir=/lib32 > configparms
BUILD_CC="gcc" \
CC="x86_64-krejzi-linux-gnu-gcc -m32" \
AR="x86_64-krejzi-linux-gnu-ar" \
RANLIB="x86_64-krejzi-linux-gnu-ranlib" \
...
--prefix=/usr \
--libdir=/usr/lib32 \
--libexecdir=/usr/lib32 \
--disable-profile \
--enable-add-ons \
--enable-kernel=2.6.32 \
i686-pc-linux-gnu
make
make install install_root=$PWD/dest
mv $PWD/dest/lib32 /
mv $PWD/dest/usr/lib32 /usr
ln -s ../lib32/ld-linux.so.2 /lib/ld-linux.so.2
echo /lib32 >> /etc/ld.so.conf
echo /usr/lib32 >> /etc/ld.so.conf
ln -s ../lib/locale /usr/lib32/locale
Binutils:
Same instructions as in LFS except you add --enable-multilib
GCC:
Same instructions as in LFS except you add --enable-multilib and
--enable-bootstrap iirc. It should bootstrap itself as long as 32bit
Glibc libraries are there.
I didn't add the apropriate ./configure invocation, adjust it for
yourself (replace ... with it).
Also, first time when I built 32bit glibc using static gcc, I didn't had
exactly the same files in /usr/lib32/getconf and /usr/lib/getconf. I
just rebuilt 32bit Glibc again when the main GCC build was finished
using CC="gcc -m32", ommiting BUILD_CC, AR and RANLIB variables.
I can't guarantee that instructions are correct though. I just
copy/pasted some instructions I remember using back then. I hope I gave
you some pointers. Have fun.
--
http://linuxfromscratch.org/mailman/listinfo/blfs-support
FAQ: http://www.linuxfromscratch.org/blfs/faq.html
Unsubscribe: See the above information page