私は最近、ARM用のプログラムをクロスコンパイルしようとしています。ただし、make
を実行すると、常に1分以内に次のようなエラーが表示されます。
/usr/lib/gcc-cross/arm-linux-gnueabihf/4.8/../../../../arm-linux-gnueabihf/bin/ld: cannot find -lgio-2.0.
私を混乱させているのは、プログラムをクロスコンパイルしようとするたびにそのエラーが発生することです(-lgio-2.0が見つからないと常に言われるわけではありません。他のものも見つけるのに苦労します)。私が間違っていることはありますか?なぜこのエラーが常にあるのですか?クロスコンパイルに成功した唯一のプログラムはbashですが、他のすべてで問題が発生しました。私は何をしますか?プログラムをネイティブにコンパイルできるので、すべてのライブラリとものがインストールされています。
Muruが述べたように。そのライブラリのARMアーキテクチャをインストールする必要があります。ただし、それらは http://packages.ubuntu.com サイトにリストされていません。また、依存関係をそのように手動で管理するのは簡単ではありません。
注:chroot
環境をセットアップし、Ubuntu 15.04 AMD64にarmhf
アーキテクチャを追加すると、奇妙な動作が見つかりました。 dpkg --add-architecture=armhf
を使用しました。 APTは、壊れたパッケージwine
について文句を言い始め、i386
パッケージをすべて削除しようとしました。
新しいソースファイルを追加
Sudo nano /etc/apt/sources.list.d/arm-repo.list
必要なアーキテクチャのソースを追加し、リリースします。
deb [Arch=armhf] http://ports.ubuntu.com/ubuntu-ports trusty main universe
ここで利用可能なArchを確認してください: http://ports.ubuntu.com/ubuntu-ports/dists/trusty/main/ さまざまなリリースを上下に閲覧できます。
パッケージリストの更新
Sudo apt-get update
Dpkg構成を追加します
Sudo nano /etc/dpkg/dpkg.cfg.d/multiarch
この行で
foreign-architecture armhf
必要に応じて必要なパッケージをインストールします。例:
Sudo apt-get install libglib2.0-0:armhf
参照:
パッケージをダウンロードし、arm-linux-gnueabihfを使用してクロスコンパイルし、ライブラリを/ usr /のarm-linux-gnueabihfコンパイラディレクトリの対応するフォルダーに配置することもできます。