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

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

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

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

Q&A

解決済

1回答

7475閲覧

gccをビルドしてインストール

退会済みユーザー

退会済みユーザー

総合スコア0

GCC

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

0グッド

0クリップ

投稿2018/02/17 18:55

gcc7.2をビルドしてインストールした後、

gcc test.c

としてtest.cファイルをコンパイルした結果

test.c:1:10: fatal error: stdio.h: No such file or directory

とエラーが出てコンパイルが失敗してしまいました。

ビルドする際にconfigureファイル実行時に --prefixオプションにて$HOME/localとしたので

通常は $HOME/local/include にあるはずだと思うのですが存在せず、includeディレクトリ内には c++という名前のディレクトリだけが存在している状況です。

下記のようにビルドを実行しました。

$ wget http://ftp.tsukuba.wide.ad.jp/software/gcc/releases/gcc-7.2.0/gcc-7.2.0.tar.gz
$ tar zxvf gcc-7.2.0.tar.gz

$ cd gcc-7.2.0
$ ./contrib/download_prerequisites

$ cd ..
$ mkdir build
$ cd build

$ ../gcc-7.2.0/configure --prefix=$HOME/local --enable-languages=c,c++,objc,fortran --disable-multilib --disable-bootstrap

$ make
$ sudo make install

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

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

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

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

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

guest

回答1

0

ベストアンサー

インクルードパスは適切に設定されてますか?

gcc -print-search-dirs

--- 追記 ---
参考までに私の環境で同じ手順でgccを導入した時のgcc -vの表示を添付します。
問題なくコンパイルできました。

hogehoge@hogehoge-H87-HD3:ccc$ ~/local/bin/gcc -o hello hello.c -v 組み込み spec を使用しています。 COLLECT_GCC=/home/hogehoge/local/bin/gcc COLLECT_LTO_WRAPPER=/home/hogehoge/local/libexec/gcc/x86_64-pc-linux-gnu/7.2.0/lto-wrapper ターゲット: x86_64-pc-linux-gnu configure 設定: ../gcc-7.2.0/configure --prefix=/home/hogehoge/local --enable-languages=c,c++,objc,fortran --disable-multilib --disable-bootstrap スレッドモデル: posix gcc バージョン 7.2.0 (GCC) COLLECT_GCC_OPTIONS='-o' 'hello' '-v' '-mtune=generic' '-march=x86-64' /home/hogehoge/local/libexec/gcc/x86_64-pc-linux-gnu/7.2.0/cc1 -quiet -v -imultiarch x86_64-linux-gnu hello.c -quiet -dumpbase hello.c -mtune=generic -march=x86-64 -auxbase hello -version -o /tmp/cc7hPGtd.s GNU C11 (GCC) version 7.2.0 (x86_64-pc-linux-gnu) compiled by GNU C version 5.4.0 20160609, GMP version 6.1.0, MPFR version 3.1.4, MPC version 1.0.3, isl version isl-0.16.1-GMP GGC heuristics: --param ggc-min-expand=100 --param ggc-min-heapsize=131072 存在しないディレクトリ "/usr/local/include/x86_64-linux-gnu" を無視します 存在しないディレクトリ "/home/hogehoge/local/lib/gcc/x86_64-pc-linux-gnu/7.2.0/../../../../x86_64-pc-linux-gnu/include" を無視します #include "..." の探索はここから始まります: #include <...> の探索はここから始まります: /home/hogehoge/local/lib/gcc/x86_64-pc-linux-gnu/7.2.0/include /usr/local/include /home/hogehoge/local/include /home/hogehoge/local/lib/gcc/x86_64-pc-linux-gnu/7.2.0/include-fixed /usr/include/x86_64-linux-gnu /usr/include 探索リストの終わりです。 GNU C11 (GCC) version 7.2.0 (x86_64-pc-linux-gnu) compiled by GNU C version 5.4.0 20160609, GMP version 6.1.0, MPFR version 3.1.4, MPC version 1.0.3, isl version isl-0.16.1-GMP GGC heuristics: --param ggc-min-expand=100 --param ggc-min-heapsize=131072 Compiler executable checksum: 401027be155cbb5e006a40746810968a COLLECT_GCC_OPTIONS='-o' 'hello' '-v' '-mtune=generic' '-march=x86-64' as -v --64 -o /tmp/ccsiJNLg.o /tmp/cc7hPGtd.s GNU アセンブラ バージョン 2.26.1 (x86_64-linux-gnu)、BFD バージョン (GNU Binutils for Ubuntu) 2.26.1 を使用 COMPILER_PATH=/home/hogehoge/local/libexec/gcc/x86_64-pc-linux-gnu/7.2.0/:/home/hogehoge/local/libexec/gcc/x86_64-pc-linux-gnu/7.2.0/:/home/hogehoge/local/libexec/gcc/x86_64-pc-linux-gnu/:/home/hogehoge/local/lib/gcc/x86_64-pc-linux-gnu/7.2.0/:/home/hogehoge/local/lib/gcc/x86_64-pc-linux-gnu/ LIBRARY_PATH=/home/hogehoge/local/lib/gcc/x86_64-pc-linux-gnu/7.2.0/:/home/hogehoge/local/lib/gcc/x86_64-pc-linux-gnu/7.2.0/../../../../lib64/:/lib/x86_64-linux-gnu/:/lib/../lib64/:/usr/lib/x86_64-linux-gnu/:/home/hogehoge/local/lib/gcc/x86_64-pc-linux-gnu/7.2.0/../../../:/lib/:/usr/lib/ COLLECT_GCC_OPTIONS='-o' 'hello' '-v' '-mtune=generic' '-march=x86-64' /home/hogehoge/local/libexec/gcc/x86_64-pc-linux-gnu/7.2.0/collect2 -plugin /home/hogehoge/local/libexec/gcc/x86_64-pc-linux-gnu/7.2.0/liblto_plugin.so -plugin-opt=/home/hogehoge/local/libexec/gcc/x86_64-pc-linux-gnu/7.2.0/lto-wrapper -plugin-opt=-fresolution=/tmp/ccDTII4j.res -plugin-opt=-pass-through=-lgcc -plugin-opt=-pass-through=-lgcc_s -plugin-opt=-pass-through=-lc -plugin-opt=-pass-through=-lgcc -plugin-opt=-pass-through=-lgcc_s --eh-frame-hdr -m elf_x86_64 -dynamic-linker /lib64/ld-linux-x86-64.so.2 -o hello /usr/lib/x86_64-linux-gnu/crt1.o /usr/lib/x86_64-linux-gnu/crti.o /home/hogehoge/local/lib/gcc/x86_64-pc-linux-gnu/7.2.0/crtbegin.o -L/home/hogehoge/local/lib/gcc/x86_64-pc-linux-gnu/7.2.0 -L/home/hogehoge/local/lib/gcc/x86_64-pc-linux-gnu/7.2.0/../../../../lib64 -L/lib/x86_64-linux-gnu -L/lib/../lib64 -L/usr/lib/x86_64-linux-gnu -L/home/hogehoge/local/lib/gcc/x86_64-pc-linux-gnu/7.2.0/../../.. /tmp/ccsiJNLg.o -lgcc --as-needed -lgcc_s --no-as-needed -lc -lgcc --as-needed -lgcc_s --no-as-needed /home/hogehoge/local/lib/gcc/x86_64-pc-linux-gnu/7.2.0/crtend.o /usr/lib/x86_64-linux-gnu/crtn.o COLLECT_GCC_OPTIONS='-o' 'hello' '-v' '-mtune=generic' '-march=x86-64'

投稿2018/02/17 20:12

編集2018/02/18 09:36
TaroToyotomi

総合スコア1430

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

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

退会済みユーザー

退会済みユーザー

2018/02/18 02:07

-print-search-dirsオプションを付加して見たところ何やらズラッとパスが表示れましたが、 includeという文字は見当たりませんでした。 ファイル実行時にvオプションを付加してみたところ #include "..." search starts here: #include <...> search starts here: ホームディレクトリまでのパス/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.2.0/include ホームディレクトリまでのパス/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.2.0/include-fixed ホームディレクトリまでのパス/local/bin/../lib/gcc/../../include となっております
TaroToyotomi

2018/02/18 08:40

すみません print-search-dirsは間違ってました。 vオプションで正しいです。 ホームディレクトリまでのパス/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.2.0/include ホームディレクトリまでのパス/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.2.0/include-fixed ホームディレクトリまでのパス/local/bin/../lib/gcc/../../include にヘッダファイル(例えばstdio.h)はありますか? なければ、違うところに展開されているかもしれませんので locate stdio.h | grep 7.2 みたいにして探してみてください。
TaroToyotomi

2018/02/18 09:45 編集

そもそも/usr/includeにパスが通ってれば問題ないはずですけど。 ビルドしてみて分かったけどmake installしても新しくヘッダが展開されるわけではないみたいですね。
退会済みユーザー

退会済みユーザー

2018/02/18 11:07

何度も回答ありがとうございます。 locateコマンドは無かったのでホームディレクトリにてfindで探索してみたところ find . -name "stdio.h" ./local/lib/gcc/x86_64-pc-linux-gnu/7.2.0/include/ssp/stdio.h ./local/include/c++/7.2.0/tr1/stdio.h 上記の場所にあるみたいなのですが、このどちらかにパスを通せばよいのでしょうか?
退会済みユーザー

退会済みユーザー

2018/02/18 11:18

./local/lib/gcc/x86_64-pc-linux-gnu/7.2.0/include/ssp/stdio.h ./local/include/c++/7.2.0/tr1/stdio.h に存在しているstdio.hのコードを見てみたところどうも違うようですね… インストール失敗してるのでしょうか
TaroToyotomi

2018/02/18 12:19

ホームディレクトリじゃなくて/usr/includeです。 元々入っていたヘッダーがそのまま使われるようです。 /usr/includeにも無いようであれば以下のコマンドで開発パッケージをインストールしてみてはいかがでしょうか。 sudo apt-get install build-essential
退会済みユーザー

退会済みユーザー

2018/02/20 11:05

/usr/includeにstdio.hが存在していました。 パスを通すことで無事動作しました(*´ڡ`●) 何度も回答ありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問