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

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

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

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

コンパイルエラー

コンパイルのフェーズで生成されるエラーです。よく無効なシンタックスやタイプが含まれているとき発生します。

Raspberry Pi

Raspberry Piは、ラズベリーパイ財団が開発した、名刺サイズのLinuxコンピュータです。 学校で基本的なコンピュータ科学の教育を促進することを意図しています。

Q&A

解決済

1回答

4507閲覧

gcc でC言語ファイルがコンパイルできない

hogedansyaku

総合スコア5

C

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

コンパイルエラー

コンパイルのフェーズで生成されるエラーです。よく無効なシンタックスやタイプが含まれているとき発生します。

Raspberry Pi

Raspberry Piは、ラズベリーパイ財団が開発した、名刺サイズのLinuxコンピュータです。 学校で基本的なコンピュータ科学の教育を促進することを意図しています。

0グッド

0クリップ

投稿2020/04/04 05:08

編集2020/04/04 08:56

RaspberryPi で C言語の勉強をしようと思っています。
gcc でC言語のファイル( main.c という名前のファイル)をコンパイルしたところ、エラーが発生しました。
試しに拡張子を cpp に変更してみたところ、問題なく実行できました。
gcc で拡張子.c のファイルをコンパイルする方法についてご存じの方がいたら教えて頂けますでしょうか。
(別の環境で作成したcファイルがあるので、できれば拡張子を.c のままで使いまわしたい)

実行コマンド(失敗)
gcc main.c

エラーメッセージ
<built-in>: internal compiler error: Segmentation fault
Please submit a full bug report,
with preprocessed source if appropriate.
See file:///usr/share/doc/gcc-6/README.Bugs for instructions.

実行コマンド(成功)
gcc main.cpp
→ 問題なく「a.out」が出力されて実行できました。

該当のソースコード

main.c、main.cpp とも内容は同じです。

C

1#include <stdio.h> 2int main() 3{ 4 printf("Hello\n"); 5 return 0; 6}

試したこと

環境の更新は実行済み
apt-get update
apt-get upgrade
apt-get dist-upgrade

Geanyでも同様にcppは問題なし、cファイルはエラーになりました。
というか、cファイルが関連付けられていませんでした。

補足情報(FW/ツールのバージョンなど)

gcc バージョン 6.3.0
Raspberry Pi 3 Model B+

■lsb_release -a 実行結果
No LSB modules are available.
Distributor ID: Raspbian
Description: Raspbian GNU/Linux 9.11 (stretch)
Release: 9.11
Codename: stretch
■uname -a 実行結果
Linux raspberrypi 4.19.66-v7+ #1253 SMP Thu Aug 15 11:49:46 BST 2019 armv7l GNU/Linux

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

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

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

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

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

maisumakun

2020/04/04 05:09

#includeはしていないのですか?
SHOMI

2020/04/04 05:39 編集

#include <stdio.h>か#include <cstdio> がないとコンパイルエラーとなるはずですが、本当にこのソースであっているのですか?
hogedansyaku

2020/04/04 08:18

#include <stdio.h> はしています。 投稿時に#があるとフォントがタイトルっぽくなったので省略しました。 すみません。。。
SHOMI

2020/04/04 08:24

ソースコードは<code>をクリックして表示される ```ここに言語名を入力 ソースコード ``` に記載してください。
hogedansyaku

2020/04/04 08:36

ご指摘ありがとうございます。 該当のソースコードを修正しました。
SHOMI

2020/04/04 08:50 編集

```#include <stdio.h> になっています。 ```の行にはソースコードを書かず ```C コード ``` としてください。
hogedansyaku

2020/04/04 08:58

たびたびすみません。 記載を修正しました。
SHOMI

2020/04/04 10:31

gccを再インストールしても変わりませんか? sudo apt-get --reinstall install gcc-6.3
hogedansyaku

2020/04/05 03:02

再インストールしても変わりませんでした。 また、gcc アンインストール→新規インストールも試しましたが同じでした。
SHOMI

2020/04/05 15:23

6.3以外のバージョンにしたらどうなります?
hogedansyaku

2020/04/12 05:08

OSをインストールし直して、gcc-8.3.0 に更新したところエラーが発生しなくなりました。 質問の仕方から丁寧に教えて頂きありがとうございました。
guest

回答1

0

ベストアンサー

hogedansyakuさん、

RaspbianのStretchの最終版(のlite version)の 2019-04-08-raspbian-stretch-lite ダウンロードして、balenaEtcherで焼いて、RPi3B+ で確認してみましたが、正常に動作しました。(↑に書かれたようなエラーは見かけませんでした.)

使用されているイメージファイルやSDカードが壊れている可能性もあるので、

  • Raspbianをダウンロードしなおす
  • 別のSDカードを使ってみる

などしてみたほうがいいかもしれません。


確認は、以下をコピペしました。

cat << 'EOF' > main.c #include <stdio.h> int main() { printf("Hello\n"); return 0; } EOF lsb_release -a uname -a gcc --version gcc main.c ./a.out
    1. 焼いて、Wifiの設定をした直後(apt update/upgradeなし)
pi@raspberrypi:~ $ lsb_release -a No LSB modules are available. Distributor ID: Raspbian Description: Raspbian GNU/Linux 9.8 (stretch) Release: 9.8 Codename: stretch pi@raspberrypi:~ $ uname -a Linux raspberrypi 4.14.98-v7+ #1200 SMP Tue Feb 12 20:27:48 GMT 2019 armv7l GNU/Linux pi@raspberrypi:~ $ gcc --version gcc (Raspbian 6.3.0-18+rpi1+deb9u1) 6.3.0 20170516 Copyright (C) 2016 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. pi@raspberrypi:~ $ gcc main.c pi@raspberrypi:~ $ ./a.out Hello pi@raspberrypi:~ $
    1. sudo apt upgrade && sudo apt upgrade -yをしたあと
pi@raspberrypi:~ $ lsb_release -a No LSB modules are available. Distributor ID: Raspbian Description: Raspbian GNU/Linux 9.11 (stretch) Release: 9.11 Codename: stretch pi@raspberrypi:~ $ uname -a Linux raspberrypi 4.19.66-v7+ #1253 SMP Thu Aug 15 11:49:46 BST 2019 armv7l GNU/Linux pi@raspberrypi:~ $ gcc --version gcc (Raspbian 6.3.0-18+rpi1+deb9u1) 6.3.0 20170516 Copyright (C) 2016 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. pi@raspberrypi:~ $ gcc main.c pi@raspberrypi:~ $ ./a.out Hello pi@raspberrypi:~ $
    1. 2.のあと、sudo apt dist-upgradeでは特に更新はありませんでした。
pi@raspberrypi:~ $ sudo apt dist-upgrade Reading package lists... Done Building dependency tree Reading state information... Done Calculating upgrade... Done 0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded. pi@raspberrypi:~ $

投稿2020/04/07 03:49

編集2020/04/07 03:50
mt08

総合スコア1825

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

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

hogedansyaku

2020/04/12 05:03

mt08さん microSDカードを購入し、新たにインストールしたところエラーが発生しなくなりました! ありがとうございました!!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問