Ubuntu 12.04 i386 ana bilgisayarındaki Ubuntu 12.04 armhf mimarisi için uygulamamı nasıl derlerim?


16

Yazdığım büyük bir başvurum var. Aşağıdaki senaryolarda uygulamayı başarıyla derleyebilirim:

  • 12.04 çalıştıran i386 ana bilgisayarı için yerel bir derlemede
  • Ubuntu 12.04 çalıştıran bir PandaBoard'da (bu uzun zaman alıyor)
  • armhf PandaBoard hedefi için Qemu ve ana bilgisayarda bir chroot kullanarak (bu çok uzun zaman alır)

İnşaları zamanında tamamlamak için PandaBoard gibi bir hedef üzerinde çalıştırmak için i386 ana bilgisayarındaki uygulamayı çapraz derlemek istiyorum. Depolarda kol-linux-gnueabihf takım zinciri kullanılarak yapılan girişimler, düzgün çalışmayan ikili dosyalar üretmiştir. Bu aşamada, yazılımı paketlemek gibi bir planım yok.

Başarılı bir çapraz derleme elde etmenin önerilen yolu nedir?


Çapraz derleyici araç zinciri ile çapraz derleme çalışması gerekir, bunun için budur. İkili dosyalar hangi şekilde düzgün çalışmaz?
Gilles 'SO- kötü olmayı bırak'

İkili dosyalarım neredeyse derhal sona erer. strace, libc.so.6'nın olması beklenen yerde olmadığını gösteriyor.
Jonathan Mağarası

Bu bir bağlantı seçeneği ile düzeltilebilir olmalıdır (hangisinin hazırlıksız bilmiyorum). Hedef sistem Ubuntu kullanıyor mu?
Gilles 'SO- kötü olmayı bırak'

Evet hedef ayrıca Ubuntu 12.04 çalıştırıyor. Derleyici ve bağlayıcı için --sysroot seçeneğini kullanmam gerektiğini düşünmüştüm, ancak bu Ubuntu araç zincirinde devre dışı bırakıldı.
Jonathan Cave

12.04 tarihinde sadece benim için çalışıyor. Sadece amd64 üzerinde test ettim ve başarıyla bir armhf sunucusunda üretilen ikili çalıştırdı. Ama kullanışlı bir i386 yapı makinem yok. Hala sorun yaşıyorsanız, ayrıntılandırmanız gerekir. Ldd ne diyor? Sizi sonucunuza götüren sıkıntıdan ne gördünüz? Sorununuzu, açıkça çalışması gereken basit bir test senaryosuna indirgeyip azaltamayacağınıza bakın ve attığınız adımları ayrıntılı olarak sunun.
Robie Basak

Yanıtlar:


6

https://wiki.linaro.org/Platform/DevPlatform/CrossCompile/UsingMultiArch

https://wiki.ubuntu.com/MultiarchCross

Ubuntu'nun bir çapraz aracı zinciri var, apt-get install gcc-arm-linux-gnueabihfancak yeni nesil araç zinciri üzerinde çalışmak burada tartışılıyor: http://gsoc.sitedethib.com/posts/apt-get_install_gcc-4.7-arm-linux-gnueabihf/

Bu noktada gerekli olan birkaç geçici çözüm vardır. Örneğin, dolaylı bağlantı (linaro wiki sayfasında kapsanmıştır) kullanıyorsanız, derledikten hemen sonra yabancı ikili dosyaları çalıştırmaktan da kaçınmalısınız.

Ayrıca, en çok autotools ile olgun.

Oldukça hızlı bir şekilde çapraz derleme paketi aldım.

apt-get build-dep -aarmhf foo-pkg
apt-get source foo-pkg
cd foo-pkg-*
dpkg-buildpackage -aarmhf

3
Lütfen bu adımların ne yaptığını ve -aarmhf anahtarının ne olduğunu açıklayın. Birçok kullanıcıya tanıdık gelmez, bu da kullanılabilir bir yanıt almak için daha derin bir başka katman aramasını gerektirir. Teşekkürler.
garyp
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.