ここから本文です

gccコンパイラを利用してC言語のソースコードを「gcc main.c」とコンパイルしたと...

apm********さん

2018/11/1017:23:30

gccコンパイラを利用してC言語のソースコードを「gcc main.c」とコンパイルしたところ、実行ファイルではなく共有ライブラリが生成されました。

gccの使い方を示しているサイトでは、gcc main.cとコンパイルすれば通

常実行ファイルが生成されると書いてありました。

そこで、実行ファイルではなく共有ライブラリが生成される原因を教えていただけたら幸いです。
よろしくお願いします。

また、使用した環境は
・ubuntu18.04.1 LTS
・gcc7.3.0
実行するプログラムは下に示します。
#include<stdio.h>
int main(void)
{
printf("Hello\n");
return (0);
}

閲覧数:
66
回答数:
1

違反報告

ベストアンサーに選ばれた回答

ikt********さん

2018/11/1017:36:59

根拠はないですが なにか勘違い じゃないですかね。

何をもって
> 実行ファイルではなく共有ライブラリが生成されました。
と判断されたんですか?

gcc main.c
とすれば、フツーには
・a.out というファイル名の
・実行形式ファイル
ができるはず。

たまたま同じ環境持ってるんで、質問文コードまんまコピペ
して試してみました。
行頭の $ は、シェルのプロンプトです。

$ ls
main.c
$ gcc main.c
$ ls
a.out main.c
$ file a.out
a.out: ELF 64-bit LSB shared object, x86-64, version 1 (SYSV), dynamically linked, interpreter /lib64/ld-linux-x86-64.so.2, for GNU/Linux 3.2.0, BuildID[sha1]=2af23377c3de239507ece2c2b1ab03a3ae8e2501, not stripped
$ ./a.out
Hello

ひょっとして、file コマンドの報告内容英文見て
・共有ライブラリが生成された
と勘違いしてしまった、とかでは、ない?

  • 質問者

    apm********さん

    2018/11/1018:09:51

    ご回答ありがとうございます。

    $ gcc main.c
    $ file a.out
    ./a.out: ELF 64-bit LSB shared object, x86-64, version 1 (SYSV), dynamically linked, interpreter /lib64/ld-linux-x86-64.so.2, for GNU/Linux 3.2.0, BuildID[sha1]=5a6e7bb235c1e403f163316e4521b1913677275b, not stripped
    $ ./a.out
    Hello
    と表示されました。

    >ひょっとして、file コマンドの報告内容英文見て
    >・共有ライブラリが生成された
    >と勘違いしてしまった、とかでは、ない?

    gcc main.c とコンパイルしたときに、実行ファイル(薄紫色のダイヤ型のアイコン)ではなく、テキストドキュメントのアイコンが生成されました。

    そこで、生成されたもののプロパティを開いたところ、種類:共有ライブラリ (application/x-sharedlib)と書かれていいたため、共有ライブラリが生成されたと認識しました。

  • その他の返信(2件)を表示

返信を取り消しますが
よろしいですか?

  • 取り消す
  • キャンセル

この質問は投票によってベストアンサーに選ばれました!

あわせて知りたい

みんなで作る知恵袋 悩みや疑問、なんでも気軽にきいちゃおう!

Q&Aをキーワードで検索:

Yahoo! JAPANは、回答に記載された内容の信ぴょう性、正確性を保証しておりません。
お客様自身の責任と判断で、ご利用ください。
本文はここまでです このページの先頭へ

「追加する」ボタンを押してください。

閉じる

※知恵コレクションに追加された質問は選択されたID/ニックネームのMy知恵袋で確認できます。

不適切な投稿でないことを報告しました。

閉じる