Keilde kendi kutuphanemi olusturmak istiyorum.
Fakat kodlari derleyip kutuphane olusturmayi beceremedim.
Mesela adi Math.lib olan ve icinde
int Topla(int a, int b)
{
return(a+b)
}
seklinde fonksiyon barindiran kutuphaneyi nasil olusturabilirim?
http://www.keil.com/support/docs/2113.htm
Önce bir proje oluşturun
Bir C dosyası oluşturup projeye dahil edin
fonksiyonlarınızı yazıp proje option seçeneklerinden output a gelin ve "create lib" seçeneği ile derleyin
Artık oluşan lib uzantılı dosyayı başka projelerde kullanabiliriz
Yeni projede lib uzantılı dosyayı projeye dahil etmek gerek
kullanılan fonksiyonların prototipini tanımlamayı unutmayalım
Tesekkurler istedigim gibi oldu.
Peki kutuphane fonksiyonlarini debug etmek istiyorum. Bunun icin bir tane proje dosyasi olusturdum ve kutuphane fonksiyonlarini cagiriyorum.
Hem bu programi hem de kutuphane fonksiyonlarini ayni keil programinda debug edebilirmiyim?
Aralarındaki farkı bilmediğimden soruyorum.
.lib uzantılı library oluşturacağımıza, .h ve .c uzantılı libraryler yazsak ? Artılarımız, eksilerimiz neler olur ?
Birisinde kaynak kodlar acik, digerinde degil
Birisinde kodlarin tamami derlenir digerinde sadece kutuphane disinda kalan kodlar
Birinde fonksiyonlari farkinda olmadan bozabilirsin (bir karakter siler yada ekler) digerinde bozamazsin.
Alıntı yapılan: bunalmis - 20 Ocak 2012, 00:56:17
Birisinde kaynak kodlar acik, digerinde değil
Birisinde kodlarin tamami derlenir digerinde sadece kutuphane disinda kalan kodlar
Birinde fonksiyonlari farkinda olmadan bozabilirsin (bir karakter siler yada ekler) digerinde bozamazsin.
O zaman,
Minik ayrıntıları çok seven kocaman bir library yapmışsak,
Bu library i ticari yada bedavadan dağıtıyorsak,
Üzerinde geliştirilme yapılmasını istemiyorsak,
.lib şeklinde libraryler oluşturabiliriz. Mesela aklıma ilk gelen Fat16 veya 32 için yazılmış bir library bu konuya çok iyi bir örnek teşkil ediyor diye düşünüyorum.
Arada ben de bir soru sorayım. Bu yöntemin aynısını MBLAB-X / Hi-Tech C Compiler da yapabilmek te mümkün mü? Deneyen var mı?
Alıntı yapılan: alone_lover - 20 Ocak 2012, 09:18:38
Arada ben de bir soru sorayım. Bu yöntemin aynısını MBLAB-X / Hi-Tech C Compiler da yapabilmek te mümkün mü? Deneyen var mı?
evet
Alıntı yapılan: mufitsozen - 20 Ocak 2012, 12:39:45
evet
güzel :)
biraz beleşcilik yapayım demiştim abi, ama sen de hiç izin vermiyon. ;D
http://microchip.wikidot.com/mplab:how-to-create-a-library-project
Akşam bi deneyeceğim... Fakat takıldığım yer olursa sorarım bu sefer :)
Alıntı yapılan: alone_lover - 20 Ocak 2012, 15:32:10
güzel :)
biraz beleşcilik yapayım demiştim abi, ama sen de hiç izin vermiyon. ;D
http://microchip.wikidot.com/mplab:how-to-create-a-library-project
Akşam bi deneyeceğim... Fakat takıldığım yer olursa sorarım bu sefer :)
benden kacmaz! kargadan baska gus tanimam! ::)
Aslinda Keil ile derlediginiz bir libraryi Hitech-c ile kullanabilmeniz bile mumkun olmali (hatta library'e eklediginiz bir modulu keil c oburunu hitech C oburunu GNU filan ile bile yapabilmeniz lazim. tabiiki C RTL kullanimina dikkat ederek, yada kendi thread safe embedded C RTL kullanmak gerekebilir filan.) vs vs
Debug sırasında lib dosyası c dosyası olarak açılıp debug edilen satırlar gösterimektedir.
Lib dosyası oluşturduğunuzda derlenmiş opcode elde edersiniz. Yani artık bu libraryden ASM' den gayrı geri dönüş olmaz. Zaten derleyici de başlık dosyasnızda (*.h) belirtilen bilgileri library dosyasından kopyalayıp getirir. Sonrasında sizin kodunuza hex olarak yapıştırıp gerekli giriş çıkış değişken adreslerini atayarak kodun bütünleşmesini temin eder. Tabi bu demek değildir ki LIB oluşturduğunuzda kodunuz güvendedir. Neyi nasıl yapacağını ve tekniğini bilen kişi oturur kütüphanenizde istediği fonksiyonu tespit, analiz, disasm, decompile eder. Gerekli tüm bilgiyi topladıktan sonra da eğer başka bir MCU için gerekliyse (mecburen) yeniden yazar. Yada o fonksiyonu sizin librarynizden söküp kendi librarysine aktarır ve ardına kendi fonksiyonlarını ekler.
Alıntı yapılan: haydarpasamikro - 20 Ocak 2012, 22:27:04
Debug sırasında lib dosyası c dosyası olarak açılıp debug edilen satırlar gösterimektedir.
Aslında C dosyası olarak açılmaz. Açılması mümkün değildir zaten. Eğer kaynak kodu mevcutsa gösterilir. Yoksa Lib dosyaların yapısı gereği ve genelde pekçok programcının pek ilgilenmediği Debug Bilgisi okunur. Bu ASM satırlarında bize sanki C' ye dönüştürülmüş gibi bir izlenim bırakabilir ancak öyle bir durum değildir. Sadece yorum (comment) olarak bize gösterilir. Bazı Lib formatları (nadir de olsa) kodun her anlamlı bloğu için bu tip yorum bilgisi tutabilir. Buda bize C kodu hakkında daha çok bilgi veren bir durumdur.