gcc derleyiciye kütüphane eklemek

Başlatan ismetacar, 06 Ekim 2013 - 15:22:00

« önceki - sonraki »

0 Üyeler ve 1 Ziyaretçi konuyu incelemekte.

ismetacar

Merhaba arkadaşlar,

Şöyle bir sorunum var;

C programlama dili ile matematiksel fonksiyonların sıkça kullanıldığı bir proje üzerinde çalışıyorum. Matematiksel fonksiyonları kullanacağım kütüphane ise gmp kütüphanesi. Bu kütüphane stdio, stdlib veya string kütüphanelerinin aksine default olarak gcc de bulunmayan bir kütüphane.

gmplib.org adresinden kütüphane kullanımı için gerekli indirmeleri yaptım. Yazdığım kod içerisinde fonksiyonun çalışabilmesi için bu kütüphaneyi #include<gmp.h>  olarak programa dahil etmek istiyorum. Lakin derlediğim zaman bu kütüphanenin tanımlı olmadığı yönünde hatalar alıyorum.

Bu kütüphaneyi derleyiciye nasıl ekleyebilirim?

(Ubuntu 13.04 kullanıyorum.)

Teşekkürler.

bytan

Başlık dosyanı /usr/include dizini altına attığında derleyicinin görüyor olması lazım. Deneme imkanın oldu mu?
Umut en büyük kötülüktür; işkenceyi uzatır. - F.N.


Bir şey ne ise odur, bu kadar. Öyleyse, iki şey arasında bağdaşıklık varsa, bu aralarında iletişim kuruyorlar demek değildir.
"... kavrayışını bilgi ile derinleştir ..."
PF @ ST

ismetacar

Elimde başlık dosyası şeklinde değil de indirdiğim siteden kaynaklı büyük bir dosya var.
.rar şeklinde olan dosyayı söylediğiniz dizinin içerisine açmaktan mı bahsediyorsunuz?

bytan

Eğer <gmp.h> şeklinde kullanmak istiyorsan gmp.h dosyasını indirdiğin rar dosyası içerisinden çıkartıp belirttiğim dizine atmalısın. Yok eğer "gmp.h" şeklinde kodlarına eklemek istiyorsan kaynak kodlarının bulunduğu çalışma dizinine atman yeterli olur.
Umut en büyük kötülüktür; işkenceyi uzatır. - F.N.


Bir şey ne ise odur, bu kadar. Öyleyse, iki şey arasında bağdaşıklık varsa, bu aralarında iletişim kuruyorlar demek değildir.
"... kavrayışını bilgi ile derinleştir ..."
PF @ ST

ismetacar

@bytan söylediğin gibi <gmp.h> olarak kullanmak istiyorum. Söylediğin şekilde denedim ama aşağıda ki hata ile karşılaştım.

İnternette bulduğum bir kod üzerinden sorunu belirmek istiyorum.  https://gist.github.com/ismetacar/6854349 gistindeki kodu derlediğim zaman şöyle bir hata ile karşılaşıyorum.

/tmp/ccBOTZRT.o: In function `miller_rabin_pass':
miller-rabin.c:(.text+0xd): undefined reference to `__gmpz_init'
miller-rabin.c:(.text+0x27): undefined reference to `__gmpz_sub_ui'
miller-rabin.c:(.text+0x40): undefined reference to `__gmpz_init_set'
miller-rabin.c:(.text+0x5c): undefined reference to `__gmpz_fdiv_q_2exp'
miller-rabin.c:(.text+0x81): undefined reference to `__gmpz_init'
miller-rabin.c:(.text+0xa1): undefined reference to `__gmpz_powm'
miller-rabin.c:(.text+0xb4): undefined reference to `__gmpz_cmp_ui'
miller-rabin.c:(.text+0xdc): undefined reference to `__gmpz_cmp'
miller-rabin.c:(.text+0x10a): undefined reference to `__gmpz_powm_ui'
miller-rabin.c:(.text+0x12b): undefined reference to `__gmpz_cmp'
miller-rabin.c:(.text+0x14a): undefined reference to `__gmpz_clear'
miller-rabin.c:(.text+0x155): undefined reference to `__gmpz_clear'
miller-rabin.c:(.text+0x160): undefined reference to `__gmpz_clear'
/tmp/ccBOTZRT.o: In function `miller_rabin':
miller-rabin.c:(.text+0x176): undefined reference to `__gmpz_init'
miller-rabin.c:(.text+0x198): undefined reference to `__gmpz_urandomm'
/tmp/ccBOTZRT.o: In function `main':
miller-rabin.c:(.text+0x1e9): undefined reference to `__gmp_randinit_default'
miller-rabin.c:(.text+0x205): undefined reference to `__gmp_randseed_ui'
miller-rabin.c:(.text+0x241): undefined reference to `__gmpz_init_set_str'
miller-rabin.c:(.text+0x29f): undefined reference to `__gmpz_init'
miller-rabin.c:(.text+0x2b3): undefined reference to `__gmpz_init_set_ui'
miller-rabin.c:(.text+0x2de): undefined reference to `__gmpz_mul_2exp'
miller-rabin.c:(.text+0x2ea): undefined reference to `__gmpz_init'
miller-rabin.c:(.text+0x306): undefined reference to `__gmpz_urandomm'
miller-rabin.c:(.text+0x332): undefined reference to `__gmpz_fdiv_ui'
miller-rabin.c:(.text+0x34a): undefined reference to `__gmpz_fdiv_ui'
miller-rabin.c:(.text+0x362): undefined reference to `__gmpz_fdiv_ui'
miller-rabin.c:(.text+0x3a6): undefined reference to `__gmpz_out_str'
collect2: hata: ld çıkış durumu 1 ile döndü

bytan

"gmp.h" olarak ekleme yapıp kaynak dosyalarının içerisine yerleştirdiğinde de benzer hatayı alıyor musun? 

Deneme olarak basit bir başlık dosyası oluşturup yukarıda belirttiğim dizine attım. Başlık dosyası içerisinden değer çeken bir main.c de oluşturup gcc ile hem uçbirimden hem codeblocks ile sorunsuz derleyip çalıştırabildim. Tabi ben örneği basit tuttuğum için, senin durumunu birebir karşılamıyor olabilir. 
Umut en büyük kötülüktür; işkenceyi uzatır. - F.N.


Bir şey ne ise odur, bu kadar. Öyleyse, iki şey arasında bağdaşıklık varsa, bu aralarında iletişim kuruyorlar demek değildir.
"... kavrayışını bilgi ile derinleştir ..."
PF @ ST

ismetacar

.h uzantılı dosyalar dışında .o ve .a uzantılı dosyalarda var. Onları da zannediyorum bir şekilde gcc ye dahil etmemiz gerekiyor. Onları usr/lib/gcc/4.7.3 dizinine mi atmalıyım? Zira o klasörün içerisinde gcc ye ait olan .a ve .o uzantılı dosyalar mevcut. Pek emin olamadığım için bu işlemi sormadan yapamıyorum, küçük ihtimalle de olsa kalıcı sorun olabilir korkusu var =) (sonuçta o dizine dosya kopyalamak için su yetkisi lazım. =) ).

İlginizden dolayı teşekkür ediyorum.

heartsmagic

Programlama tarafım kıt olduğu için o konuda yardım edemem ancak şunu söyleyebilirim ki korkulacak bir şey yok :) Bir dosya kopyalamayla sistemsel bir sorun olmaz, en kötü çalışmaz sen de silersin.
Hayattan çıkarı olmayanların, ölümden de çıkarı olmayacaktır.
Hayatlarıyla yanlış olanların ölümleriyle doğru olmalarına imkân var mıdır?


Böylece yalan, dünyanın düzenine dönüştürülüyor.