開発環境
モチベーション
低レイヤを知りたい人のためのCコンパイラ作成入門 をやっていく上で、普段使いしているPCから記事と同じ命令セットの環境を用意したい。
普段使いしているのはMacBook Pro M2で、命令セットはARM64。一方で、コンパイラ本はx86-64が前提となっている。ARM64とx86-64はそれぞれ異なるコンパイラの構文を持つので、読み替えが発生して大変。環境を合わせたい。
取りうる手法
エディタは普段使っているMacBook Pro M2上で使いたいので、以下の手法が考えられる。
- 命令セットがx86-64のPCをMacBook Pro M2から繋げる
- 命令セットがx86-64の仮想マシンをAWSなどで作成してMacBook Pro M2から繋げる
物理的な手元に命令セットがx86-64のUbuntuが入っているPCがあるので、経済的な観点から前者をやってみる。(電気代考えたら本当に経済的なのか?)
接続
- 命令セットがx86-64のPC: Ubuntu 18.04.3
- 普段使いしているPC: MacBook Pro M2 Ventura 13.2
Ubuntu側
$ sudo apt install openssh-server
$ sudo service ssh status
macOS側
$ ssh {USER}@{IP_ADDRESS}
毎回パスワードを求められるのは手間だったので以下を参考にして公開鍵認証を設定した。
SSHは公開鍵・秘密鍵を使って楽にする - RAKUS Developers Blog | ラクス エンジニアブログ
ssh-copy-id
便利だ。
ファイルを送ってコマンド実行
一発で実行したいのでシェルスクリプトを書いた。
#!/bin/sh rsync -avp "$2" btsitf@"$1":/home/btsitf/"$2" ssh -t btsitf@"$1" "cc -o test $2 && ./test" echo $?
IPアドレスは変動する可能性があるので外から渡せるようにした。
ssh
は最後に実行したコマンドの終了コードを返すみたい。
以下のように使ってる。
./exec.sh {IP_ADDRESS} test.s
今は終了コードだけ見られればいいのでこんな感じにした。実行するコマンドを柔軟にできたらより良さそう。