クロスコンパイル:ビルド(非ターゲット)システムで「make install」を実行します。

クロスコンパイル:ビルド(非ターゲット)システムで「make install」を実行します。

クロスコンパイラを使用してあるアーキテクチャでコードをコンパイルし、実行可能ファイルを別のアーキテクチャにコピーして実行する基本的な概念を理解します。ただし、./configure; make; make installクロスコンパイルコンテキストでは、一般的なシーケンスの最後のステップを特定することはできません。

たとえば、Ubuntu PCを使用してARMデバイス用のlibusbをクロスコンパイルしたいとします。 libusbのソースコードをダウンロードして設定を実行して、次のことを行いました。

> ./configure --disable-udev --host=arm-linux-gnueabihf CC=/usr/bin/arm-linux-gnueabi-gcc
> make

この時点では、すでにARMアーキテクチャ用のlibusb用にコンパイルされたバイナリがたくさんあります。理想的には、これらのバイナリをARMデバイスにコピーして実行して、ターゲットmake installディレクトリに手動でコピーする必要がないようにしたいと思います。ただし、これはUbuntuシステムからビルド環境全体をコピーする必要があることを意味し、これは時間とディスク容量の無駄のようです。それとも、バイナリと適切なMakefileを集めてコピーすることもできますが、それはあいまいです。

make installターゲットアーキテクチャを活用するよりエレガントな方法はありますか?

ベストアンサー1

はい、少なくともここで使用されているようなAutotoolsベースのビルドシステムの場合(おそらく他の一部でも)、次のものをサポートします。DESTDIR変数を使用してにインストールできます/

mkdir destdir
make DESTDIR="${PWD}/destdir" install

これにより、ターゲットバイナリ(および同伴ファイル)が提供され、ターゲットdestdirデバイスの/

おすすめ記事