0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

avr-gccでELFファイルを作ろうとしてstdio.hがないと言われたときの対処法

Posted at

環境

  • Xubuntu 18.04 (Ubuntu 18.04)

状況

次のmain.cavr-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-avravr-libcの他にbinutils-avravrdudeをインストールしているが、この記事ではそれらのインストールは省いた。

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] 

参考

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?