g++ lancer le fichier n'est pas reconnu: format de Fichier non reconnu erreur
l'obtention d'erreur suivant avec la commande g++ -o test -L . -l pq
libpq.so: file not recognized: File format not recognized
#file libpq.so
libpq.so: ELF 64-bit LSB shared object, x86-64, version 1 (SYSV), not stripped
version de gcc 4.1.2 20070115 (SUSE Linux)
J'obtiens le même message d'erreur si j'essaie d'utiliser -l dbodbc
au lieu de -l pq
.
Noter que test.c
est un simple programme "hello world".
Merci d'Avance.
Je parie que vous essayez de compiler ce avec une version 32 bits de G++.
qui g++ montre "/usr/bin/g++" et le fichier dans le répertoire /usr/bin/g++ montre "/usr/bin/g++: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), pour GNU/Linux 2.6.4, liée de façon dynamique (utilise shared libs), dépouillé". Donc je pense qu'il est clair que g++ est en 64 bits
N'appelez pas votre programme
fichier libpq.donc libpq.donc: ELF 64-bit LSB objet partagé, x86-64, version 1 (SYSV), pas dépouillé
objdump -x libpq.donc objdump: libpq.donc: format de Fichier non reconnu
qui g++ montre "/usr/bin/g++" et le fichier dans le répertoire /usr/bin/g++ montre "/usr/bin/g++: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), pour GNU/Linux 2.6.4, liée de façon dynamique (utilise shared libs), dépouillé". Donc je pense qu'il est clair que g++ est en 64 bits
N'appelez pas votre programme
test
c'est le nom d'une commande interne du shell. Et ce qui ne l'commandes file
, nm -D
, et objdump -x
dire au sujet de votre libpq.so
?fichier libpq.donc libpq.donc: ELF 64-bit LSB objet partagé, x86-64, version 1 (SYSV), pas dépouillé
objdump -x libpq.donc objdump: libpq.donc: format de Fichier non reconnu
OriginalL'auteur user1991251 | 2013-01-18
Vous devez vous connecter pour publier un commentaire.
file /usr/bin/g++
vous dit queg++
lui-même est un 64-bit exécutable, c'est à dire qu'il s'exécute sur une machine 64 bits, il n'est pas vous dire que g++ peut compiler 64 bits de code (il est très peu probable, mais il pourrait être un cross compilateur pour un processeur complètement différente!) Utilisationg++ -v
oug++ -dumpmachine
pour savoir quelle cible il génère des exécutables pour.G++ n'est pas réellement utiliser cette bibliothèque, il transmet simplement le
-l
option de l'éditeur de liens, de sorte que l'erreur provient de l'éditeur de liens,ld
Si
ld
etobjdump
sont tous les deux en disant qu'ils ne peuvent pas reconnaître la bibliothèque, mais le même fichier est bien sur une autre machine, je voudrais essayer de mettre à jour ou de réinstaller lebinutils
paquet, qui fournit à la foisld
etobjdump
.Vous pourriez avoir un 32 bits
binutils
installé, de sorte que sonld
etobjdump
ne comprends pas la x86_64 bibliothèque. Vous assurer d'avoir la version 64 bits (c'est à dire x86_64) binutils RPM installé.OriginalL'auteur Jonathan Wakely