经过一些服务器更新后,我无法执行C程序(它昨天正常工作,我的服务器发生了一些问题,导致了这个问题)。
我在这个文件夹/ home / int / exe /一个名为aesdecript的程序中获得777权限。因此,如果以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是一个C程序。
有人有任何想法吗?这个程序几天前就开始工作了。
aesdecrypt源代码:
#include <stdio.h>
#include <stdlib.h>
#include <ctype.h>
#include <string.h>
#include <unistd.h>
#include <sys/stat.h>
#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;
}
此致,蒂亚戈
答案 0 :(得分:6)
您描述的症状与尝试在64位系统上执行32位二进制文件并且32位“仿真”不可用时的症状非常相似。在这种情况下,即使二进制文件是可执行的并且一切正常,系统错误代码也是“没有这样的文件或目录”。要解决此问题,请使用以下命令安装对32位可执行文件的支持:
sudo apt-get install ia32-libs
这可能是升级后遗漏的内容。有关较长的故事,请参阅this article。
答案 1 :(得分:1)
UPDATE:在评论中,OP向我们展示了file aesdescrypt
的输出,这与我在此答案中所做的假设不一致。一旦问题得到解决,我可能会删除这个答案,如果不是更快的话。
如果aesdecrypt
是您的C 源程序的名称,则无法直接执行。
shell正在尝试将其作为脚本执行,并且因为它不是以#!
行开头,所以它假定它是/bin/sh
脚本。
/bin/sh
扼杀C语法。
您需要先编译它,例如:
mv aesdecrypt aesdecrypt.c
gcc aesdecrypt.c -o aesdecrypt
./aesdecrypt
答案 2 :(得分:-1)
您很可能错过了一个或多个与您的Aesdecript程序相关联的库。请与ldd实用程序一起检查它所涉及的库/库。