sayfa başı

1 Nisan 2019 Pazartesi

Baştan Sona Embedded Linux Kurulumu -2-

BBB İçin Çapraz Derleyici Kurulumu


Kaynak
Tarih
Versiyon
İşlem
Zafer SATILMIŞ
2019-04-01
0.1
Döküman oluşturuldu













Belli bir süre sonra sadece google sites üzerinden yazılarımı paylaşmayı düşünüyorum. O yüzden buradan da beni takip edebilirsiniz.

1.Amaç
Bu belgede BBB için gerekli çapraz derleyicinin(cross compiler) kurulumu ve kullanımı anlatılacaktır. Uboot, Kernel derlenmesi gibi konularda çapraz derleyicimizden faydalanacağımız için kurulumun doğru ve eksiksiz olması gerekiyor. Kurulum Ubuntu-64bit makine üzerinde gerçekleştirilmiştir.
2.Çapraz Derleyicinin Kurulması
2.1.Çapraz Derleyiciler Hakkında
Kendi işlemci mimarisinden farklı bir işlemci için kod üreten derleyicilere çapraz derleyici(cross compiler) denir. Bizim PC lerimizin mimarisi x86 ve bu yüzden BBB için ARM mimarisinde kod üretmemiz gerekiyor. Özetle çapraz derleyicinin görevi budur.
Çalışabilir bir çıktı alabilmek için derleyicinin yanında linker, debugger ve dump programlarına da ihtiyaç vardır. Bunların hepsini içeren programa ise toolchain denir. Bu sebeple bunları bir takım olarak indirip çalışır hale getirmemiz gerekir.
BBB için (64bit) Linaro GCC toolchain kullanmamız gerekiyor. Güncel sürümünü buradan kendiniz de görebilirsiniz.
2.2. Çapraz Derleyicinin İndirilmesi ve Kurulumu
İlk olarak bu bu sitede belirtilen adresten çapraz  derleyicinin güncel versiyonu indirilir. İndirme işleminden sonra tar dosyası istenilen dizine taşınır ve orada açılır. Ben derleyiciler için /opt/ dizinini kullanıyorum. Yanlışlıkla silinmesi ya da bozulması gibi durumların önüne geçmek için burayı kullanıyorum. /opt/ altında toolchain olarak bir klasör oluşturalım ve kurulumu buranın içinde yapalım. Ayrıca Uçan Linux kitabının yazarı olan Nazım Koç bilgilerini referans aldığım için isterseniz onun yapısı gibi bir yapı da oluşturabilirsiniz. Açıkçası ben o şekilde çalışıyorum.
wget -c https://releases.linaro.org/components/toolchain/binaries/6.4-2018.05/arm-linux-gnueabihf/gcc-linaro-6.4.1-2018.05-x86_64_arm-linux-gnueabihf.tar.xz
Daha sonra tar açmak için aşağıdaki komutu koşalım
tar xf gcc-linaro-6.4.1-2018.05-x86_64_arm-linux-gnueabihf.tar.xz


Oluşacak dosya ismi çok uzun olduğu için arm isimli bir dizin ile link yapalım
ln -s gcc-linaro-arm-linux-gnueabihf-4.8-2014.04_linux arm
Bu adımlar sonrasında toolchain kurulumu tamamlanmış olması lazım. arm/bin dizini altında c ve c++ derleyicilerini görmiş olacaksınız. Bendeki görüntü şu şekilde:
Gerekli kütüphaneleri indirmek için ise aşağıdaki komutları koşmamız yeterli.
            apt-get install gcc-arm-linux-gnueabihf

 
Çapraz Derleyicinin Test Edilmesi
Derleyicimizi kurduk bir sorun olduğunu düşünmüyoruz ama yine de test etmek en güzeli. Ubuntu makinenizde daha öncesinden indirip kullandığınız gcc var ise arm için olan gcc ile karışmasını engellemek gerekiyor. Bunun için ilk olarak aşağıdaki komut koşulur:
export PATH=/opt/gomsis/toolchain/arm/bin:$PATH
which arm-linux-gnueabihf-gcc
Bu iki komuttan sonra aşağıdaki çıktıyı almanız gerekiyor. arm kelimesini görüyorsanız içiniz rahat olsun.
/opt/gomsis/toolchain/arm/bin/arm-linux-gnueabihf-gcc
Şimdi hello world uygulamasını derleme zamanı geldi. Eğer bu uygulamayı derleyip cihazda da çalıştığını görürsek o scp hello.out  root@192.168.7.2:/homezaman derleyici işi tamamdır. Çünkü derlenen uygulama sonrasında oluşacak output dosyası BBB bord için uygun olması gerekiyor.
Hızlıca vi ile açtığımız dosyaya hello world uygulamasını yazalım ve aşağıdaki komutları koşarak çapraz derleyici ile derleyelim. Daha sonrasında beaglebone usb kablosu ile pc bağlayalım. Beaglebone usb ile pc bağlandıktan sonra ssh ile scp komutu ile çıktı dosyamızı beaglebone gönderelim.(benim BBB ip: 192.168.7.2)
#include <stdio.h>
int main()
{
     printf("Hello, World!");
     return 0;
}
/opt/gomsis/toolchain/arm/bin/arm-linux-gnueabihf-gcc -C hello.c -o hello.out
scp hello.out  root@192.168.7.2:/home
Bu iki adım sonrasında BBB konsolundan /home dizininde hello.out dosyasını görmüş olacağız. Bu dosya ubuntu tarafında çapraz derleyici ile oluşturduğumuz çalışabilir dosyadır. (chmod 777 hello.out koşmak gerekebilir.)  Dosyayı çalıştırdığımızda Hello World çıktısını görmemiz lazım.
root@beaglebone:/home# ./hello.out
Hello, World!


                                Zafer SATILMIŞ-01.04.2019
                                    İZMİR

Hiç yorum yok:

Yorum Gönder

Son Ütücü