*buntu multiarch: armel 用 libusb-dev および libusb

*buntu multiarch: armel 用 libusb-dev および libusb

Phidg​​etのSBCのクロスコンパイル環境を設定したいと思います。 libphidgetにはlibusb-1.0-0とlibusb-1.0-0-devが必要ですが、現在は見つかりません。

~/Softwares/libphidget-2.1.8.20151217 $ ./configure --prefix=/usr/arm-linux-gnueabi --host=arm-linux-gnueabi
[...]
checking for library containing libusb_init... no
checking for library containing usb_find_busses... no
configure: error: Missing libusb!

私が試したこと:

私のアーチ用ライブラリ(amd64)があり、armel用にインストールしようとしました。 dpkg経由で​​アーチを追加しました。

$ dpkg --print-foreign-architectures
i386
armel

$ apt-config dump |grep -i arch
APT::Architecture "amd64";
APT::Architectures "";
APT::Architectures:: "amd64";
APT::Architectures:: "i386";
APT::Architectures:: "armel";

その後、ソースを追加し(launchpad.netで検索し、これらのパッケージとアーチがPreciseにあることを発見しましたdeb [arch=armel,armhf] http://ports.ubuntu.com/ubuntu-ports precise main universe)、最後にリポジトリを介してインストールを試みます。

$ apt-cache policy libusb-1.0.0:armel
libusb-1.0-0:armel:
  Installé : (aucun)
  Candidat : 2:1.0.9~rc3-2ubuntu1
 Table de version :
     2:1.0.9~rc3-2ubuntu1 500
        500 http://ports.ubuntu.com/ubuntu-ports precise/main armel Packages
libusb-1.0-0-dev:armel:
  Installé : (aucun)
  Candidat : 2:1.0.9~rc3-2ubuntu1
 Table de version :
     2:1.0.9~rc3-2ubuntu1 500
        500 http://ports.ubuntu.com/ubuntu-ports precise/main armel Packages

$ luneart@luneart-Lenovo-renew ~ $ sudo apt-get install libusb-1.0-0-dev:armel libusb-1.0-0:armel
Lecture des listes de paquets... Fait
Construction de l'arbre des dépendances       
Lecture des informations d'état... Fait
Certains paquets ne peuvent être installés. Ceci peut signifier que vous avez demandé l'impossible, ou bien, si vous utilisez la distribution unstable, que certains paquets n'ont pas encore été créés ou ne sont pas sortis d'Incoming.
L'information suivante devrait vous aider à résoudre la situation : 

Les paquets suivants contiennent des dépendances non satisfaites :
 libusb-1.0-0:armel : Dépend: libc6:armel (>= 2.8) mais ne sera pas installé
 libusb-1.0-0-dev:armel : Dépend: libc6-dev:armel mais ne sera pas installé ou
                                  libc-dev:armel
E: Impossible de corriger les problèmes, des paquets défectueux sont en mode « garder en l'état ».

armelのlibc6依存関係がないため、何もインストールしません。ただし、その依存関係を解決する必要があります。 libc6用のクロスパッケージを見つけようとしています。 (最初にlibusbクロスパッケージを検索しましたが見つかりませんでした。)

$ apt-cache search libc6 armel
libc6-armhf - Embedded GNU C Library: ARM hard float shared libraries for armel
libc6-dev - Embedded GNU C Library: Development Libraries and Header Files
libc6-dev-armhf - Embedded GNU C Library: ARM hard float development libraries for armel
libc6 - GNU C Library: Shared libraries
libc6-dbg-armel-cross - GNU C Library: detached debugging symbols (for cross-compiling)
libc6-armel-armhf-cross - Dummy package to get libc6:armel installed
libc6-armel-cross - GNU C Library: Shared libraries (for cross-compiling)
libc6-armhf-armel-cross - Dummy package to get libc6:armhf installed
libc6-dev-armel-armhf-cross - Dummy package to get libc6-dev:armel installed
libc6-dev-armel-cross - GNU C Library: Development Libraries and Header Files (for cross-compiling)
libc6-dev-armhf-armel-cross - Dummy package to get libc6-dev:armhf installed

その後、次から始めてこれをインストールしましたlibc6-armel-cross

dpkg -l libc6*
Souhait=inconnU/Installé/suppRimé/Purgé/H=à garder
| État=Non/Installé/fichier-Config/dépaqUeté/échec-conFig/H=semi-installé/W=attend-traitement-déclenchements
|/ Err?=(aucune)/besoin Réinstallation (État,Err: majuscule=mauvais)
||/ Nom                     Version          Architecture     Description
+++-=======================-================-================-===================================================
ii  libc6:amd64             2.23-0ubuntu4    amd64            GNU C Library: Shared libraries
ii  libc6:i386              2.23-0ubuntu4    i386             GNU C Library: Shared libraries
un  libc6-amd64             <aucune>         <aucune>         (aucune description n'est disponible)
un  libc6-armel-armel-cross <aucune>         <aucune>         (aucune description n'est disponible)
ii  libc6-armel-armhf-cross 2.23-0ubuntu3cro all              Dummy package to get libc6:armel installed
ii  libc6-armel-cross       2.23-0ubuntu3cro all              GNU C Library: Shared libraries (for cross-compilin
un  libc6-armel-dcv1        <aucune>         <aucune>         (aucune description n'est disponible)
ii  libc6-armhf-armel-cross 2.23-0ubuntu3cro all              Dummy package to get libc6:armhf installed
un  libc6-armhf-armhf-cross <aucune>         <aucune>         (aucune description n'est disponible)
ii  libc6-armhf-cross       2.23-0ubuntu3cro all              GNU C Library: Shared libraries (for cross-compilin
un  libc6-armhf-dcv1        <aucune>         <aucune>         (aucune description n'est disponible)
ii  libc6-dbg:amd64         2.23-0ubuntu4    amd64            GNU C Library: detached debugging symbols
ii  libc6-dbg-armel-cross   2.23-0ubuntu3cro all              GNU C Library: detached debugging symbols (for cros
un  libc6-dbg-armel-dcv1    <aucune>         <aucune>         (aucune description n'est disponible)
ii  libc6-dev:amd64         2.23-0ubuntu4    amd64            GNU C Library: Development Libraries and Header Fil
un  libc6-dev-armel-armel-c <aucune>         <aucune>         (aucune description n'est disponible)
ii  libc6-dev-armel-armhf-c 2.23-0ubuntu3cro all              Dummy package to get libc6-dev:armel installed
ii  libc6-dev-armel-cross   2.23-0ubuntu3cro all              GNU C Library: Development Libraries and Header Fil
un  libc6-dev-armel-dcv1    <aucune>         <aucune>         (aucune description n'est disponible)
ii  libc6-dev-armhf-armel-c 2.23-0ubuntu3cro all              Dummy package to get libc6-dev:armhf installed
un  libc6-dev-armhf-armhf-c <aucune>         <aucune>         (aucune description n'est disponible)
ii  libc6-dev-armhf-cross   2.23-0ubuntu3cro all              GNU C Library: Development Libraries and Header Fil
un  libc6-dev-armhf-dcv1    <aucune>         <aucune>         (aucune description n'est disponible)
un  libc6-dev-i386          <aucune>         <aucune>         (aucune description n'est disponible)
ii  libc6-i386              2.23-0ubuntu4    amd64            GNU C Library: 32-bit shared libraries for AMD64
un  libc6-i686              <aucune>         <aucune>         (aucune description n'est disponible)
un  libc6-xen               <aucune>         <aucune>         (aucune description n'est disponible)
un  libc6.1                 <aucune>         <aucune>         (aucune description n'est disponible)
un  libc6.1-dev             <aucune>         <aucune>         (aucune description n'est disponible)
un  libc6.1-dev-armel-cross <aucune>         <aucune>         (aucune description n'est disponible)
un  libc6.1-dev-armhf-cross <aucune>         <aucune>         (aucune description n'est disponible)

libc6-armel-crossを除いて、ほとんどのパッケージはおそらく役に立たないでしょう。実際にはdpkg -L libc6-armel-crossが表示されます/usr/arm-linux-gnueabi/lib/libc.so.6。しかし、libusbとlibusb-devのインストールはまだ失敗し、libphidgetの設定も失敗しました。

答え1

インストールされたライブラリは正確に一致する必要があるため、マルチアーキテクチャは同じディストリビューションを使用している場合にのみ機能します。これがPrecise以外のシステムにPreciseをインストールできない理由ですlibusb。ただし、libc6:armelデフォルトでインストールしたシステムと一致しません。libc6

2つの「クリーン」ソリューションがあるようです。

  • armelまだサポートされているディストリビューションでは、マルチアーキテクチャを使用してください(ダーバン);
  • libusb自分自身を交差させるには、armel次のようにします。armel クロスツールチェーンUbuntuにパッケージされています(他の場所でも見つけることができますlibc6-armel-cross)。

あるいは、ターゲットシステムからターゲットライブラリをコピーし、ビルドがそのライブラリを指すようにすることもできます。システムヘッダーの使用は避けてくださいlibusb(ただし使用しないでくださいlibc6)。

関連情報