[Çözüldü] Gcc ile undefined reference to `sqrt' hatası

Başlatan facell, 17 Kasım 2012 - 11:18:31

« önceki - sonraki »

0 Üyeler ve 3 Ziyaretçi konuyu incelemekte.

facell

#include <stdio.h>
#include <math.h>
main()
{
double sayi;
printf("Negatif olmayan bir sayı giriniz:\n");
scanf("%lf",&sayi);

if (sayi<0)
printf("GIRIS HATASI SAYI NEGATİF\n");
else
printf("Sayinin karekoku = %lf\n",sqrt(sayi));
}

Bu programı gcc ve geany ile derlemeye çalıştığım zaman hata alıyorum.
~/Masaüstü/C$ gcc karekok.c çıktısı
/tmp/ccgjM6mo.o: In function `main':
karekok.c:(.text+0x65): undefined reference to `sqrt'
collect2: ld çıkış durumu 1 ile döndü


~/Masaüstü/C$ gcc -v çıktısı
Yerleşik özellikler kullanılıyor.
COLLECT_GCC=gcc
COLLECT_LTO_WRAPPER=/usr/lib/gcc/x86_64-linux-gnu/4.6/lto-wrapper
Hedef: x86_64-linux-gnu
../src/configure -v --with-pkgversion='Ubuntu/Linaro 4.6.3-1ubuntu5' --with-bugurl=file:///usr/share/doc/gcc-4.6/README.Bugs --enable-languages=c,c++,fortran,objc,obj-c++ --prefix=/usr --program-suffix=-4.6 --enable-shared --enable-linker-build-id --with-system-zlib --libexecdir=/usr/lib --without-included-gettext --enable-threads=posix --with-gxx-include-dir=/usr/include/c++/4.6 --libdir=/usr/lib --enable-nls --with-sysroot=/ --enable-clocale=gnu --enable-libstdcxx-debug --enable-libstdcxx-time=yes --enable-gnu-unique-object --enable-plugin --enable-objc-gc --disable-werror --with-arch-32=i686 --with-tune=generic --enable-checking=release --build=x86_64-linux-gnu --host=x86_64-linux-gnu --target=x86_64-linux-gnu
seçenekleriyle yapılandırıldı.
Evre modeli: posix
gcc sürümü 4.6.3 (Ubuntu/Linaro 4.6.3-1ubuntu5)

İşlemci: Intel(R) Core(TM) i5 CPU M 480 @ 2.67GHz
Bellek: 3.7 GB
İşlemci Mimarisi: x86_64
Masaüstü Ortamı: GNOME Shell

travego0403

'-lm'  bağlayıcı parametresini de ekleyin derleme komutuna.  Örneğin
gcc kaynak.c -o programadi -lm

Böylece matematik kütüphanesinin bağlanmasını söylüyorsunuz derleyiciye.


Ayrıca standart olarak main fonksiyonunun dönüş türünü belirtin 'int' gibi. Program sonuna da 'return 0' gibi bir ifade ekleyerek standartlara uymaya çalışın. C için standartlar nelerdir bilmiyorum ama C++ için main'in dönüş türü int olması standarttır.
"Matematik bir dildir ve bu dilde şairlere fizikçi denir." Richard Feynman

facell

Alıntı yapılan: travego0403 - 17 Kasım 2012 - 16:34:46
'-lm'  bağlayıcı parametresini de ekleyin derleme komutuna.  Örneğin
gcc kaynak.c -o programadi -lm

Böylece matematik kütüphanesinin bağlanmasını söylüyorsunuz derleyiciye.


Ayrıca standart olarak main fonksiyonunun dönüş türünü belirtin 'int' gibi. Program sonuna da 'return 0' gibi bir ifade ekleyerek standartlara uymaya çalışın. C için standartlar nelerdir bilmiyorum ama C++ için main'in dönüş türü int olması standarttır.
@travego0403 teşekkürler.
Konuyu kilitleyebilirsiniz.
İşlemci: Intel(R) Core(TM) i5 CPU M 480 @ 2.67GHz
Bellek: 3.7 GB
İşlemci Mimarisi: x86_64
Masaüstü Ortamı: GNOME Shell