はじめに
ちょっと前にツイッターでLinux上で動くmacOSのエミュレータDarlingというやつの情報が流れてきた。
wineのmacOS版みたいな感じのようだ。興味が湧いたので自分でも試してみる。
環境はUbuntu 18.04。
依存パッケージのインストール
sudo apt install cmake clang bison flex libfuse-dev libudev-dev pkg-config libc6-dev-i386 \ linux-headers-generic gcc-multilib libcairo2-dev libgl1-mesa-dev libglu1-mesa-dev libtiff5-dev \ libfreetype6-dev git libelf-dev libxml2-dev libegl1-mesa-dev libfontconfig1-dev libbsd-dev \ libxrandr-dev libxcursor-dev libgif-dev libavutil-dev libpulse-dev libavformat-dev libavcodec-dev \ libavresample-dev libdbus-1-dev libxkbfile-dev libssl-dev libfuse-dev libbsd-dev
/usr/include/asmのシンボリックリンク
これをしないとエラーになるため、リンクを作成する。
$ sudo ln -s /usr/include/asm-generic /usr/include/asm
環境の作成
ソースの取得
$ git clone --recursive https://github.com/darlinghq/darling.git
更新は下記
$ git pull $ git submodule init $ git submodule update
ビルドおよびインストール
# Move into the cloned sources $ cd darling # Make a build directory $ mkdir build && cd build # Configure the build $ cmake .. # Build and install Darling $ make -j $(nproc) $ sudo make install
カーネルモジュールのビルド及びインストール
Darling also requires a kernel module named darling-mach
とのことで、これもビルドする必要がある。
まず、依存するパッケージをインストールする。
$ sudo apt install linux-headers-`uname -r`
次にビルド及びインストール。
$ make lkm $ sudo make lkm_install
lkmはlinux kernel module
の略か。
実行
shell
shellを実行してみる。
$ darling shell
コンパイラの設定
Darling [~]$ xcode-select --install
hello world
プログラムの作成とビルド
Darling [~]$ cat > hello-world.c #include <stdio.h> int main() { puts("Hello World!"); } Darling [~]$ clang hello-world.c -o hello-world
実行
Darling [~]$ ./hello-world Hello world!
問題なく事項できる。
まとめ
環境の導入自体はそこまで難しくない。
macOS自体は詳しくないが、おそらくちゃんとmacOS向けのバイナリが動いているしコンパイラをいれてコンパイルもできた。
macOS向けのテスト環境がない場合、ちょっとしたことならこれで試せるのかも。