[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

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: