Làm cách nào để tôi biên dịch chéo ứng dụng của mình cho kiến ​​trúc armhf Ubuntu 12.04 trên máy chủ Ubuntu 12.04 i386?


16

Tôi có một ứng dụng lớn tôi đã viết. Tôi có thể biên dịch thành công ứng dụng trong các tình huống sau:

  • trong một trình biên dịch riêng cho máy chủ i386 chạy Ubuntu 12.04
  • tự nhiên trên PandaBoard chạy Ubuntu 12.04 (việc này mất nhiều thời gian)
  • sử dụng Qemu và một chroot trên PC chủ cho mục tiêu PandaBoard của armhf (việc này mất một thời gian rất dài)

Tôi muốn biên dịch chéo ứng dụng trên máy chủ i386 để chạy trên một mục tiêu như PandaBoard để hoàn thành các bản dựng một cách kịp thời. Cho đến nay các nỗ lực được thực hiện bằng cách sử dụng chuỗi công cụ arm-linux-gnuispihf trong kho lưu trữ đã tạo ra các nhị phân không chạy chính xác. Ở giai đoạn này, tôi không có kế hoạch đóng gói phần mềm.

Cách được đề xuất để đạt được một biên dịch chéo thành công là gì?


Biên dịch chéo với chuỗi công cụ biên dịch chéo sẽ hoạt động, đó là những gì nó làm. Làm thế nào để các nhị phân không chạy chính xác?
Gilles 'SO- ngừng trở nên xấu xa'

Nhị phân của tôi chấm dứt gần như ngay lập tức. strace dường như chỉ ra rằng libc.so.6 không phải là nơi nó được mong đợi.
Hang Jonathan

Điều đó có thể được sửa chữa bằng một tùy chọn liên kết (tôi không biết nên chọn cái nào). Là hệ thống mục tiêu chạy Ubuntu?
Gilles 'SO- ngừng trở nên xấu xa'

Có mục tiêu cũng đang chạy Ubuntu 12.04. Tôi đã nghĩ rằng có lẽ tôi cần sử dụng tùy chọn --sysroot cho trình biên dịch và trình liên kết, nhưng điều này bị vô hiệu hóa trong chuỗi công cụ Ubuntu.
Hang Jonathan

Chuỗi công cụ chỉ hoạt động với tôi, vào ngày 12.04. Tôi vừa mới thử nghiệm nó trên amd64 và đã chạy thành công tệp nhị phân được tạo trên máy chủ armhf. Nhưng tôi không có máy dựng i386 tiện dụng. Nếu bạn vẫn gặp sự cố, bạn sẽ cần giải thích. Ldd nói gì? Bạn đã thấy gì từ bước đi đưa bạn đến kết luận của bạn? Xem nếu bạn có thể giảm vấn đề của mình xuống một trường hợp thử nghiệm đơn giản sẽ hoạt động rõ ràng và trình bày các bước bạn đang thực hiện chi tiết.
Robie Basak

Câu trả lời:


6

https://wiki.linaro.org/Plevelop/DevPl platform / CrossCompile / UsingMultiArch

https://wiki.ubfox.com/MultiarchCross

Ubuntu có một chuỗi công cụ chéo, apt-get install gcc-arm-linux-gnueabihfnhưng hoạt động trên chuỗi công cụ thế hệ tiếp theo sẽ được thảo luận tại đây: http://gsoc.sitedethib.com/posts/apt-get_install_gcc-4.7-arm-linux-gnuablesihf/

Có một số cách giải quyết cần thiết vào thời điểm này. Ví dụ: nếu bạn sử dụng liên kết gián tiếp (được trình bày trong trang wiki linaro.) Bạn cũng nên tránh chạy nhị phân nước ngoài ngay sau khi biên dịch chúng.

Ngoài ra, nó thực sự trưởng thành nhất với autotools.

Tôi đã có gói của tôi để biên dịch chéo khá nhanh.

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

3
Vui lòng giải thích những bước này làm gì và công tắc -aarmhf là gì. Chúng không quen thuộc với nhiều người dùng, yêu cầu họ tìm kiếm một lớp khác sâu hơn để có câu trả lời có thể sử dụng được. Cảm ơn.
garyp
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.