Dinamik libraryler hakkında kafamı karıştıran bi kaç olay var.
1. sorum :Şimdi X86 mimarisi için derlenmiş örneğin libx.so adında bi dinamik kütüphane olsun.Bir de arm mimarisi için derleyeceğim bi program olsun ve bu program libx.so kütüphanesine ihtiyaç duysun.Cross compiler'ım bu x86 için derlenmiş libx.so kütüphanesini derleme esnasında kullanabilir mi yoksa bu kütüphane illa arm mimarisi uygun derlenmiş olması mı gerekiyo.
2.sorum da dinamik kütüphaneler nasıl oluyo da bir çok program tarafından kullanılabiliyo.Dinamik kütüphaneler üst seviyeli diller ile yazılmış kodların makina koduna dönüştürülmüş hali mi?
Arkadaşlar bu sorum hakkında bi fikri olan yok mu?
Evet, gereksinim duyulacak kütüphanelerin de ARM için derlenmesi gerekiyor. Bazı kütüphaneleri derleyici ile birlikte önceden elde etmiş olabilirsin. Mesela Sourcery G++'nın içinden önceden derlenmiş bazı .so dosyaları çıkıyor, ama muhtemelen işlemciye göre optimize edilmemişlerdir.
Derleyici işlerinden çok anlamam, ama bildiğim kadarıyla dinamik kütüphaneler çalışırılabilir kodlar. Ancak çalıştırılırken ana programa link edilmeleri gerekiyor. Bunu da yapan ayrı bir program var, linker denen. Linux'ta bu programın kendisi de bir .so dosyası gbi gözüküyor: ld-linux.so.2 gibi.
Ben de henüz okumadım ama burada (http://tldp.org/HOWTO/Program-Library-HOWTO/shared-libraries.html) ayrıntılı bilgi var gibi.
Peki Mesela opencv yi arm için derlerken derleyici bazı kütüphanelere ihtiyaç duyuyo. Bu kütüphaneleri x86'lı bi makinada nerden bulabilirim.
Hocam zaten öyle yapıyorum da. Mesela sudo apt-get install ile istediğimiz kütüphaneyi linux depolarından indirip kurabiliyoruz. Aynen bu şekilde indirip arm'a göre derlemenin yol yok mudur?Sanki bir ara biyerlerde böyle bi komut görmüştüm o yüzden soruyorum.
apt-get install programın derlenmiş ve çalıştırılabilir halini indiriyor, yani kaynak kodu indirip kendisi derlemiyor. Aynı imkanı bazı Linux dağıtımlarının ARM versiyonlarında bulmak mümkün. Debian, Ubuntu, Arch gibi dağıtımların BeagleBoard, Raspberry Pi gibi popüler platformlar için olan versiyonları ve paket depoları bulunuyor. Bu şekilde karşı derleme yapmadan kütüphaneleri doğrudan kurabilirsin. Ångström da pek çok platformu destekleyen bir dağıtım, bunun için de ARM paket depoları var.