qrczak: SPECS perl-PDL.spec SOURCES perl-PDL-c++.patch

Jakub Bogusz qboosh w prioris.mini.pw.edu.pl
Wto, 27 Lis 2001, 19:29:47 CET


On Mon, Nov 26, 2001 at 08:27:49PM +0100, Arkadiusz Miskiewicz wrote:
> Jakub Bogusz <qboosh w prioris.mini.pw.edu.pl> writes:
> > > [qrczak ~]$ gcc 1.c -o 1 -L/usr/X11R6/lib -lglut
> > > /usr/X11R6/lib/libGLU.so.1: undefined reference to `operator new[](unsigned)'
> 
> > > /usr/X11R6/lib/libGLU.so.1: undefined reference to `operator delete(void*)'
> > 
> > Tak naprawdę to do poprawienia jest libGLU.
> > Powinno być linkowane co najmniej z libGL, a wersja SGI (w XFree86 od
> > 4.1.0, w Mesie od 3.5.0), jako że ma fragment w C++, także z libstdc++.
> Z tego co to widzę to nie potrzeba linkować z libstdc++ (a to, że
> część napisana jest w C++ nie ma tu nic do rzeczy bo tak samo jest
> z lftp (cały w C++), który to nie potrzebuje linkowania z libstdc++).

OK, ściślej: używa pewnych cech C++ wymagających linkowania z dodatkową
biblioteką.


> Naprawdę w przypadku gcc3 wystarczy użyć g++ zamiast gcc i gotowe
> (hint: libsupc++.a)

Ale linkowanie programów napisanych w całości w czystym C przy użyciu
g++ jest chore. Tym bardziej, że biblioteki z którymi się linkuje mogą
być w C (zależnie od wersji - np. Mesa < 3.5.0).
Zresztą libGLU kompilowane gcc 2.95.x nie wymaga żadnej dodatkowej
biblioteki.

Nie wiem jak z gcc 3, ale w przypadku gcc 2.95.x linkowanie przy użyciu
g++ powoduje linkowanie z libstdc++.
Gdyby libsupc++ nie było statyczne, to prawidłowym rozwiązaniem byłoby
zlinkowanie libGLU.so z libsupc++ - a tak to:
- albo we wszystkich programach linkowanych z libGLU wybór programu do
  linkowania (gcc lub g++) uzależnić od wersji gcc
- albo zlinkować libGLU z libstdc++ (o ile to rzeczywiście pomaga)


-- 
Jakub Bogusz
http://prioris.mini.pw.edu.pl/~qboosh/



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