web-dev-qa-db-ja.com

ARMのクロスコンパイルに関するヘルプ

私は最近、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ですが、他のすべてで問題が発生しました。私は何をしますか?プログラムをネイティブにコンパイルできるので、すべてのライブラリとものがインストールされています。

4
John Scott

Muruが述べたように。そのライブラリのARMアーキテクチャをインストールする必要があります。ただし、それらは http://packages.ubuntu.com サイトにリストされていません。また、依存関係をそのように手動で管理するのは簡単ではありません。

注:chroot環境をセットアップし、Ubuntu 15.04 AMD64にarmhfアーキテクチャを追加すると、奇妙な動作が見つかりました。 dpkg --add-architecture=armhfを使用しました。 APTは、壊れたパッケージwineについて文句を言い始め、i386パッケージをすべて削除しようとしました。

  1. 新しいソースファイルを追加

    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/ さまざまなリリースを上下に閲覧できます。

  2. パッケージリストの更新

    Sudo apt-get update
    
  3. Dpkg構成を追加します

    Sudo nano /etc/dpkg/dpkg.cfg.d/multiarch
    

    この行で

    foreign-architecture armhf
    
  4. 必要に応じて必要なパッケージをインストールします。例:

    Sudo apt-get install libglib2.0-0:armhf
    

参照:

2
user.dz

パッケージをダウンロードし、arm-linux-gnueabihfを使用してクロスコンパイルし、ライブラリを/ usr /のarm-linux-gnueabihfコンパイラディレクトリの対応するフォルダーに配置することもできます。

0
George