環境
- Xubuntu 18.04 (Ubuntu 18.04)
状況
次のmain.c
をavr-gcc
でコンパイルしてmain.elf
を作ろうとした。
main.c
#include <stdio.h>
int main() {
printf("Hello World\n");
return 0;
}
最初、自分のPCはavr-gcc
をコマンドとして認識しなかったので、次のコマンドでgcc-avr
をインストールした。
$ sudo apt install gcc-avr
「これでコンパイルできる!」と思いavr-gcc
をしたら、「stdio.hが存在しない」と怒られた。
$ avr-gcc -Os -Wall -mmcu=atmega328p main.c -o test.elf
main.c:1:19: 致命的エラー: stdio.h: そのようなファイルやディレクトリはありません
コンパイルを停止しました。
対処法
-
avr-libc
をインストールする
次のコマンドでavr-libc
をインストールしてからコンパイルすると、ELFファイルを作成することができた。
$ sudo apt install avr-libc
$ avr-gcc -Os -Wall -mmcu=atmega328p main.c -o test.elf
$ ls
main.c test.elf
補足
参考にした記事ではgcc-avr
とavr-libc
の他にbinutils-avr
とavrdude
をインストールしているが、この記事ではそれらのインストールは省いた。
avrdude
に関しては
avrdudeはライターを制御する。
ということだったので、今回のインストールは見送った。
今回の目的はELFファイルの作成だったからだ。
次にbinutils-avr
だが、gcc-avr
と一緒にインストールされていたので、上で書くのは省いた。
$ sudo apt install gcc-avr
パッケージリストを読み込んでいます... 完了
依存関係ツリーを作成しています
状態情報を読み取っています... 完了
以下の追加パッケージがインストールされます:
binutils-avr
提案パッケージ:
task-c-devel gcc-doc avr-libc
以下のパッケージが新たにインストールされます:
binutils-avr gcc-avr
アップグレード: 0 個、新規インストール: 2 個、削除: 0 個、保留: 0 個。
16.6 MB のアーカイブを取得する必要があります。
この操作後に追加で 85.3 MB のディスク容量が消費されます。
続行しますか? [Y/n]