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