kurkos.sh 2.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566
  1. # Doğruluk Testleri
  2. #############################
  3. # aşağıdaki komutla artık derlenen uygulamaların doğru yere linklendiğine emin oluruz.
  4. echo 'int main(){}' > dummy.c
  5. cc dummy.c -v -Wl,--verbose &> dummy.log
  6. readelf -l a.out | grep ': /lib'
  7. # çıktı:
  8. # [Requesting program interpreter: /lib64/ld-linux-x86-64.so.2]
  9. # 32bit test için çıktı -> /lib/ld-linux.so.2. olmalı
  10. #############################
  11. # Doğru başlangıç dosyalarını kurduğumuzdan aşağıdaki komutla emin oluruz.
  12. grep -o '/usr/lib.*/crt[1in].*succeeded' dummy.log
  13. # çıktı:
  14. # /usr/lib/gcc/x86_64-pc-linux-gnu/9.1.0/../../../../lib/crt1.o succeeded
  15. # /usr/lib/gcc/x86_64-pc-linux-gnu/9.1.0/../../../../lib/crti.o succeeded
  16. # /usr/lib/gcc/x86_64-pc-linux-gnu/9.1.0/../../../../lib/crtn.o succeeded
  17. #############################
  18. # Derleyicinin doğru üstbaşlık dosyalarına baktığını(headers kontrol)
  19. # komutu ile kontrol ederiz.
  20. grep -B4 '^ /usr/include' dummy.log
  21. # çıktı:
  22. # include <...> search starts here:
  23. # /usr/lib/gcc/x86_64-pc-linux-gnu/9.1.0/include
  24. # /usr/local/include
  25. # /usr/lib/gcc/x86_64-pc-linux-gnu/9.1.0/include-fixed
  26. # /usr/include
  27. #############################
  28. # Linkerin doğru yolları araştırdığına da emin oluruz.
  29. grep 'SEARCH.*/usr/lib' dummy.log |sed 's|; |\n|g'
  30. # çıktı:
  31. # SEARCH_DIR("/usr/x86_64-pc-linux-gnu/lib64")
  32. # SEARCH_DIR("/usr/local/lib64")
  33. # SEARCH_DIR("/lib64")
  34. # SEARCH_DIR("/usr/lib64")
  35. # SEARCH_DIR("/usr/x86_64-pc-linux-gnu/lib")
  36. # SEARCH_DIR("/usr/local/lib")
  37. # SEARCH_DIR("/lib")
  38. # SEARCH_DIR("/usr/lib");
  39. #############################
  40. # Doğru libc kütüphanesi kullandığımızı kontrol için
  41. grep "/lib.*/libc.so.6 " dummy.log
  42. # çıktı:
  43. # attempt to open /usr/lib/libc.so.6 succeeded
  44. #############################
  45. # Son olarak gcc nin doğru dinamik linkerini kullandığına emin oluruz.
  46. grep found dummy.log
  47. # çıktı:
  48. # found ld-linux-x86-64.so.2 at /usr/lib/ld-linux-x86-64.so.2
  49. #############################
  50. # temizlik
  51. rm -v dummy.c a.out dummy.log