みんなの「教えて(疑問・質問)」にみんなで「答える」Q&Aコミュニティ

こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

Linux バイナリ実行できない "cannot execute binary file”

表記ですが、Linuxサーバーに対して、Windowsクライアントから
XWin環境にてユーザー"hoge"でログインを行い、
そのサーバー上でターミナルを立ち上げ
/usr/local/gcc_work
というフォルダを作り、その中で

---ここからーーー
#include <stdio.h>
int main(void)
{
printf("Hello,world\n");
return 1;
}
ーーーここまでーーー

のような、hello.cを作成し、

$ gcc -c hello.c -o hello
でバイナリを作成し

$ ./hello
とすると
bash: ./hello: cannot execute binary file

とのメッセージが出ます。
パーミッションの問題かと思いましたが、
[hoge@localhost gcc_work]$ ls -l
合計 8
-rwxrwxr-x 1 hoge hoge 876 5月 6 18:14 hello
-rwxrwxr-x 1 hoge hoge 83 5月 6 18:13 hello.c

のようになっていて、問題なく感じています。
スーパーユーザになって再度コンパイルしても同じでした。
くだらないところで躓いているのかもしれませんが、お気づきあらば
教授願います。

投稿日時 - 2007-05-07 02:16:57

QNo.2979623

困ってます

質問者が選んだベストアンサー

> $ gcc -c hello.c -o hello

-c オプションをつけたときは実行ファイルまでは作らずに、オブジェクトファイル
(通常は .oの拡張子を持つもの)を作るだけですよ。
それは実行可能形式のファイルじゃありません。

file hello

とかしてみてください。
素直に -c オプションをつけずに

$ gcc hello.c -o hello

で実行可能な hello ができると思いますよ。

投稿日時 - 2007-05-07 03:22:50

お礼

仰せのとおりですね。
本をまるうつしで演習してて、オプションの確認をしてなかったようです。
恥ずかしい限りで…。
ありがとうございました。

投稿日時 - 2007-05-07 07:49:33

このQ&Aは役に立ちましたか?

4人が「このQ&Aが役に立った」と投票しています

回答(1)

あなたにオススメの質問