3

サーバーを更新した後、Cプログラムを実行できません(昨日は機能していて、サーバーで何かが変更されたため、この問題が発生しました)。

私はこのフォルダ/home/ int / exe /に、777権限を持つaesdecriptという名前のacプログラムを持っています。したがって、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;
}    

よろしく、ティアゴ

4

3 に答える 3

6

説明している症状は、64ビットシステムで32ビットバイナリを実行しようとしたときに発生する症状と非常によく似ており、32ビットの「エミュレーション」は使用できません。その場合、バイナリが実行可能ですべてが正しい場合でも、システムエラーコードは「そのようなファイルまたはディレクトリはありません」です。この問題を修正するには、次のコマンドを使用して32ビット実行可能ファイルのサポートをインストールします。

sudo apt-get install ia32-libs

これはおそらく、アップグレード後に失われたものです。より長い話については、この記事を参照してください。

于 2013-01-10T21:13:56.353 に答える
1

更新:コメントで、OPはの出力を示しfile aesdescryptましたが、これは私がこの回答で行った仮定と矛盾しています。問題が解決したら、早ければこの回答を削除します。

aesdecryptがCソースプログラムの名前である場合、それを直接実行することはできません。

シェルはそれをスクリプトとして実行しようとしていますが、行で始まらないため、スクリプトである#!と想定してい/bin/shます。

/bin/shC構文でチョークします。

最初にコンパイルする必要があります。次に例を示します。

mv aesdecrypt aesdecrypt.c
gcc aesdecrypt.c -o aesdecrypt
./aesdecrypt
于 2013-01-10T21:14:13.537 に答える
-1

aesdecriptプログラムがリンクされている1つ以上のライブラリが欠落している可能性があります。関係するライブラリ/ライブラリをlddユーティリティで確認してください。

于 2013-01-10T21:12:08.183 に答える