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?

ThinkPad X250にDebian12を入れてラズパイのクロスコンパイル環境作成

Posted at

本稿はLinuxセットアップ記事である。とても今更感があるため、開発向けの細かいところに着目して記事にした。

今回は、Raspberry Piのクロスコンパイル環境を構築する話です。
本筋がクロスコンパイルの話でサーバー関連の話はないです。
暇なら読んでみて下さい。

SSDを用意

まっさらなSSDにインストールをおすすめする。
120GBあれば十分そう。

参考までに一通りの開発環境を入れてこんなもん。

ファイルシス   サイズ  使用  残り 使用% マウント位置
udev             3.8G     0  3.8G    0% /dev
tmpfs            782M  1.5M  781M    1% /run
/dev/sda2        109G   24G   80G   23% /
tmpfs            3.9G     0  3.9G    0% /dev/shm
tmpfs            5.0M   12K  5.0M    1% /run/lock
/dev/sda1        511M  5.9M  506M    2% /boot/efi
tmpfs            782M  2.5M  780M    1% /run/user/1000

Debian

Ubuntuでもいいが、あえて硬派なDebian。

Debianインストールメディア作成

Live版だと3GBもあるので、ネットインストール版を持ってくる。仕事だとオフラインインストールだが、家ならネットにつないで横着してもよかろう。

ネットインストール版だとCD-Rに焼ける650MBサイズ。
https://cdimage.debian.org/debian-cd/current/amd64/iso-cd/debian-12.9.0-amd64-netinst.iso

これをCD-Rに焼いて、まずはインストール。
最初に日本語指定するのとネットワークつないでおくくらいであとは放置。
GUIはシンプルなXfceにした。

image.png

Tips:スクリーンショットのとり方

別アプリのメニューを開いてスクリーンショットしたいケースがあると思う。
xfceの場合、単純にPrtScで取るとメニューが隠れてしまう。
なので、タイマーを使う。若干めんどくさい。

  1. まず、何もせずPrtScを押す。

image.png

  1. 撮影するまでの遅延時間を5秒くらいにする。

  2. OK押して別アプリのメニューを開く。5秒後にキャプチャされる。

image.png

suduerに追加

まず、ユーザーがsudoできるようにする。

usermod -aG sudo airnanasi

Tips:ログアウト時のビープ音消す

まず、いちばんうざいビープ音を消す。
ターミナルで下記を。※.bash_profileに追記されます。

echo "set bell-style none" >> ~/.bash_profile

Tips:指紋認証

ツールを入れる。

sudo apt update
sudo apt install fprintd libpam-fprintd

指紋登録する。

fprintd-enroll

指紋認証を有効化する。
メニュー操作が分かりづらい。
・Spaceキーで選択・選択解除
・TabキーでOKを選んでEnter

sudo pam-auth-update

ログアウト、ログインして指紋認証できればOK。
ターミナルからsudo -iでも試してみる。

VSCodeのインストール

sudo apt update
sudo apt install code

日本語化する。
拡張機能→Japaneseで検索→Ctrl+Shift+P→Language
で検索。メニュー名は「Configure Display Language」。

image.png

配色テーマはTokyo Night Stormだろう。
image.png

GIMPのインストール

カメラ画像閲覧、編集はこいつがないと。

sudo apt update
sudo apt install gimp

Tips:Pythonについて

Debianの公式パッケージは2025/2/14時点で「3.11.2」であった。
Debianの場合、入っているバージョンは動作確認してある安定版なので、うかつにバージョンは上げないほうが良いかもしれない。

Raspberry Pi2のクロスコンパイル環境を作る

ツールインストール

下記参考。
https://qiita.com/iwatake2222/items/5b20558f8ab3f27ca4a4

sudo apt-get update
sudo apt-get install build-essential libncurses-dev git git-core
mkdir ~/raspberry
cd ~/raspberry
git clone https://github.com/raspberrypi/tools

sshが通るか確認(piはラズパイのユーザー名、IPアドレスもラズパイの)

ssh pi@raspberrypi.local
または
ssh pi@192.168.xx.xx

注:
「raspberrypi.local」はRaspberry Pi のデフォルトのホスト名に付加される .local ドメイン名です。
この形式を使用することで、同一ネットワーク内の Raspberry Pi に対して、IP アドレスを直接指定せずに名前解決を行い、SSH 接続やウェブブラウザでのアクセスが可能になります。

サンプルコード

#include <stdio.h>

int main() {
    printf("Hello, Raspberry Pi!\n");
    return 0;
}

ビルド

クロスコンパイラを指定してビルド。

ARCH=arm ~/raspberry/tools/arm-bcm2708/gcc-linaro-arm-linux-gnueabihf-raspbian-x64/bin/arm-linux-gnueabihf-g++ hello.c -o hello

成功してhelloファイルができればOK。
helloファイルをscpで転送します。

scp hello pi@raspberrypi.local:/home/pi/

ラズパイにsshログインして実行。

ssh pi@raspberrypi.local
./hello
$ Hello, Raspberry Pi!

実行権限はラズパイのルートなら問題ないはずだが、実行権限がなければchmod等でつける。

おすすめはVSCodeでターミナルを2つ開いておいて、片方をssh接続しっぱなしにしておく。
gdb debugは気が向いたらやろう。

image.png

構築方法をChatGPTに聞いたけどクロスコンパイル構築は全然だめだった。
Qiitaのほうが正確。この辺弱いなぁ。。。

Raspberry Pi Pico 2のバイナリをビルドしてみた

以前作った環境をクローンしてそのままDebian上のVSCodeでビルドしてみる。

WindowsでのビルドよりPCスペックは落ちるのに明らかにコンパイルが速い。(1/3くらいの時間で終わる感じ)

ChatGPTに聞いてみたところ、
・ext4ファイルシステムが断片ファイルに強い
・elfをネイティブに扱える
・gccをネイティブに扱える(MingWなど介さない)
・ninjaの最適化
などで速い可能性があるとのこと。
結構びっくりな速さで最初コンパイルしてんのかと思ったくらい。

image.png

-以上-

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?