まず、通常は Linux VM を使用する方が簡単であることに同意します。そうは言っても、本当にこれをやりたいのであれば、以下の手順を使用して Linux カーネル コードを正常にコンパイルしました。
開始する前に、Mac の大文字と小文字を区別するファイルシステムに Linux ソース ツリーをインストールする必要がある場合があります。(デフォルトの HFS ファイルシステムは大文字と小文字を区別しません。) ここでは説明しませんが、多くの人が Android ソース ツリーをコンパイルするためにこれを行っているため、Google を使用して手順を見つけることができます。
まず、OS X ボックスでカーネルをクロスコンパイルするには、次のファイルが必要です (既知の動作中の Linux VM からローカルにコピーします/usr/include
)。
/usr/include/elf.h
/usr/include/features.h
/usr/include/bits/predefs.h
/usr/include/bits/wordsize.h
/usr/include/gnu/stubs.h
/usr/include/gnu/stubs-64.h
次にmalloc.h
、Linux システムの予想される場所にいる必要があるので、次のようにします。
sudo ln -s /usr/include/malloc/malloc.h /usr/include/malloc.h
最後に、システムにインストールされているコンパイラが Linux カーネルの構築に適しているかどうかを考慮する必要があります。適切なクロスコンパイラ ツールチェーンを使用して、Android 用にコンパイルされたカーネルにこの手順を使用しましたが、gcc
OS X のデフォルト コンパイラを使用して Linux カーネルを正常にコンパイルできるかどうかはわかりません (Xcode に付属のコンパイラがあると仮定します)。 ...)
編集:「nmagerko」からの上記のコメントにリンクされているバグで指摘されている手順に従って、正しい依存関係と の GNU バージョンがあることを確認することもできますsed
。特に:
$ sudo port install libelf
$ sudo port install gsed