multilib w Ac

Jakub Bogusz qboosh w pld-linux.org
Pią, 18 Mar 2005, 00:16:53 CET


Dla jedynej wspieranej w Ac konfiguracji (x86_64/x86) wydaje się
działać (w prostym przypadku):

$ cat hello.c
#include <stdio.h>

int main()
{
        printf("Hello world.\n");
        return 0;
}
$ gcc -o hello hello.c
$ gcc -m32 -o hello32 hello.c
$ file hello hello32
hello:   ELF 64-bit LSB executable, AMD x86-64, version 1 (SYSV), for GNU/Linux 2.4.6, dynamically linked (uses shared libs), not stripped
hello32: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), for GNU/Linux 2.4.6, dynamically linked (uses shared libs), not stripped
$ ./hello
Hello world.
$ ./hello32
Hello world.

I podobnie:

$ cat hello.cc
#include <iostream>

int main()
{
        std::cout << "Hello world." << std::endl;
}
$ g++ -o hello+ hello.cc
$ g++ -m32 -o hello+32 hello.cc
$ ldd hello+
        libstdc++.so.5 => /usr/lib64/libstdc++.so.5 (0x0000002a9566c000)
        libm.so.6 => /lib64/tls/libm.so.6 (0x0000002a9584a000)
        libgcc_s.so.1 => /lib64/libgcc_s.so.1 (0x0000002a959ce000)
        libc.so.6 => /lib64/tls/libc.so.6 (0x0000002a95ad8000)
        /lib64/ld-linux-x86-64.so.2 (0x0000002a95556000)
$ ldd hello+32
        linux-gate.so.1 =>  (0xffffe000)
        libstdc++.so.5 => /usr/lib/libstdc++.so.5 (0x55597000)
        libm.so.6 => /lib/tls/libm.so.6 (0x55657000)
        libgcc_s.so.1 => /lib/libgcc_s.so.1 (0x5567a000)
        libc.so.6 => /lib/tls/libc.so.6 (0x55682000)
        /lib/ld-linux.so.2 (0x55555000)

Chcemy takie gcc w Ac?

Wymagania to nowe (tzn. podwójne) llh (>= 2.6.10.0-3) oraz dwie wersje
glibc (glibc.{i686 lub athlon[1]} + glibc64.amd64) i glibc-devel[2].
[1] bezpieczniej i686, żeby nie wyszło coś w przypadku ia32e
[2] chyba rozumiem dlaczego RH ma wydzielone glibc-headers
z glibc-devel: dowiązania *.so itp. z x86 są potrzebne, ale nagłówki
mają być (tylko) z x86_64. rpm niby pozwala zainstalować obie wersje
nie zgłaszając konfliktu, ale pliki nagłówków zostają z ostatniej
zainstalowanej wersji. Przynajmniej tak jest z rpm-em z Ac.

Pojawił się jeszcze problem z chrpath, który w wersji x86_64 nie
obsługuje binarek ELF32 z x86 (zgłasza błąd - budowanie się nie
wykłada, ale RPATH zostaje).


-- 
Jakub Bogusz    http://cyber.cs.net.pl/~qboosh/




Więcej informacji o liście dyskusyjnej pld-devel-pl