Visualizzazione dei risultati da 1 a 8 su 8
  1. #1

    [Linux C++] Errore in file header

    Ciao a tutti, espongo subito il mio problema. Sotto linux, ho installato una libreria multiprecisione (GMP - http://www.swox.com/gmp/), e l'ho utilizzata all'interno di un file header, ma nella compilazione del programma che lo usa, viene generato un errore in una linea che utilizza la funzione per inizializzare una variabile mpz_t.
    Solo che non ho assolutamente idea di quale possa essere il problema. Qualcuno che ha familiarità con GMP potrebbe darmi qualche dritta?

    L'errore generato dalla riga

    codice:
    mpz_init(P);
    é il seguente:

    codice:
    sh-2.05b$ gcc -g test.cpp -lgmp
    /tmp/ccT018yl.o:/home/greyfox/Desktop/Sorgenti C/gmp/RSA/rsa_keys.h:39: undefined reference to `__gxx_personality_v0'
    collect2: ld returned 1 exit status
    GreyFox (Linux registered user #435102)
    greyfox.imente.org - GreyFox's shots (photo gallery)
    $ cd /pub
    $ more beer

  2. #2
    Utente di HTML.it L'avatar di anx721
    Registrato dal
    Apr 2003
    Messaggi
    2,352
    L'errore è un errore di linking. Stai linkando la libreria al tuo programma? Stai usando una versione della libreria distribuita in formto binario o te la sei compilata sul tuo sistema stesso (questo generalmente lo sifa con configure, make, make install)? Nel primo caso potrebe dipendere da diverse versioni del compilatore.

    Sun Certified Java Programmer

    EUCIP Core Level Certified

    European Certification of Informatics Professionals

  3. #3
    La libreria era in sorgente, così ho usato prima ./configure, poi make e, con permessi root, make install. Il readme spiegava di compilare i programmi che la includono con gcc usando quelle opzioni -g e, dopo il file, -lgmp
    GreyFox (Linux registered user #435102)
    greyfox.imente.org - GreyFox's shots (photo gallery)
    $ cd /pub
    $ more beer

  4. #4
    Utente di HTML.it L'avatar di anx721
    Registrato dal
    Apr 2003
    Messaggi
    2,352
    te quando compili il tuo programma usi -lgimp?

    Il problema puo anche essere causato dal fatto che si compila un file oggetto con g++ e poi lo si linka con gcc...te per caso il tuo programma lo compili con g++ e poi linki con gcc?

    Sun Certified Java Programmer

    EUCIP Core Level Certified

    European Certification of Informatics Professionals

  5. #5
    No, io ho un file .cpp che iclude una libreria che ho scritto io (sta nella sua stessa cartella). Questa mia libreria usa gmp.h, quella che ho installato come ti ho detto.
    Non so compilare oggetti, semplicemente uso il solo comando

    gcc -g test.cpp -lgmp

    per compilare il programma. Prima devo creare l'oggetto e poi linkarlo? come si fa?
    GreyFox (Linux registered user #435102)
    greyfox.imente.org - GreyFox's shots (photo gallery)
    $ cd /pub
    $ more beer

  6. #6
    Utente di HTML.it L'avatar di anx721
    Registrato dal
    Apr 2003
    Messaggi
    2,352
    Innanzitutto devi usare g++ per compilare il tuo programma c++ e non gcc.

    Fa questa prova e vedi se funziona.

    Inoltre se la libreria gimp è stata compilata con gcc, potrebbe essere necessario rendere le sue dichiarazioni extern "C", ad esempio, se includi il file gimp.h devi fare:

    extern "C"{

    #include <gimp.h>

    }

    Sun Certified Java Programmer

    EUCIP Core Level Certified

    European Certification of Informatics Professionals

  7. #7
    adesso riavvio in linux e vedo se funziona (il modem muore sotto win... usb )
    Comunque la libreria non si chiama gimp, ma gmp
    GreyFox (Linux registered user #435102)
    greyfox.imente.org - GreyFox's shots (photo gallery)
    $ cd /pub
    $ more beer

  8. #8
    Scusa per il doppio post, ma non potevo più editare...
    ho fatto come dicevi e così funziona benissimo (il compilatore, il mio header ha avuto bisogno di un debug a tutto spiano, da quando mi hai dato il suggerimento).
    Grazie mille
    GreyFox (Linux registered user #435102)
    greyfox.imente.org - GreyFox's shots (photo gallery)
    $ cd /pub
    $ more beer

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.