/usr/lib64

undefine@aramin.one.pl undefine w aramin.one.pl
Pią, 27 Cze 2003, 00:26:46 CEST


On Thu, Jun 26, 2003 at 10:48:34PM +0200, Mariusz Mazur wrote:
> To jest tak. Nie ma w sumie sensu trzymać wszystkiego w dwóch wersjach, a 
> jeśli będziemy coś kompilować w wersji 64bitowej to pewnie tylko dlatego, że 
> jest szybsze. A skoro jest szybsze, to nie będziemy trzymać także wersji 
> wolniejszej.... 
Problem w tym że w przypadku sparca mamy do czynienia z dwiema "seriami"
maszyn:
sparc4m(i pochodne) - 32 bitowe, nie będą działać na 64bitowym kodzie.
Tą serię musimy wspierać przede wszystkim(z tego co wiem większość
sparców używanych przez ludzi na #pld* to właśnie sparc4m. Tak więc
wszystkie biblioteki obowiązkowo muszą być 32bitowe
sparc4u - czyli popularne ultry. Mają 64 bitowe procki, wymagają
64-bitowego jajka. Obsługuą zarówno kod 32 jak i 64 bit, z tym że kod
32bitowy w normalnych operacjach jest _szybszy_.
Ale z drugiej strony zapewne w przypadku jakiś dużych matematycznych
obliczeń może być niezbędna kompilacja kodu do 64 bitowej wersji, a to
pociąga za sobą konieczność istnienia 64bitowych bibliotek. W aurorze,
debianie i zapewne innych distro na sparca 64bitowe biblioteki siedzą
osobno w /usr/lib64.

> zmierzam do tego, że w przypadku zasobów dystrybucyjnych i 
> tak będziemy się pewnie zawsze musieli zdecydować na jedną wersję, czyli 
> wszystko może siedzieć spokojnie w /usr/lib bez żadnych konfliktów. Problem 
> może być tylko w z bibliotekami współdzielonymi (no bo chyba wszystkie 
> linkowane liby też pewnie muszą być 64bitowe), ale... hmmm. Jeśli coś jest 
> 64bitowe i trzymane na tym samym systemie, to nie powinno przez przypadek się 
> inaczej nazywać?
Nie. Bo program może być albo 32 bitowy (domyślnie - kompilowany z flagą
-m32 gcc) i wtedy działa na wszystkich sparcach, albo też
64bitowy(kompilowany z flagą -m64), wtedy działa wyłącznie na ultrach i
korzysta z 64bitowych bibliotek w */lib64/.
Ot, chroot z aurory:

[root w ares root]# cat a.c
main() {printf("Dupa");}
[root w ares root]# gcc a.c -o a32.out
[root w ares root]# gcc a.c -o a64.out -m64
[root w ares root]# ldd a32.out a64.out
a32.out:
	libc.so.6 => /lib/libc.so.6 (0x7002c000)
	/lib/ld-linux.so.2 => /lib/ld-linux.so.2 (0x70000000)
a64.out:
	libc.so.6 => /lib64/libc.so.6 (0xfffff8000011c000)
	/lib64/ld-linux.so.2 => /lib64/ld-linux.so.2 (0xfffff80000000000)

Andrzej



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