filon: SPECS blackbox.spec,1.51,1.52

Filip Kalinski fk181140 w zodiac.mimuw.edu.pl
Pią, 8 Lut 2002, 11:01:04 CET


On day Fri, Feb 08, 2002 at 10:42:35AM +0100, Filip Kalinski wrote what follows:
> On day Fri, Feb 08, 2002 at 10:27:30AM +0100, Jakub Bogusz wrote what follows:
> > On Fri, Feb 08, 2002 at 10:20:38AM +0100, Tomasz Kłoczko wrote:
> > > On Fri, 8 Feb 2002, Filip Kalinski wrote:
> > > > On day Fri, Feb 08, 2002 at 09:43:52AM +0100, Tomasz Kłoczko wrote what follows:
> > > > > On Wed, 6 Feb 2002, Filip Kalinski wrote:
> > > > > [..]
> > > > > > -%{__make} CXX="%{__cc}"
> > > > > > +%{__make} CXX=%{?__cxx:"%{__cxx}"}%{!?__cxx:"g++"}
> > > > 
> > > > Nie jest bez sensu, bo w ostatnim rpm'ie dodałem definowanie __cxx,
> > > > czego nie ma we wcześniejszych. Bez tego się _nie kompiluje_.
> > > 
> > > Jest bez sensu bo uzywanie g++ powoduje linkowanie z libstdc++ i dopiero
> > > podmiana na %__cc powoduje że to się nie dzieje. W tym wypadku linkowanie
> > > z libstdc++ jest zbędne bo de facto żana funkcja ABI C++ nie jest
> > > potzrebna w kodzie blackboxa i dlatego jest to lokalnie podmieniane na
> > > %__cc. Zmienić globalnie %__cc na gcc nie możesz bo w zasadzie niemal
> > > każdy program w C++ przestanie sie budować. Przypomnę że gcc rozumie tekst
> > > źródłowy C++ (co wiecej z autoconf pzrychodzi odpowiednie maktro
> > > spradzxajace czy kompilator C potrzafi to robić) i potrafi to kompilować
> > > ale nie linkuje tego co skompiluje z libstdc++, a takei linkowanie nie
> > > jest zawsze potzrebne. Niektórzy wręcz piszą świadomie tak kod C++ aby nie
> > > było potrzebne linkowanie z libstdc++. Tak jest przykładowo z lftp które
> > > jak najbardziej jest napisane w C++.
> > 
> > AFAIK w 3.0 "popsuli" i kod w C++ nie używający STL wymaga linkowania
> > dodatkowo - nie z libstdc++, ale jakimiś innymi bz^Hibliotekami
> > specyficznymi dla gcc3 (IIRC statycznymi zresztą), zajmuje się tym g++.
> > 
> > Pytanie do używających gcc 3: czy g++ z gcc3 automatycznie wybiera
> > z czym ma linkować i potrafi nie dodawać zawsze libstdc++?
> > 
> > g++ z gcc 2.95 tego _nie_ robi i zawsze linkuje z libstdc++. Więc takie
> > wstawianie g++ tam gdzie 2.95 tego nie wymaga powoduje większą liczbę
> > pakietów do upgrade przy zmianie libstdc++.
> > 
> 
> A co szkodzi linkowamie dynamiczne, libstdc++.so.3 powinno być w tej
> samej wersji jeszcze długo, nie wcale nic nie trzeba upgradeować po
> zmianie libstdc++ (tak samo, jak po zmianie glibca itd...).
> 
> Nestety brzydkie jest, że linkuje (gcc i g++) wszytko z libgcc_s, nie
> można zanieść komus z drójką pakietu skompilowanego trójką :-(
> 

A.... rzeczywiście brzydko będzie przy przejściu z dwójki na trójkę...

Swoją drogą troche bez sensu jest to makro, bo %configure i tak używam
makra %{__cxx}, i zmiany potem nic już nie zmienią...

(poza tym w rpm 4.0.3 też dołożyli definicję %{__cxx} i linkuje się i
wszystko z libstdc++)

Ale mam rozwiązanie, zresztą bardziej eleganckie, wystarczy po prostu
zdefiniować przed configure __cxx jako %{__cc}

-- 
Filip Kaliński <f.kalinski w zodiac.mimuw.edu.pl>



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