[Çözüldü] c math kütüphanesi

Başlatan decoma, 30 Mayıs 2013 - 22:47:42

« önceki - sonraki »

0 Üyeler ve 1 Ziyaretçi konuyu incelemekte.

decoma

merhaba arkadaşlar

#include <math.h>
bu kütüphaneim olmasına karşın pow ve sqrt fonksiyonlarını görmüyor program tanımlandı  diyor neden acaba

sem

Merhabalar,

Derleme işlemini ne şekilde yapıyorsunuz?


gcc program.c -o program  -lm


Şeklinde bağlayıcıya (linker) Math kütüphanesini kullanıcağınızı bildirmeniz gerekiyor. Bu şekilde -lm parametresi ile dener misiniz?

Bu şekilde derlediğiniz halde mi sorun yaşıyorsunuz?
".NET çemberinden geçen lirisist etkisi bir 'Volcano', bir yüzüm Java bir yüzüm Badalamenti Don Tano"
----------------------------------------------------------------------------------------------------------------------
"Her yer ölüm yine, burası dünya
Derken ölüm bile bu nasıl dünya?
Benden ölüm dile, batıyor gün yine
Burası dünya?

decoma

-lm yapınca o sorunlar gitti.peki her zaman böyle mi yapmam gerekiyor
ayrıca thread de kullanmıştım program onlarıda görmüyor.c++ ta yazınca böyle bir sorun çıkmyordu


decoma

if verdiğin linkte bişey anlamadım :(
thread oluşturyorum fonksiyon içinde onları da görmüyor onlar için ne yapmam gerekiyor

if

@decoma, lütfen iletilerinizde imlâya özen gösterin.

C bildiğim söylenemez. Bilen arkadaşlar yardımcı olacaktır.

Verdiğim bağlantıda deniliyor ki math.h başlık dosyası libm.so kütüphanesiyle bağlantılı fakat bu kütüphane standart C kütüphanesi bağlı değil. Dolayısıyla gcc'ye de bağlı değil. Bu yüzden derlerken -lm kullanmanız gerekmiş.

sem

decoma, standart olmayan kütüphaneleri kullandığımızda derleyiciye bu kütüphaneleri bildirmemiz gerekiyor. Hafızam beni yanıltmıyorsa bağlama aşamasında kullanılan ilgili birimlerin bulunabilmesi için bu şekilde bildirmemiz gerekiyor.

C++'ta math.c (C++'cası "cmath") standart kütüphanelerde mi emin değilim. Fakat az önce denediğim zaman;
 

#include <stdio.h>      /* printf */
#include <math.h>       /* pow */
int main ()
{
  printf ("7 ^ 3 = %f\n", pow (7.0, 3.0) );
  printf ("4.73 ^ 12 = %f\n", pow (4.73, 12.0) );
  printf ("32.01 ^ 1.54 = %f\n", pow (32.01, 1.54) );
  return 0;
}


Bu kodu salt gcc ile derleyerek çalıştırdım. gcc  ile derledim (g++ ile değil). Yeni standartlara göre math.h eklendi mi bilemiyorum, ya da BASH kendi kendine algılayıp mı eklemiş oldu emin değilim. Derlyiciler için belirlenen ssesifikasyonları incelemek gerekebilir bu sorunun cevabı için ya da daha kısa olarak ilgili standartlar da incelenebilir.

Aşağıda GCC ve BASH versiyonlarını paylaştım, aynı komutların çıktılarını verebilir misiniz?


$ gcc --version
gcc (Ubuntu/Linaro 4.6.3-1ubuntu5) 4.6.3



$ bash --version
GNU bash, version 4.2.25(1)-release (x86_64-pc-linux-gnu)


BASH'ın bir numarası olabilir mi acaba, sanmıyorum ama.
".NET çemberinden geçen lirisist etkisi bir 'Volcano', bir yüzüm Java bir yüzüm Badalamenti Don Tano"
----------------------------------------------------------------------------------------------------------------------
"Her yer ölüm yine, burası dünya
Derken ölüm bile bu nasıl dünya?
Benden ölüm dile, batıyor gün yine
Burası dünya?

decoma

sem0900 teşekür ederim sürekli yardma koşuyorsun :)
tamam hallettim dediğiniz gibi standart olmayan kütüphaneleri kullanırken bellirtmek gerekiyormuş
örneğin;

gcc -o ThreadOrnek ThreadOrnek.c -lpthread -lm


yukarıdaki kodda lpthread thread kütüphanesi için lm ise math kütüphanesi için kullanılmıştır.herkese yararlı olması dileğiyle
kolay gelsin