Linux Üzerinde gcc Kullanımı, C kodlarını Derlemek ve Çalıştırmak
Öncelikle
masaüstümde gedit aplikasyonuyla .c uzantılı merhaba.c
dosyasını oluşturuyorum.
Daha
sonra bu komutu derlemek için gcc
kullanıyorum. Eğer Yüklü değilse
terminalde yum install gcc komutunu
kullanarak bu paketi yükleyebiliriz. Yazmış olduğum bu C
kodunu çalıştırmak için gcc
merhaba.c -o merhaba komutunu ve ./merhaba komutunu çalıştırıyorum. Bu
işlemlerin çıktısını alttaki ekran görüntüsünde görebiliriz.
Şimdi
asıl amacımız olan strace komutunu çalıştırıp, çıktılarını göreceğiz. Strace komutu, linux ortamında API çağrılarını gösterebilen bir araçtır.
Özellikle hangi çağrı ne zaman yapılmış gibi bilgilerle uygulama profiling
edilmiş olur. Profiling ile maksat, hangi kod ne kadar kullanılmış ne kadar
zamana mal olmuş gibi optimizasyon ile ilgili bilgileri elde etmektir.
- Execve: Programı çalıştırmıştır. Parametre olarak dosya adı verilir. Execve başarılı bir şekilde çalıştığı için bir şey dönmemiştir eğer bir hata oluşsaydı o zaman -1 dönecekti
- Mmap: Çağrılan işlemin sanal adres alanı için bir mapping yaratır
- Access: Çağrılan process’in dosyanın path ismine erişip eremedğini kontrol eder.
- Open: Dosyanın yapılacağı işe göre negatif olmayan bir tam sayı döner.
- Fstat: Dosya hakkında bilgi döner.
- Close: Dosya tanımlayıcısını kapatır.
- Read: File descriptor’dan itibaren olan byte’ların okunması işlemini yapar
- Mprotect: Çağrılan işlemin hafiza sayfası için alanındaki korumayı değiştirir.
- Munmap: Belirli adres alanları içerisindeki mappingleri siler böylece geçersiz hale gelen bellek adreslerinin sonraki referanslar için kullanılabilmesini sağlar.
- Write: Bufferdan file descriptor’a kadar olan byteları yazar.
- Exit_group: exit(2) ile aynıdır tek farkı sadece bir thread’i çağırma bütün çağrılan işleim bütün thread grubunu çağırır.
1. Sorunun
Cevabı:
IBM
Power 7 işlemcili bir sunucu üzerinde RHEL 6 çalışıyor. Buradaki xeyes
uygulamasını kendi PC’mde sanal ortamda çalışan RHEL 6 sunucuya atarsam bu
uygulama düzgün çalışabilir. Burada baktığımız şey işlemci farklılığı değil.
Eğer işletim sistemleri aynı ise bu uygulama çalışabilir.