複天一流:どんな手を使ってでも問題解決を図るブログ

宮本武蔵の五輪書の教えに従い、どんな手を使ってでも問題解決を図るブログです(特に、科学、数学、工学の問題についてですが)

Rosettaの底力: Nanosaurは動いた

Rosettaの限界と底力

先日はcrispy-doomコンパイルにおいてRosettaの限界を感じたのだが、今回はRosettaの底力を感じたので、それを書いておこう。

試したのは、このあいだ、MojaveでコンパイルしたNanosaurとNanosaur2である。SDL2ライブラリを利用した現代風の改良が加えられた、この2つのゲームソフトは、現在githubソースコードが公開され、オープンソフトウェアとして生き返った。ちょっと苦労した点もあったが、私もソースコードコンパイルに成功し、このクラシックなゲームをMojaveやCatalinaで再び楽しめるようになった。

先日から、メインマシンをIntel-mac(mojave)からM1-mac(monterey)に移行する作業を実施しているが、MojaveでコンパイルしたNanosaurが果たしてRosettaによってM1-macbook proそのまま起動できるか試してみた。その結果は、NanosaurもNanosaur2も両方とも(なんの修正もやり直しも不要で)問題なく起動し作動したということになった!コードは当然ながらx86_64のはずである。これがarm64で動いたというのだから、Rosettaの底力を見せつけられた、ということになるだろう。

しかし、crispy-doomはダメで、NanosaurはOKというのはどういうことなんだろうか?どうも、Rosettaが力を発揮するのは、アプリ名がXXX.appとなっているタイプのアプリケーション、つまりXcodeのプロジェクトとして完成したアプリだけのようである。crispy-doomはmakeによって実行ファイル単体に全てが固められてしまったが、NanosaurはNanosaur.appというディレクトリがその正体であり、その中には設定ファイル*.plistやその他のデータがバイナリとともに配置されている。

そういえば、Mojaveからコピーして持ってきたAtom editorもM1-MBPで動いているが、その正体はAtom.appである。ディレクトリの中に入ってみるとContentsというディレクトリがあり、その中にInfo.plistなどさまざまなファイルが収められている。実行ファイルの本体は、MacOS/Atomであり、そのファイル形式を調べると、予想通りx86_64であった。

$ cd Atom.app/Contents/MacOS
$ file Atom

Atom: Mach-O 64-bit executable x86_64