Thread overview
Derlenen programi baska bir bilgisayarda calistirmak
Mar 24, 2010
Mengu
Mar 24, 2010
Mengu
Mar 24, 2010
Mengu
March 24, 2010

Derlenen dillere yeni oldugum icin (C# ve Java haric) bu konuda bir sorunum var. Mesela Pearl Studio su haliyle kullanilabilir durumda. Linux uzerinde derledim. Cok da guzel calisiyor. Peki ben bu programi bir baska bilgisayarda calistirabilmek icin ne yapmaliyim? D ve gtkD kullaniyorum, bu iki bagimliligi saglamak icin kullaniciya GTK ve DMD mi kurdurmaliyim?

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

March 24, 2010

Alıntı (acehreli):

>

Standart cevap: Eğer program statik olarak bağlandıysa, yani kullandığı kütüphaneler içine gömüldüyse, başka bir şey gerekmez.

Normalde sonu .a ile biten kütüphaneler işlevlerin bir araya gelmelerinden oluşan basit yapılardır. Onlarla bağlandıysa program tek başına çalışır.

.so ile bağlandıysa, çalışma zamanında o .so dosyasını arayacaktır.

Oluşturduğun programın ismi 'deneme' ise, onu 'ldd''ye vererek bağımlı olduğu .so dosyalarını öğrenebilirsin:

ldd deneme
>

Ali

ldd Pearl ciktisi bu oldu:

	linux-gate.so.1 =>  (0x00330000)
	libdl.so.2 => /lib/tls/i686/cmov/libdl.so.2 (0x00969000)
	libpthread.so.0 => /lib/tls/i686/cmov/libpthread.so.0 (0x00f92000)
	libm.so.6 => /lib/tls/i686/cmov/libm.so.6 (0x00601000)
	libc.so.6 => /lib/tls/i686/cmov/libc.so.6 (0x00110000)
	/lib/ld-linux.so.2 (0x00a3c000)

ne yapmam gerekir simdi oyleyse?

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

March 24, 2010

Alıntı (acehreli):

>

C veya C++ olsa, derleme satırında -static yazılırdı. dmd'de de -L-static olmalı. Öyle yapınca bağlayıcıdan şu hatayı alıyorum:

/usr/bin/ld: cannot find -lgcc_s
>

Anlaşılan libgcc_s.a isimli bir dosyayı arıyor. (-l'den sonra gelen ismin başına lib, sonuna da .a ekler.) Belki onu kuran Linux pakedini araştırmak gerek.

Öte yandan, ldd'nin gösterdiği kütüphaneler her Linux sisteminde bulunan dosyalar. Yani belki de bir sorun yoktur. :)

Daha fazla öğrenince yazacağım.

Ali

Peki windows icin ne yapmak gerek ustadim? Bir de mesela gtk ve gtkD'yi icermesi gerekiyor degil mi kurulumun?

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

March 24, 2010

Standart cevap: Eğer program statik olarak bağlandıysa, yani kullandığı kütüphaneler içine gömüldüyse, başka bir şey gerekmez.

Normalde sonu .a ile biten kütüphaneler işlevlerin bir araya gelmelerinden oluşan basit yapılardır. Onlarla bağlandıysa program tek başına çalışır.

so ile bağlandıysa, çalışma zamanında o .so dosyasını arayacaktır.

Oluşturduğun programın ismi 'deneme' ise, onu 'ldd''ye vererek bağımlı olduğu .so dosyalarını öğrenebilirsin:

ldd deneme

Ali

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

March 24, 2010

C veya C++ olsa, derleme satırında -static yazılırdı. dmd'de de -L-static olmalı. Öyle yapınca bağlayıcıdan şu hatayı alıyorum:

/usr/bin/ld: cannot find -lgcc_s

Anlaşılan libgcc_s.a isimli bir dosyayı arıyor. (-l'den sonra gelen ismin başına lib, sonuna da .a ekler.) Belki onu kuran Linux pakedini araştırmak gerek.

Öte yandan, ldd'nin gösterdiği kütüphaneler her Linux sisteminde bulunan dosyalar. Yani belki de bir sorun yoktur. :)

Daha fazla öğrenince yazacağım.

Ali

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

March 24, 2010

Belki de gtkD'nin GNUmakefile'ı yalnızca dinamik olarak bağlamaya göre yapılmıştır. (Bu konuda tamamen yanılıyor olabilirim?) Onu bilemiyorum... Belki de forumlarında sorulacak yeni bir sorudur... ;)

Ama gtkD'yi kullanmayan basit bir deneme.d programını statik bağlamayı çözdüm: dmd ile derlemek ve gcc ile bağlamak...

Önce şu komutla yalnızca derliyoruz ve bir program parçası (object file) oluşturuyoruz:

dmd -c deneme.d -ofdeneme.o

Daha sonra o program parçasını ve gereken kütüphaneleri gcc ile bağlıyoruz (aslında gcc kendi işini yapıp arka planda ld'yi çağırır):

gcc deneme.o -static -o deneme ~/dmd/linux/lib/libphobos2.a -lpthread

Bağımsız programımız kullanıma hazır... :)

Windows konusunda da forumda sormak gerek... :/

Ali

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