Linux shell不执行我的c程序

时间:2013-01-10 21:08:16

标签: c linux bash shell ubuntu

经过一些服务器更新后,我无法执行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;
}    

此致,蒂亚戈

3 个答案:

答案 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实用程序一起检查它所涉及的库/库。