Linux GCC etiketine sahip kayıtlar gösteriliyor. Tüm kayıtları göster
Linux GCC etiketine sahip kayıtlar gösteriliyor. Tüm kayıtları göster

Linux'te execl ile dosya çalıştırma


execl fonksiyonunu çağırdığımız anda parametre olarak verdiğimiz çalıştırılabilir dosya execute edilir ve program bu yeni process'e dönüşür. 


Aşağıda programda process fork edilip child process'i /bin/ls process'ine dönüştürülmektedir.


Çıktılardan istenilen sonuçların elde edildiği görülmektedir.



Linux'te child process oluşturma


Linux'te child process oluşturmak için ilk aşama fork fonksiyonunun çağrılmasıdır. 


 fork çağrıldığı anda processin bir kopyasını oluşturur. Genelde fork exec'le beraber kullanılarak ikinci bir process oluşturmak için kullanılır. Linux sistemlerde process oluşturmanın yolu fork ve ardından exec fonksiyonunu çağırmaktır. fork fonksiyonunun geri dönüş değeri 0'a eşitse child process anlamına gelmektedir. child process'in  bir process id'si bulunmaktadır ve bu process id'si fork fonksiyonunun geri dönüş değeri olan değer değildir.  Bu ikisi karıştırılmamalıdır.



Yukarıdaki basit kodun çıktısı aşağıdaki gibidir. Görüleceği üzere child process'in parent id'si fork işlemi yapılan processin id'si fork işlemi yapılan process'in id'si de bash programının process id'sine eşit olduğu ps -aux ile net bir şekilde incelenebilir.


Linux'te C için statik kütüphane oluşturma ve kullanma


Kütüphane genel olarak bir proje grubunun dış dünyada (diğer yazılım proje gruplarının vb.) kullanılması amacıyla oluşturdukları dosyalar için kullanılan kavramdır. Bu kütüphaneler içeriğinde hangi fonksiyonları kullanabileceğimizi belirten yani dış dünyaya sundukları interface' leri bildiren bir header dosyası ve bu interface' lerin nasıl kullanılacağını anlatan bir dokümantasyon ile beraber verilir. Statik ve dinamik olarak iki farklı kütüphane biçimi bulunmaktadır. Statik kütüphane kullanmanın avantajı programınızı tek bir çalıştırılabilir dosya şeklinde dağıtmanızı sağlamasıdır.Kütüphanenin tamamı çalıştırılabilir dosyanın içine gömülmektedir.(stand-alone executable) Diğer taraftan kütüphanenin tamamının programa eklenmesi hafıza israfına yol açmaktadır. Ayrıca statik kütüphanelerin güncellenmesi de pek kolay değildir. Bunun için hem kütüphanenin hem de bunu kullanan programın tekrardan derlenmesi gerekmektedir.

1.Adım:

ar rc <libname.a> <obj1.o> <obj2.o> ...


ar arşiv oluşturma - düzenleme için kullanılan bir komuttur.

2. Adım:

ranlib <libname.a> ile oluşturduğumuz kütüphanenin indekslememizi sağlar. Peki bu ne işe yarar?

kütüphane içinde index oluşturarak erişim hızını arttırma amaçlı kullanılmaktadır.




3. Adım: Kullanma


  •  1. derleme işleminde libmath.h dosyasını bulamadığını söylüyor ki bu konuda haklı standart include dosyalarına baktığı yerlerde bulunmamaktadır. Bu nedenle bakması gereken yeri -I parametresi ile söylememiz gerekmektedir.
  • 2. ve 3. derleme I ile verdik fakat -L ile kütüphaneleri link ederken standart baktığı yerler dışında -L ile verdiğimiz yol ifadesinde belirtilen yere de bakmasını söyledik fakat derlemede gene link hatasıyla karşılaştık. Çünkü kullandığımız kütüphaneyi link etmesi gerektiğini söylemedik. Bunun için -l parametresi ile libmath kütüphanesini de link ederken kullanmasını söylememiz gerekmektedir. -l' ile parametre verirken libmath başındaki lib kelimesini yazmadığımız dikkatinizden kaçmasın. 
  • 4. derlemede sonunda başarılı bir şekilde derleme ve çalıştırma gerçekleştirilmiştir.








Linux'te Komut Satırından C Derleme & Çalıştırma

07:58 ,

Linux ‘te C ile çalışırken Kate Text Editörünü kullanmak geliştirme işlemlerini kolaylaştıracaktır. Kurulum yaparken komut satırını da plug-in olarak kurmak mantıklı olacaltır.
image
Ardından sürekli derleyip çalıştırmak yerine bu işlemi bash script ile halletmek pratik olacaktır.
image
Script ‘i çalıştırırken değişken olarak, yazdığımız C kodunun adını uzantısız vermemiz yeterli olacaktır.

image