Forum Programmation.c PB avec GCC et LD

Posté par  .
Étiquettes :
0
19
juil.
2007
Bonjour,

J'ai une toute petite expérience en programmation. J'ai l'habitude de tester mon installation GCC avec cette ligne de code dans un fichier toto.c :

void main () {}


Mon problème est celui ci :
Quand je fais "gcc -o toto toto.c", j'ai l'erreur suivante :

gcc -o toto toto.c
toto.c: In function «main":
toto.c:1: attention : return type of «main" is not «int"
/usr/local/bin/ld: option � --hash-style=both � non reocnnue
/usr/local/bin/ld: utiliser --help pour afficher l'aide-m�moire
collect2: ld a retourné 1 code d'état d'exécution


J'aimerai savoir pourquoi l'option "-hash-style=both " par défaut n'est pas reconnue ? Par quelle option pourrais je la substituer ?

Pour info :

gcc -v
Utilisation des specs internes.
libraries: i486-linux-gnu
Configuré avec: ../src/configure -v --enable-languages=c,c++,fortran,objc,obj-c++,treelang --prefix=/usr --enable-shared --with-system-zlib --libexecdir=/usr/lib --without-included-gettext --enable-threads=posix --enable-nls --program-suffix=-4.1 --enable-__cxa_atexit --enable-clocale=gnu --enable-libstdcxx-debug --enable-mpfr --enable-checking=release i486-linux-gnu
Modèle de thread: posix
version gcc 4.1.2 (Ubuntu 4.1.2-0ubuntu4)


Merci de votre aide .....
  • # Gni ?

    Posté par  . Évalué à 2.

    C'est vraiment bizarre, ce truc.

    /usr/local/bin/ld


    Est-ce que tu utilises une version locale perso de ld ? Que donnent les commandes suivantes ?

    $ which gcc
    $ which ld
    $ /usr/local/bin/ld -v

    Quelle distribution utilises-tu ?
  • # plutôt..

    Posté par  . Évalué à 1.

    essaye plutôt : int main(void) { return 0; } (Je suis à peu près sûr que la fonction main doit renvoyer un entier)
    • [^] # Re: plutôt..

      Posté par  . Évalué à 2.

      Elle doit le faire parce que l'exécutable renvoit un code d'erreur au système, mais ce ne doit pas l'empêcher de compiler. D'ailleurs, cela ne l'empêche pas. C'est le linker qui se plaint, linker qu'il va chercher dans /usr/local/bin pour une raison inconnue. Si dubis ne l'a pas compilé exprès, ou s'il ne se souvient pas avoir téléchargé un package particulier, je pencherais pour un rootkit ...
  • # COMPILER_PATH

    Posté par  (site web personnel) . Évalué à 2.

    Ton gcc n'utilise pas le bon LD, bizarre !
    Tu peux essayer de le forcer à utiliser /usr/bin/ld en modifiant la variable COMPILER_PATH.


    export COMPILER_PATH=/usr/bin


    Utilise ensuite:
    gcc -print-prog-name=ld
    Qui devrait te renvoyer:
    /usr/bin/ld
    • [^] # Re: COMPILER_PATH

      Posté par  . Évalué à 2.

      Bonjour,

      Apparemment il me manquait les pacquage Binutils.
      Après installation cela fonctionne

      encore merci

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.