Le shell Linux n’exécute pas mon programme c

Après une mise à jour du serveur, je ne suis pas en mesure d’exécuter un programme C (il fonctionnait hier et quelque chose a été modifié sur mon serveur à l’origine de ce problème).

J’ai dans ce dossier / home / int / exe / ac programme nommé aesdecript avec la permission 777. Donc, si vous tapez les commandes suivantes en tant que root:

$ cd /home/int/exe/ $ ./aesdecrypt -bash: /home/int/exe/aesdecrypt: No such file or directory $ sh aesdecrypt aesdecrypt: 1: Syntax error: "(" unexpected $ ldconfig aesdecrypt ldconfig: relative path `aesdecrypt' used to build cache $ system("/home/int/exe/aesdecrypt") -bash: syntax error near unexpected token `"/home/int/exe/aesdecrypt"' 

aesdecrypt est un programme en C

Quelqu’un a une idée? Ce programme fonctionnait il y a quelques jours.

Sous le code source aesdecrypt:

 #include  #include  #include  #include  #include  #include  #include "aes.h" int aes_crypt_decrypt(int encrypt, char *finput, char *foutput); #define TRUE 1 #define FALSE 0 int main(int argc, char **argv) { puts("Oi mundo!"); /* prints Magick Teste! */ /*if( argc < 3 ) return (1); aes_crypt_decrypt( TRUE, argv[1], argv[2] );*/ return EXIT_SUCCESS; } 

Cordialement, Tiago

Les symptômes que vous décrivez sont très similaires à ceux que vous rencontrez lorsque vous essayez d’exécuter un fichier binary 32 bits sur un système 64 bits et que «l’émulation» 32 bits n’est pas disponible. Dans ce cas, même si le fichier binary est exécutable et que tout est correct, le code d’erreur du système est “No such file or directory”. Pour résoudre le problème, installez la prise en charge des exécutables 32 bits à l’aide de la commande suivante:

 sudo apt-get install ia32-libs 

C’est probablement ce qui a disparu après une mise à niveau. Pour une histoire plus longue, voir cet article .

UPDATE: Dans les commentaires, l’OP nous a montré la sortie du file aesdescrypt , ce qui est incompatible avec les hypothèses que j’ai faites dans cette réponse. Je supprimerai probablement cette réponse une fois le problème résolu, sinon plus tôt.

Si aesdecrypt est le nom de votre programme source C, vous ne pouvez pas l’exécuter directement.

Le shell essaie de l’exécuter en tant que script, et comme il ne commence pas par un #! line, cela suppose qu’il s’agit d’un script /bin/sh .

/bin/sh induit la syntaxe C.

Vous devrez d’abord le comstackr, par exemple:

 mv aesdecrypt aesdecrypt.c gcc aesdecrypt.c -o aesdecrypt ./aesdecrypt 

Il est très probable que vous manquiez une ou plusieurs bibliothèques auxquelles votre programme aesdecript est lié. Vérifiez avec l’utilitaire ldd quelle bibliothèque / bibliothèque il s’agit.