PLD-doc: AMD64.txt (NEW)

Jacek Konieczny jajcus w bnet.pl
Pią, 9 Sty 2004, 11:54:07 CET


On Fri, Jan 09, 2004 at 11:43:29AM +0100, Jakub Bogusz wrote:
> On Fri, Jan 09, 2004 at 10:35:57AM +0100, jajcus wrote:
> 
> 1-3 dotyczy także alphy.
> 3 przejściowo w niektórych przypadkach ppc (SEGV w binutils)
> 1,2 w przyszłości sparc64/ppc64/ia64
> 4 w przyszłości sparc64/ppc64

Ja mam doświadczenie jedynie z AMD64. Nie chciałem uogólniać, żeby kogoś
nie wprowadzić w błąd.
 
> Może ten dokument napisać ogólniej, żeby nie kopiować dużych części?

Można by. Ale ja się za to nie zabiorę. Mam mało czasu i dużo roboty,
a portowanie na AMD64 opisałem między innymi, żeby sobie chociaż trochę 
roboty oszczędzić :)
 
> >    4. Pliki dla biblioteki dzielonej kompilowane bez -fPIC.
> >       
> >       Objawia się to komunikatem błędu podczas konsolidacji:
> >       "relocation R_X86_64_32S can not be used when making a
> >       +shared object; recompile with -fPIC".
> 
> Na alphie komunikat jest bardziej enigmatyczny... i warto go gdzieś
> opisać, bo mało kto wie, o co chodzi.
> Brzmi "gp-relative relocation against dynamic symbol <nazwa>".

Cenna uwaga.

> >       W takim przypadku należy się upewnić, że wszystkie pliki
> >       które są konsolidowane do biblioteki dzielonej zostały skompilowane
> >       z opcją -fPIC. Najprostszym rozwiązaniem (ale często nie najlepszym)
> >       jest dodanie -fPIC do CFLAGS przekazywanego do %configure.
> 
> Porządniej - zwykle używać noinst_LTLIBRARIES zamiast noinst_LIBRARIES;
> unikać -static czy -prefer-non-pic tam, gdzie budowane są biblioteki lub
> moduły dzielone.

Dzięki. Nie miałem czasu dogrzebać sie do tych prawidłowych rozwiązań.

> Aktualnie dzięki Radkowi Perl wrzuca moduły noarch do /usr/share/perl5,
> a zależne od architektury do /usr/lib/perl5 - jeśli w tym drugim
> przypadku zamiast lib pochodzi z %{_lib}, to jest OK.

No to Perl jest z głowy :). Pythona można chyba załatwić podobnie
(a Makefile ma osobno LIBDIR i SCRIPTDIR), ale wolałem nie ruszać na
razie, bo to dość drastyczna zmiana dla wszystkich pythonowych pakietów.

Na razie python wrzuca wszystko do /usr/lib64. Dla bootstrapu to
wystarczyło ale będzie trzeba to poprawić i przebudować wszystkie
pyhtonowe pakiety od nowa.

Pozdrowienia,
	Jacek



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