Bras de greffes de GDB, erreur de compilation référence non définie à'_obstack_free 'et gdb slim

1 Tâche: transplanter gdb sur arm-linux

version gdb: gdb-7.12.tar.gz

termcap 版本 : termcap-1.3.1.tar.gz

Chaîne d'outils de compilation croisée: arm-hisiv500-linux

2 greffe de termcap

 


 
  
  
  1. cd termcap-1.3.1 /
  2. ./configure --host = arm-linux --prefix = $ ( pwd ) /../ termapinstall --without-ada - activer -termcap --with-shared

 Remarque: Bien que la commande configure ci-dessus ait été exécutée, vous constaterez que le gcc dans le Makefile de termcap-1.-3.1 n'a pas changé, vous devez donc changer manuellement le compilateur dans le Makefile.


 
  
  
  1. vim Makefile
  2. # .............
  3. # Ajoutez le nom de la chaîne d'outils croisée correspondante avant gcc
  4. CC = arm-hisiv500-linux-gcc
  5. AR = bras-hisiv500-linux-ar
  6. RANLIB = bras-hisiv500-linux-ranlib
  7. # ..........

 Après avoir changé le Makefile, exécutez la commande en tant qu'utilisateur root


 
  
  
  1. faire
  2. faire installer

3 ports gdb


 
  
  
  1. cd gdb-7.12 /
  2. ./configure --host = arm-hisiv500-linux - activer -shared --prefix = $ ( pwd ) /../ gdbinstall --without-x - désactiver -gdbtk - désactiver -tui - sans-inclus -regex --without-included-gettext LDFLAGS = "-L $ (pwd) /../termapinstall/lib" CPPFLAGS = "-I $ (pwd) /../termapinstall/include"
  3. faire

Après la configuration, exécutez la commande make, l'erreur suivante apparaîtra:


 
  
  
  1. / home / gdb -7.12 / gdb / c-exp. y: 2381 : référence non définie à'_obstack_free '
  2. c-exp.o: Dans la fonction'parse_string_or_char ':
  3. / home / gdb -7.12 / gdb / c-exp. y: 2127 : référence non définie à'_obstack_free '
  4. c-exp.o: Dans la fonction 'c_yylex':
  5. / home / gdb -7.12 / gdb / c-exp. y: 3071 : référence non définie à'_obstack_free '
  6. ada-exp.o: Dans la fonction'ada_parse (parser_state *) ':
  7. / home / gdb -7.12 / gdb / ada-exp. y: 745 : référence non définie à'_obstack_free '
  8. d-exp.o: Dans la fonction'parse_string_or_char ':
  9. / home / gdb -7.12 / gdb / d-exp. y: 906 : référence non définie à'_obstack_free '
  10. d-exp. o: / home / /gdb-7.12/ gdb / d-exp. y: 1538 : suivez plus de références non définies à _obstack_free

L'erreur rapportée ci-dessus est que le compilateur n'a pas trouvé la fonction _obstack_free (), qui est une référence de définition. Ensuite, j'ai cherché la fonction _obstack_free () dans le répertoire / usr / include / et j'ai trouvé qu'il y avait une fonction obstack_free (), mais pas la fonction _obstack_free ().

Ensuite, je suis allé chercher la fonction obstack_free () dans la chaîne d'outils de compilation croisée, et j'ai trouvé qu'il n'y avait pas d'obstack_free () mais _obstack_free ().

Sur cette base, j'ai deviné que c'était un problème avec la version gdb, puis j'ai entré dans le répertoire gdb-7.12 / include et j'ai changé tous les _obstack_free () qui apparaissaient dans le fichier d'en-tête obstack.h en fonction obstack_free (). Puis exécutez la commande:


 
  
  
  1. faire
  2. faire installer

La compilation est terminée avec succès.

Le fichier gdb compilé final mesure 25 Mo, il devrait donc contenir des tables de symboles. Je dépouille donc le fichier exécutable gdb, et enfin la taille du programme gdb est de 4M

arm-hisiv500-linux-strip ./gdb -o armgdb
 
  
  

Enfin, copiez armgdb sur la carte de développement et exécutez-le.

plus de! 

Je suppose que tu aimes

Origine blog.csdn.net/weixin_38293850/article/details/107953736
conseillé
Classement