質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.37%
C

C言語は、1972年にAT&Tベル研究所の、デニス・リッチーが主体となって作成したプログラミング言語です。 B言語の後継言語として開発されたことからC言語と命名。そのため、表記法などはB言語やALGOLに近いとされています。 Cの拡張版であるC++言語とともに、現在世界中でもっとも普及されているプログラミング言語です。

Ubuntu

Ubuntuは、Debian GNU/Linuxを基盤としたフリーのオペレーティングシステムです。

VirtualBox

VirtualBoxは、現在米オラクル社が開発している、 x86仮想化ソフトウェア・パッケージの一つです。

Vagrant

Vagrantは、VirtualBox上の仮想マシンを コマンドラインから作成してくれるソフトウェアです。 ビルド環境など容易に構築が可能です。

Q&A

解決済

3回答

28757閲覧

GCCでのコンパイル時に"undefined reference to 'main' "というエラーが起こる

ry0xi

総合スコア4

C

C言語は、1972年にAT&Tベル研究所の、デニス・リッチーが主体となって作成したプログラミング言語です。 B言語の後継言語として開発されたことからC言語と命名。そのため、表記法などはB言語やALGOLに近いとされています。 Cの拡張版であるC++言語とともに、現在世界中でもっとも普及されているプログラミング言語です。

Ubuntu

Ubuntuは、Debian GNU/Linuxを基盤としたフリーのオペレーティングシステムです。

VirtualBox

VirtualBoxは、現在米オラクル社が開発している、 x86仮想化ソフトウェア・パッケージの一つです。

Vagrant

Vagrantは、VirtualBox上の仮想マシンを コマンドラインから作成してくれるソフトウェアです。 ビルド環境など容易に構築が可能です。

0グッド

0クリップ

投稿2021/05/06 10:45

編集2021/05/06 11:17

初歩的な質問ですみません。
エラーについて調べ、コードを見直したのですが間違っている箇所が分からずに詰まっています。

現状

  • 「スッキリわかるC言語」という本に記載されていた開発環境をVirtualBoxとVagrantをインストールして利用し、その中のエディタとコマンドプロンプトでC言語を扱っています。
  • 以下の九九を表示するソースコードを書き、GCCでコンパイルしようとしたところ、エラーが発生します。

c

1#include <stdio.h> 2 3int main(void) 4{ 5 for (int i = 1; i < 10; i++) { 6 for (int j = 1 ; j < 10; j++) { 7 printf("%d ", i * j); 8 } 9 printf("\n"); 10 } 11 return 0; 12}

実行したコマンド

gcc /home/(フォルダ名)/work/chapter5/list07.c

エラー文(一部デフォルトで日本語になっています)

/usr/lib/gcc/x86_64-linux-gnu/7/../../../x86_64-linux-gnu/Scrt1.o: 関数 `_start'内: (.text+0x20): `main' に対する定義されていない参照です collect2: error: id returned 1 exit status

試したこと

  • とりあえずエラー文を(すべて英語の状態で)調べると、エラー文"undefined reference to `関数名' "の主な原因が、その関数のスペルミスであることが分かりました。
  • その後自分が書いたコードを3度確認しましたが、スペルミスが見つけられず、原因が分からないでいます。
  • paiza.io というweb上でコンパイルから実行までできるサービスを使って同じソースコードを実行したところ問題なく実行されましたので、開発環境側の問題なのかなと考えています。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

jamjam3

2021/05/06 10:57

実行しているコマンドを記載してもらうと原因が調査しやすいかもしれません
ry0xi

2021/05/06 11:17

追加しました。
hoshi-takanori

2021/05/06 11:34

Vagrant で入れた Linux (ですよね?) のディストリビューション (CentOS とか Ubuntu とか) と、gcc のバージョンは分かりますか?
ry0xi

2021/05/06 12:20

Ubuntu:18.04 gcc:7です。 質問にも追記します。
guest

回答3

0

自己解決

解決しました!

$ cat /home/(フォルダ名)/work/chapter5/list07.c

をコマンドで実行してもコードが表示されなかったので、該当ファイルを確認しましたが、何事もなくエディタでソースコードが表示されていたので問題が分かりませんでした。

ですが、どうやら、原因は「保存」をしていないことだったようです。
エディタを閉じて開いてもコードが残っていたのでてっきり保存されていると思っていましたが、ファイルには何も記述されていませんでした。

保存後、

$ gcc /home/(フォルダ名)/work/chapter5/list07.c

で無事コンパイルできました。

ご協力してくださった皆さん、本当にありがとうございます!!

投稿2021/05/06 12:40

ry0xi

総合スコア4

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

本当に
/home/(フォルダ名)/work/chapter5/list07.c
は引用したコードなのでしょうか?

そのエラーは main() が無いというエラーなのですが…

投稿2021/05/06 11:36

sigsegv

総合スコア895

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

ry0xi

2021/05/06 11:46

「(フォルダ名)」の部分は「flairlink」という文字が入っています。c言語の入門書を出しているところです。
itagagaki

2021/05/06 11:58

cat /home/flairlink/work/chapter5/list07.c で、引用したコードと同じものが出力されますか?
guest

0

回答ではありませんが・・・当方の環境↓では、エラーに成りません。
Linux usr.Mint20.1 5.4.0-71-generic #79-Ubuntu SMP Wed Mar 24 10:56:57 UTC 2021 x86_64

c

1usr ~/Project/c/test % cc t01.c 2usr ~/Project/c/test % ./a.out 31 2 3 4 5 6 7 8 9 42 4 6 8 10 12 14 16 18 53 6 9 12 15 18 21 24 27 64 8 12 16 20 24 28 32 36 75 10 15 20 25 30 35 40 45 86 12 18 24 30 36 42 48 54 97 14 21 28 35 42 49 56 63 108 16 24 32 40 48 56 64 72 119 18 27 36 45 54 63 72 81 12usr ~/Project/c/test % cat t01.c 13#include <stdio.h> 14 15int main(void) 16{ 17 for (int i = 1; i < 10; i++) { 18 for (int j = 1 ; j < 10; j++) { 19 printf("%d ", i * j); 20 } 21 printf("\n"); 22 } 23 return 0; 24} 25usr ~/Project/c/test % gcc t01.c 26usr ~/Project/c/test % ./a.out 271 2 3 4 5 6 7 8 9 282 4 6 8 10 12 14 16 18 293 6 9 12 15 18 21 24 27 304 8 12 16 20 24 28 32 36 315 10 15 20 25 30 35 40 45 326 12 18 24 30 36 42 48 54 337 14 21 28 35 42 49 56 63 348 16 24 32 40 48 56 64 72 359 18 27 36 45 54 63 72 81 36usr ~/Project/c/test % gcc --version 37gcc-9 (Ubuntu 9.3.0-17ubuntu1~20.04) 9.3.0 38Copyright (C) 2019 Free Software Foundation, Inc. 39This is free software; see the source for copying conditions. There is NO 40warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 41 42usr ~/Project/c/test % cc --version 43clang version 13.0.0 (https://github.com/llvm/llvm-project.git 0889181625bb570e463362ab8f53f9a14c886b2e) 44Target: x86_64-unknown-linux-gnu 45Thread model: posix 46InstalledDir: /usr/local/bin

投稿2021/05/06 11:00

cateye

総合スコア6851

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

ry0xi

2021/05/06 11:11

回答ありがとうございます。 paiza.io というサイトで一度実行してみましたがこちらではエラーにならなかったので、インストールした開発環境の問題かなと考えています。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.37%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問