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

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

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

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

GCC

GCCはGNU Compiler Collectionの略です。LinuxのC言語コンパイラのデファクトスタンダードであり、数多くの他言語やプラットフォームサポートもします。

MacOS(OSX)

MacOSとは、Appleの開発していたGUI(グラフィカルユーザーインターフェース)を採用したオペレーションシステム(OS)です。Macintoshと共に、市場に出てGUIの普及に大きく貢献しました。

コマンド

コマンドとは特定のタスクを行う為に、コンピュータープログラムへ提示する指示文です。多くの場合、コマンドはShellやcmdようなコマンドラインインターフェイスに対する指示文を指します。

コンパイルエラー

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

Q&A

解決済

1回答

1359閲覧

C言語 コンパイルエラー

退会済みユーザー

退会済みユーザー

総合スコア0

C

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

GCC

GCCはGNU Compiler Collectionの略です。LinuxのC言語コンパイラのデファクトスタンダードであり、数多くの他言語やプラットフォームサポートもします。

MacOS(OSX)

MacOSとは、Appleの開発していたGUI(グラフィカルユーザーインターフェース)を採用したオペレーションシステム(OS)です。Macintoshと共に、市場に出てGUIの普及に大きく貢献しました。

コマンド

コマンドとは特定のタスクを行う為に、コンピュータープログラムへ提示する指示文です。多くの場合、コマンドはShellやcmdようなコマンドラインインターフェイスに対する指示文を指します。

コンパイルエラー

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

0グッド

0クリップ

投稿2021/07/05 08:57

編集2021/07/07 09:32

実現したいこと

VS codeで#include <ncurses.h>を使用したい。

使用環境

VS code for Mac バージョン: 1.56.2 (Universal)
MacOS Big Sur バージョン : 11.4

環境構築

「MacでGCCを"正しく"環境構築しよう!」

リンク内容

こちらのサイトを参考に設定を試みました。

[1]CommandLineToolsのインストール
[2]Homebrewの導入
まで行い、正常にインストールできていることを確認済みです。

%brew install gccでgccのインストールを行い、
% brew list | grep gccgccと出力されたため、問題なくインストールされていると思われます。
また、インストール後に% brew doctorを実行しYour system is ready to brew.の出力を確認しているためHomebrewも問題なくインストールできているかと思います。

[3]brew install ncursesのインストール
Homebrew Formulateからインストールを行いました。

リンク内容

[4]pkg-configのインストール
Homebrew Formulateからインストールを行いました。

リンク

% brew --config HOMEBREW_VERSION: 3.2.0 ORIGIN: https://github.com/Homebrew/brew HEAD: 09f7bc27a99469cf947431df4754737dfbadb31d Last commit: 2 weeks ago Core tap ORIGIN: https://github.com/Homebrew/homebrew-core Core tap HEAD: 7bb697986a5b42b08853e3204c277dfa1e63317d Core tap last commit: 16 hours ago Core tap branch: master HOMEBREW_PREFIX: /usr/local HOMEBREW_CASK_OPTS: [] HOMEBREW_MAKE_JOBS: 16 Homebrew Ruby: 2.6.3 => /System/Library/Frameworks/Ruby.framework/Versions/2.6/usr/bin/ruby CPU: 16-core 64-bit skylake Clang: 12.0.5 build 1205 Git: 2.30.1 => /Library/Developer/CommandLineTools/usr/bin/git Curl: 7.64.1 => /usr/bin/curl macOS: 11.4-x86_64 CLT: 12.5.1.0.1.1623191612 Xcode: 12.5.1
gcc -v Configured with: --prefix=/Library/Developer/CommandLineTools/usr --with-gxx-include-dir=/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/4.2.1 Apple clang version 12.0.5 (clang-1205.0.22.11) Target: x86_64-apple-darwin20.5.0 Thread model: posix InstalledDir: /Library/Developer/CommandLineTools/usr/bin

発生している問題、エラーメッセージ

c

1#include <ncurses.h> 2 3int main() 4{ 5 initscr(); // 端末制御の開始 6 7 start_color(); // カラーの設定 8 init_pair(1, COLOR_RED, COLOR_BLUE); // 色番号1を赤文字/青地とする 9 bkgd(COLOR_PAIR(1)); // 色1をデフォルト色とする 10 11 erase(); // 画面表示 12 move(10, 20); 13 addstr("Hello World"); 14 refresh(); 15 16 timeout(-1); 17 getch(); // キー入力 18 19 endwin(); // 端末制御の終了 20 return (0); 21}

エラーメッセージ

[Running] cd "/Users/username/Documents/" && gcc main.c -o main && "/Users/username/Documents/"main Undefined symbols for architecture x86_64: "_endwin", referenced from: _main in main-5596ba.o "_init_pair", referenced from: _main in main-5596ba.o "_initscr", referenced from: _main in main-5596ba.o "_start_color", referenced from: _main in main-5596ba.o "_stdscr", referenced from: _main in main-5596ba.o "_waddnstr", referenced from: _main in main-5596ba.o "_wbkgd", referenced from: _main in main-5596ba.o "_werase", referenced from: _main in main-5596ba.o "_wgetch", referenced from: _main in main-5596ba.o "_wmove", referenced from: _main in main-5596ba.o "_wrefresh", referenced from: _main in main-5596ba.o "_wtimeout", referenced from: _main in main-5596ba.o ld: symbol(s) not found for architecture x86_64 clang: error: linker command failed with exit code 1 (use -v to see invocation)

ターミナルでファイルを指定せずにgccを実行するとclang: error: no input filesと表示されてしまいます。
何から手をつけていいか分からず、正直お手上げ状態です。
問題の解決にあたって、必要な情報等がありましたらご指摘して頂けると幸いです。
初学者なため、至らぬ点も多いいかと思いますが、宜しくお願いいたします。

追記

「(2)コマンドの簡略化」を行いましたか?
>いいえ
正確には、gccとし設定していませんでした。
先ほで、gccに置き換えて設定しましたが、gcc -vを入力すると下記のコードしか出て来ない上、Homebrew GCCのバージョンも確認できませんでした。

gcc -v Configured with: --prefix=/Library/Developer/CommandLineTools/usr --with-gxx-include-dir=/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/4.2.1 Apple clang version 12.0.5 (clang-1205.0.22.11) Target: x86_64-apple-darwin20.5.0 Thread model: posix InstalledDir: /Library/Developer/CommandLineTools/usr/bin
which gcc /usr/bin/gcc    where gcc /usr/bin/gcc

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

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

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

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

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

jbpb0

2021/07/05 12:35

> gcc -v の結果で > Apple clang version 12.0.5 (clang-1205.0.22.11) と表示されてるのだから、その「gcc」はxcodeのもので、 > brew install gccでgccのインストールを行い の「gcc」ではないです brewで入れた「gcc」なら、 gcc -v で、下記のように表示されるはず (バージョンとかは違うかもしれないけど) gcc version 11.1.0 (Homebrew GCC 11.1.0)
jbpb0

2021/07/05 12:46 編集

質問者さんが参考にした https://qiita.com/DaikiSuyama/items/09f5aa399aad37783146#3gcc%E3%81%AE%E3%82%A4%E3%83%B3%E3%82%B9%E3%83%88%E3%83%BC%E3%83%ABgcc%E3%81%B8%E3%81%AE%E5%88%87%E3%82%8A%E6%9B%BF%E3%81%88 の、「[3]GCCのインストール&GCCへの切り替え」の「(2)コマンドの簡略化」に書いてあることをやってますか? 上記Webページでは、「g++」のみ具体的な手順が書かれてますが、「gcc」にも同じことをやる必要があります 「[3]GCCのインストール&GCCへの切り替え」の「(0)インストールの前提」に、 「以下ではGCCのC++でのコンパイルができるように解説しているので、Cでのコンパイルをしたい場合は適宜読み替えてください。」と書かれてます それは、「gcc」については手順を書かないけど、「gcc」を使いたければ、「g++」について書いてあるのと同じことを自分でやってね、という意味です
jbpb0

2021/07/05 22:59 編集

(2)コマンドの簡略化 の ①コマンドの検索パスを設定する ②バージョンを省略する を、両方ともやりましたか? 両方ともやれば、下記の状態になりますよね ・環境変数PATH内で、/usr/local/bin の優先度が最上位になる ・/usr/local/bin/gcc が存在する そうなれば、gccコマンド実行時に使われるのは、/usr/local/bin/gcc になるはずですよね 現状そうなってないのであれば、必要なことの何かが、ちゃんとできてない、ということですので、それを見つけてください なお、 ①コマンドの検索パスを設定する の設定は、ターミナルを起動し直しても設定が残るように、ホームディレクトリに置いてあるシェルの設定ファイルに書き込んでおく必要があります もしまだそれをやってないなら、質問者さんが参考にしたWebページには、そのやり方は書かれてないので、ググって調べてください 使ってるシェル(bash, zsh…)によって、修正する設定ファイルが違うので注意
jbpb0

2021/07/06 05:53 編集

設定の確認方法 「①コマンドの検索パスを設定する」ができてるかの確認 ターミナルで、 echo $PATH を実行した結果の表示で、 /usr/local/bin が /usr/bin よりも左側(行頭に近い側)にあるか? 「②バージョンを省略する」ができてるかの確認 ターミナルで、 /usr/local/bin/gcc -v が実行できるか? 絶対パスで指定すれば、環境変数PATHの設定は関係無いので、存在してれば実行できるはず もし存在してなければ、 /usr/local/bin/gcc: No such file or directory みたいに表示されると思います
退会済みユーザー

退会済みユーザー

2021/07/07 08:59 編集

こんばんは まず初めに、昼夜問わず詳しく解説して頂き有難う御座いました。 本当に助かりました。 gccの設定についてですが、無事解決することが出来ました。 実は問題解決が出来ず、osを再インストールしました。なにが原因だったのかが、いまいち分かりませんが再インストール後、上記手順で解決することが出来ました。恐らく、Xcode付属のgccとHomebrewのgccの切り替えが出来ていなっかたのが原因かと思います。
guest

回答1

0

ベストアンサー

たぶんライブラリファイルlibncursesをリンクする必要があります。
gccのオプションに -lncurses を加えてみてください。

投稿2021/07/05 09:09

itagagaki

総合スコア8402

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

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

退会済みユーザー

退会済みユーザー

2021/07/05 09:55

ご回答ありがとうございます。 リンク作業は、$ cc main.c -lncurses -o main でいいのでしょうか? 入力後、retunを押しても何も起こりませんでした。 お手数おかけしますが、詳しく手順などを教えていただきたいです。 よろしくお願い致します。
itagagaki

2021/07/05 10:08

コマンドはそれでいいです。ccでもgccでもまあ同じことかなと思いますし。 何も起こらないというのはおかしいですね。 libncursesが無いなら無いでエラーが出るはず。 gcc main.c -o main で質問に書かれているエラーが出るんですよね? その状態でもう一度 gcc main.c -lncurses -o main を実行してみてください。
jbpb0

2021/07/05 10:31

質問者さん > retunを押しても何も起こりませんでした。 エラーが出なくてmainができた、ということでは? ls -l を実行してみてください 「main」というファイルがありませんか?
itagagaki

2021/07/05 10:38

ああ、そうか、エラーもウォーニングもなく成功したのなら特に何も表示は無いですね(笑)
退会済みユーザー

退会済みユーザー

2021/07/05 12:13

有難うございます。 mainファイルができていました。 >ターミナルでファイルを指定せずにgccを実行するとclang: error: no input filesと表示されてしまいます。 この原因は一体なんなのでしょうか。
退会済みユーザー

退会済みユーザー

2021/07/05 13:37

有難うございます。 参考にさせて頂きます。
jbpb0

2021/07/06 06:02 編集

質問者さん > mainファイルができていました。 ということは、「xcodeのgcc (clang)」でなら、ちゃんとコンパイルできるわけですね 正常に実行できるか、コンパイルしてできた「main」を実行してみてください もし、「brewのgcc」でもコンパイルできるようにしたければ、現状なぜできないのかの確認方法を「質問への追記・修正」に書いたので、そちらを見てください
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問