2

ハノイの塔のゲーム (hanoi.c) を実行する簡単なプログラムを作成しました。Makefile は非常に単純です。

CFLAGS=-Wall -g

all: hanoi

clean:
rm -f hanoi

を呼び出すmakeと実行可能ファイルが生成されますが、実行hanoiしようとする./hanoiと次の出力しか得られません。

bash: ./hanoi: No such file or directory

そして、valgrind で実行すると、次のように表示されます。

 valgrind: m_ume.c: can't open interpreter

なぜこれが考えられるのでしょうか?私は以前に他の単純な C プログラムを実行していましたが、そのような問題はなく、gcc や make に影響を与えたはずの変更を知りません... Ubuntu 11.10 を実行しています。ありがとう!

4

3 に答える 3

2

私はちょうどこれに遭遇しました。これらのエラーは両方とも、動的にリンクされたアプリケーションが存在しない動的ローダーを指している場合に発生します。

動的ローダーが/lib64/ld.so.1(たとえば) の場合、アプリケーションを次のように実行できるはずです。

/lib64/ld.so.1 ./hanoi

Valgrindの下で次のように実行します

valgrind /lib64/ld.so.1 ./hanoi

プログラムが予期している動的ローダーを判別するには、 を使用できますreadelf -l ./hanoi。出力には、次のような行が中央に含まれている必要があります。

[Requesting program interpreter: /lib/ld.so.1]
于 2013-03-22T20:08:29.893 に答える
2

fat/vfatハードディスクのパーティションにいますか? cwd に hanoi (実行可能) ファイルが表示される場合は、 を使用して実行可能かどうかを確認してls -allくださいx。の出力も確認してくださいfile hanoi

hanoi: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.15, not stripped
于 2012-05-24T21:40:59.830 に答える
1

それがあなたのmakefile全体である場合、作成するルールがわかりませんhanoi。あなたはこのようなものに興味があるかもしれません。

hanoi: hanoi.c
    gcc CFLAGS -o $@ $<
于 2012-05-24T21:25:17.463 に答える