Thread overview
gtkd derleme seçenekleri ile ilgili sorucuklar
Jun 05, 2020
cos00kun
Jun 06, 2020
cos00kun
June 05, 2020

Ali hocam tekrar selamlar..
şimdi D ile öğrenmeye devam ederken bir yandan GtkD ilede ufaktan dirsek temasındayım.. Sağolsun bu site sayesinde kurulum zorluğu yaşamadan problemsiz çalışabiliyorum. ancak burada birkaç derleme seçeneği ve linux ortamındaki çalışma durumlarıyla ilgili sorularım olacak
sitemiz şu: https://gtkdcoding.com/2019/03/31/x0002-gtkd-in-a-linux-environment.html
her nekadar bash alias ile derleme işlerini kısacık yazım haline getirsem bile öğrenmek adına şunları öğrenmek istiyorum (bu arada sitedeki yöntemde herhangi bir bash ile yapın diyor ama kalıcı olması için ben '.bashrc 'dosyasına kaydederek yaptım böylece bir gtkd projesini nerden derlersem derleyeyim onlarca derleyici seçenekleri yerine nerdeyse 2 komutla derlemeyi başarıyorum)

normal şartlarda site bize orada diyorki bir gtkd projesini derlemek çin şunları yaz komut satırına;
'dmd -de -w -m64 -I/usr/include/dmd/gtkd3 -L-L/usr/lib/x86_64-linux-gnu -L-L/usr/lib/i386-linux-gnu -L-l:libgtkd-3.so -L-l:libdl.so.2 -L--no-warn-search-mismatch -defaultlib=libphobos2.so <derlenecek_kod_dosyanız>.d -of<oluşacak_dosya_ismi>'
vay anam vay :-D

şimdi sorum şu; Ali hocam yazdıkarınızda kütüphane eklemelerinde '-L-l:libgtkd-3.so ' yi öğrenmiştim. '-L' ile bağlayıcıya sonraki yazılanları gönder diyorduk ve buradaki '-l' ile de bağlayıcı kardeş ben kütüphaneyim uzantıma bakma bağla beni diyorduk. Şimdi buradaki bazı bölümlerde '-L-L/usr/lib/x86_64-linux-gnu' iki adet '-L-L 'var. bu ne demektir ?

yukarıdaki soruya bağlı olarak 'L-l:libgtkd-3.so' da kullanılan ':' (iki nokta üstüste ne ifade ediyor)

Bir diğer sorum yine yukardaki derleme satırlarında '-I/usr/include/dmd/gtkd3' burada '-I 'kullanılmış yani bu da şu demek; Ey derleyici kodumuzdaki import yazan satırlar için bu klasöre bak ve derleme satırında bana iş çıkarma ve sen otomatik ekle! (sanırım :scared: ) burada '-L-l 'kullanılmamasının sebebi bu klasörde kütüphane dosyaları dışında *.d dosyaları veya *.d ilintilerinin bulunması mıdır ?

Yine başka bir soru; Sitede Ron Tarrant abimiz şöyle bir şeyler yazmış; yukarıda uzun derleme seçenekleri yerine şunuda kullanabilirsiniz arkadaşlar..
'dmd -de -w -m64 pkg-config --cflags --libs gtkd-3 <derlenecek_kod_dosyanız>.d -of<oluşacak_dosya_ismi>'
işte tam bu noktada benim sorum şu bu seçenekler nasıl oluyorda yukarıdaki uzun derleme satırları ile aynı işi yapıyor ? 'pkg-config ' '--cflag' '--lis' bunlar tam olarak ne ifade ediyor ?

teşekkürler

--
[ Bu gönderi, http://ddili.org/forum'dan dönüştürülmüştür. ]

June 06, 2020

'Teşekkürler' ;-)
Anlaşıldı hepsi Ali hocam.. :-)

--
[ Bu gönderi, http://ddili.org/forum'dan dönüştürülmüştür. ]

June 06, 2020

Alıntı (cos00kun):

>

'.bashrc '

Açık yeşil kullanmışsın ama ne yazık ki o fontu değiştirmediğinden daha sonra yazdıklarının "küçük L" mi yoksa "büyük i" mi oldukları zor anlaşılıyor. Onun için ben "M (Sabit genişlikli yazı)" diye belirtilen seçeneği kullanıyorum. :)

Alıntı:

>

'-l' ile de bağlayıcı kardeş ben kütüphaneyim uzantıma bakma bağla beni diyorduk

Biraz daha doğru olarak: '-lfoo' dendiğinde ismini libfoo.a veya libfoo.so diye kendisi kurar. Buradaki gibi libgtkd-3.so yazılmışsa tam dosya ismini biz belirleriz.

Alıntı:

>

iki adet '-L-L 'var

Birinci -L dmd'ye verilen seçenek. dmd geri kalanını bağlayıcıya geçiriyor: '-L/usr/lib/i386-linux-gnu'. Bağlayıcı seçeneği olan -L "kütüphane dosyalarını ararken o klasöre de bak" anlamına geliyor.

Alıntı:

>

iki nokta üstüste ne ifade ediyor

Bilmiyorum. Etkisiz olduğunu düşünüyorum. '-l''den sonra "lib" gelince okunma güçlüğü olmasın diye tercih etmiş olabilir.

Alıntı:

>

Ey derleyici kodumuzdaki import yazan satırlar için bu klasöre bak ve derleme satırında bana iş çıkarma ve sen otomatik ekle!

'-I', "import ettiğimiz" modüllerin nerede olduğunu bildirir. Program oluşurken yine de dmd satırına örneğin foo.d yazmak gerekir.

"Eklediğim bütün modülleri programa komut satırında yazmışım gibi kabul et" demek için '-i' kullanılıyor. Öyle yapınca yalnızca kaynak kod derlensin diye 'import foo;' yazıyoruz ama ayrıca komut satırına foo.d yazmıyoruz.

Alıntı:

>

'dmd -de -w -m64 pkg-config --cflags --libs gtkd-3 <derlenecek_kod_dosyanız>.d -of<oluşacak_dosya_ismi>'

Linux terminallerinde ters bölü tırnak işareti arasına yazılanlar bağımsızca işletilen bir komutu temsil eder. O komut kendi başına işletilir, onun çıktısına yazdığı karakterler ters bölü ile belirlenmiş olan yere yazılmış olur. Yani, "şunları işlet ve sonucunu buraya yaz" gibi...

Örneğin, bir tarafta çalışmakta olan 'deneme' adındaki programa sonlanma mesajı göndermek (kill) için onun çalışan program numarasını (process id) kullanabiliriz. Bir programın numarası 'pidof' ile bulunur. Şu komutlar çalışmakta olan deneme programının numarasını öğreniyor sonra onu sonlandırıyor:
'$ pidof deneme
7501 <-- pidof kendi çıkışına yazdı
$ kill 7501 <-- ben elle yazdım
'

Onun yerine, pidof'un çıkışına yazdığını kill'e doğrudan gönderebiliriz:
'$ kill pidof deneme'

Yani, bu durumda pkg-config programının çıkışına bakman gerekiyor... ;)

Ali

--
[ Bu gönderi, http://ddili.org/forum'dan dönüştürülmüştür. ]