[Gelistirici] 64bit temel toolchain değişiklikleri

Onur Küçük onur at pardus.org.tr
25 Şub 2010 Per 23:31:34 EET


 Merhaba,

 64bit Corporate2 sistem toolchain de bazı değişiklikler yaptım. Klasik
tavuk yumurta ilişkisi, özlemişim :P

 - Artık host adımız x86_64-unknown-linux-gnu değil x86_64-pc-linux-gnu
 - Derleme sistemi ve glibc den lib64 dizinlerini (hem linklenme hem de
yükleme aşamaları için) dizinlerini attım, artık bu sistemle derlenen
uygulamalar (configure vb. yerlerde saçma ayarları yoksa) lib64
dizinleri içinde bir şey aramayacaklar
 - 64bit derlenme sorunlarını elden geçirdim
 - "-m32" kullanabilmemiz için de altyapısal değişiklikleri hazırladım

 Yeni paketler bootstrap edildiği için sadece komit et / derle yöntemi
ile oluşturulamıyorlar, derlenmiş hallerini [1] adresine koydum. Bu
paketleri sisteminize glibc ve libgcc (libgcc -> libstdc++ -> lzma
bağlantısı yüzünden) hariç direkt "pisi it" ile kurabilirsiniz. 

 Glibc ve libgcc yi kurabilmek için kurulumu yapmadan önce paketleri
unpisi ile sistemde bir dizine açın. Daha sonra

 - libgcc yi pisi it ile kurun, pisi artık çalışmıyor. önceden unpisi
ile açtığınız libgcc nin libstdc* dosyalarını /usr/lib  altına
kopyalayınca sorun düzelecek. İşlem bitince tekrar pisi it ile libgcc
paketini kurun, sorun oluşmadan devam ediyor olmalı

 - aynı şekilde glibc yi sisteme kurun, bu sefer sistemde ls dahil
shared derlenmiş hiç bir komut çalışmıyor olacak. Yine daha önceden
unpisi ile açtığınız glibc dosyalarından /lib64 altında olanları
sistemde /lib içine kopyalayın (aslında birbirine symlink oldukları
için /lib64 e kopyalasanız da olur), alt dizinler şimdilik gerekli
değil, önemli olan libc.so ve ld...so . Bu işlemi yapmak için statik
olarak derlenmiş bir komuta ihtiyacınız var. Ben initramfs için
kullandığımız busybox ı kullanıyorum. 

 /lib/initramfs/busybox cp -f /tmp/sil/glibc/lib64/*  /lib/

 İstenirse çalışan / kurulan CD ile de yapılabilir.

 ls komutunun çalıştığını teyid edince glibc paketini de tekrar pisi it
ile kurun. 

 /etc/pisi/pisi.conf da host ayarındaki unknown u pc olarak değiştirin.

 Tüm paketler kurulduktan sonra sistem artık hazır. Derlenen paketlerin
çoğunda ld ve libc dizinleri statik olarak gömülü olduğu için hepsinin
tekrar derlenmesi gerekiyor.

 64bit farmında bu değişiklikleri yaptıktan sonra binutils, gcc ve
glibc yi bu sıra derleyip buildno vs. si düzgün paketler oluşturup yeni
oluşan paketleri sisteme pisi  it ile kurarak farmı kırmadan yola devam
edebiliriz. lib64 dizinine dosya koyan paketleri düzeltip (pek fazla
kalmamış görünüyor) daha sonra önce system.devel, sonra system.base i,
sonra da kalan tüm paketleri tekrar derletip bu yeni yapıya geçebiliriz.

 Gcc ve glibc kırıldığı için sadece pisi up ile bu sisteme geçmek
mümkün olmayacak, bunun için bir hack koymak da istemiyorum,
isteyenler yukarıdaki işlemi yaptıktan sonra pisi up ile yoluna devam
etsin diye düşünüyorum. Paketler hazır olduktan sonra tekrar bir iso
oluşturup onunla devam edebiliriz.

 64bit altında aynı anda 32bit kod derleyebilmek için de bakındım,
fırsat bulduğumda ona da bakacağım (kitaplıkları lib32 prefix i
alacak), geçiş hamlesini yapmak için bunu beklemek iyi olabilir, o
arada corporate2/patches ı temizleyebiliriz. Yine de bunu yapsak da tüm
sistemin 32bit kitaplıklarını hazırlamayalım derim.

 afiyet olsun,


[1] http://cekirdek.pardus.org.tr/~onur/64bit/host.lib64.fixed/

-- 
 Onur Küçük                                      Knowledge speaks,
 <onur.--.-.pardus.org.tr>                       but wisdom listens




Gelistirici mesaj listesiyle ilgili daha fazla bilgi