Bagaimana cara cross compile untuk ARM?


41

Bagaimana cara mengatur GCC untuk kompilasi silang untuk prosesor ARM? Tuan rumah akan menggunakan x86_64 (AMD64 - Ubuntu 12.04) dan targetnya adalah ARM (Raspberry Pi dan Pandaboard - akan melakukan kompilasi terpisah untuk masing-masing)?

Jawaban:


44

Instal gcc-arm-linux-gnueabidan binutils-arm-linux-gnueabipaket, dan kemudian gunakan saja arm-linux-gnueabi-gccbukan gccuntuk kompilasi.

Anda harus berhati-hati tentang rasa linux dan binutils yang Anda miliki di sistem target Anda. Hal-hal terbaru adalah hardfloat, dalam hal ini yang akan Anda lakukan:

sudo apt-get install gcc-arm-linux-gnueabihf

Ini membawa lingkungan kompilasi silang yang lengkap, termasuk binutils.


Di Ubuntu 13.10 Anda mendapatkan gcc-4.7 untuk 'gnueabi' dan gcc-4.8 untuk 'gnueabihf'.
nobar

ketika saya mencoba untuk mengkompilasi saya openssl/ossl_typ.htidak menemukan kesalahan meskipun saya sudah menginstal libssl-dev.
Necktwi

1
Jika Anda mendapatkan kode sumber dari apt-get source, setelah itu apt-get build-depAnda biasanya hanya dapat mengkompilasi dengan dpkg-buildpackage -b -uc -us -rApakah ada cara untuk membangun deb. Ini dengan mudah untuk ARM tanpa mengubah makefile?
Jonathan

@Maratyszcza, bisakah Anda lebih spesifik tentang eksekusi saluran and then just use arm-linux-gnueabi-gcc instead of gcc for compilation? Ketika saya kompilasi saya menggunakan panggilan makeyang, AFAIK, secara alami menunjuk ke /usr/lib/gccatau sesuatu yang dekat dengan itu. Bagaimana saya bisa memanggil arm-linux-gnueabi-gcc secara langsung?
Momergil

9
@MomergilCC=arm-linux-gnueabihf-gcc make ...
Maratyszcza

1

Penyedia gambar disk juga harus menyediakan kompiler silang yang kompatibel

Ini adalah satu-satunya metode yang dapat diandalkan.

Khusus untuk RPI, kompiler silang yang disediakan tersedia di: https://github.com/raspberrypi/tools dan dapat digunakan seperti yang dijelaskan di: https://raspberrypi.stackexchange.com/questions/64273/installing-raspberry- pi-cross-compiler / 83215 # 83215

git clone https://github.com/raspberrypi/tools
export PATH="$(pwd)/tools/arm-bcm2708/gcc-linaro-arm-linux-gnueabihf-raspbian-x64/bin:${PATH}"
printf '#include <stdio.h>\nint main() { puts("hello world"); }\n' > hello_world.c
printf '#include <iostream>\nint main() { std::cout << "hello world" << std::endl; }\n' > hello_world.cpp
arm-linux-gnueabihf-gcc -std=c99 -o hello_world_c hello_world.c
arm-linux-gnueabihf-g++ -std=c++11 -o hello_world_cpp hello_world.cpp

Jika Anda salah memilih kompilator silang, hal berikut ini dapat terjadi:

Alternatif favorit saya adalah membuat gambar Anda sendiri dengan Buildroot: https://stackoverflow.com/questions/47557262/how-to-download-the-torvalds-linux-kernel-master-recompile-it-and-boot-it- wi / 49349237 # 49349237 Ini membangun semuanya dari sumber dan memastikan semuanya kompatibel.

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.