filon: SPECS blackbox.spec,1.51,1.52

Filip Kalinski fk181140 w zodiac.mimuw.edu.pl
Pią, 8 Lut 2002, 10:42:35 CET


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ą :-(

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



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