filon: SPECS blackbox.spec,1.51,1.52

Jakub Bogusz qboosh w pld.org.pl
Pią, 8 Lut 2002, 10:27:30 CET


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++.


-- 
Jakub Bogusz



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