libstdc++: ¿Tedré algo mal instalado?
Hola.
Tengo problemas para compilar/ejecutar cógigo en C++ aparentemente
simple.
Este es el código ejemplo:
//***********************
#include <iostream.h>
class Test {
public:
char *string;
Test(void) {
string = new char[16];
}
~Test(void) {
delete [] string;
}
Talk (void) {
cout << string;
}
};
int main (void)
{
Test *TestInstance = new Test;
TestInstance->string = "Hello world\0";
TestInstance->Talk;
delete TestInstance;
}
//***********************
Intento compilar con
#~ c++ test.cpp -o test
y recibo lo siguiente:
/usr/bin/../lib/libstdc++.so: undefined reference to `__dup2'
/usr/bin/../lib/libstdc++.so: undefined reference to `__pipe'
/usr/bin/../lib/libstdc++.so: undefined reference to `__waitpid'
collect2: ld returned 1 exit status
Empiezo a inverstigar y veo lo siguiente:
sadacia:~/enlaces/debian/devel# dpkg --list | grep libstdc++
ii libstdc++2.8 2.90.29-0.6 The GNU stdc++ library (egcs version)
ri libstdc++2.9 2.91.61-1 The GNU stdc++ library (egcs version)
sadacia:~/enlaces/debian/devel# dpkg --list | grep libg++
ii libg++27 2.7.2.1-14.4 The GNU C++ libraries (ELF version).
ii libg++272 2.7.2.8-0.1 The GNU C++ libraries (libc6
version).
ii libg++272-dev 2.7.2.8-0.1 The GNU C++ libraries (libc6
version).
Resulta que el paquete libstdc++2.9 lo instalé hace un par de semanas, y
parece ser que a partir de entonces es cuando empiezo a notar 'cosas
raras'. Así que deduzco que algo pasa en mi Debian 2.0-2.1 Algo no he
instalado, creo.
Veamos más cosas:
sadacia:/usr/bin# ldd c++
libc.so.6 => /lib/libc.so.6 (0x4001e000)
/lib/ld-linux.so.2 => /lib/ld-linux.so.2 (0x40000000)
sadacia:/usr/bin# dpkg --list | grep libc6
ii libc6 2.1.1-0.2 GNU C Library: shared libraries
ii libc6-dev 2.0.7t-1 The GNU C library version 2
(development fil
ii libc6-pic 2.0.7t-1 The GNU C library version 2 (PIC
library)
[...]
sadacia:/usr/bin# ls -la /lib/libc.*
lrwxrwxrwx 1 root root 14 oct 16 1998 /lib/libc.so.5 ->
libc.so.5.4.38*
-rwxr-xr-x 1 root root 584776 jun 7 1998
/lib/libc.so.5.4.38*
lrwxrwxrwx 1 root root 13 abr 17 07:11 /lib/libc.so.6 ->
libc-2.1.1.so*
sadacia:/usr/bin# ls -la /lib/ld*
-rwxr-xr-x 1 root root 89678 abr 8 00:29 /lib/ld-2.1.1.so*
lrwxrwxrwx 1 root root 18 abr 17 23:01
/lib/ld-linux.so.1 -> ld-linux.so.1.9.10*
-rwxr-xr-x 1 root root 24396 mar 28 15:39
/lib/ld-linux.so.1.9.10*
lrwxrwxrwx 1 root root 11 abr 17 07:11
/lib/ld-linux.so.2 -> ld-2.1.1.so*
-rwxr-xr-x 2 root root 99488 mar 28 15:39 /lib/ld.so*
-rwxr-xr-x 2 root root 99488 mar 28 15:39
/lib/ld.so.1.9.10*
Si en cambio programo en C puro el código siguiente:
/* **************************************** */
#include <stdio.h>
#include <malloc.h>
int main (void)
{
char *string = (char *) malloc (16 * sizeof (char));
string = "Hello world\0";
printf ("%s",string);
free (string);
}
/* **************************************** */
Esto lo compilo con 'gcc test.c -o test'. Compila, y al ejecutarlo con
'gdb' esto es lo que ocurre:
#0 0x40077333 in __cfree ()
#1 0x8048404 in main ()
Bueno, no aporto más datos por ahora, ya que si no el mensaje sería
demasiado largo (ya lo es, así que aprovecho para pedir disculpas por
las molestias).
Bien, la pregunta es la siguiente:
¿Creéis que me falta algo de instalar?
Si es así, quizá nos encontremos ante un problema de chequeo de
dependencias que se pudo pasar por alto, y habría que comunicarlo a los
chicos de Debian bug reports.
Muchas gracias por vuestra ayuda:
Juan Carlos
Reply to: