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