PDA

Tam Sürümünü Görmek İçin : Debian'da C++ programcılığı


utdemir
23/03/2008, 20:12
Arkadaşlar, bilgisayarıma debian kurdum ve C++ kodu derlemek için gcc ve AnjutaIDE bulunuyor editör için...

Ama, en basit programlarda bile garip bir hata alıyorum derlerken... Terminalden derliyorum...

Derlemek istediğim dosya:
#include <iostream>
#include <cstdlib>


using namespace std;

int main(int argc, char *argv[])
{
cout<<"Hello World";


return EXIT_SUCCESS;
}
Komutum:
gcc deneme.cppÇıktı:

/tmp/ccyl4Ytt.o: In function `__static_initialization_and_destruction_0(int, int)':
deneme.cpp:(.text+0x23): undefined reference to `std::ios_base::Init::Init()'
/tmp/ccyl4Ytt.o: In function `__tcf_0':
deneme.cpp:(.text+0x6c): undefined reference to `std::ios_base::Init::~Init()'
/tmp/ccyl4Ytt.o: In function `main':
deneme.cpp:(.text+0x8e): undefined reference to `std::cout'
deneme.cpp:(.text+0x93): undefined reference to `std::basic_ostream<char, std::char_traits<char> >& std::operator<< <std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> >&, char const*)'
/tmp/ccyl4Ytt.o:(.eh_frame+0x11): undefined reference to `__gxx_personality_v0'
collect2: ld returned 1 exit status
Sanırım kütüphanelerde bir hata var... Ama linux'te programcılık ile ilgili hiç bir şey bilmiyorum...

Açıklayabilir misiniz?


acehreli
23/03/2008, 20:30
gcc'nin .cpp uzantilarinin C++ dosyasi oldugunu bilmesini beklerdim ama bilmiyormus. Ben de sasirdim. :)

Linux'ta az da olsa yaygin bir uygulama vardir: Ayni programin birden fazla ismi olabilr. Program da hangi isimle baslatildigina gore degisik davranis gosterir. gcc'nin baska bir ismi g++'tir ve C++ derlemek istedigimizi anlar:

g++ deneme.cpp

Ali

utdemir
23/03/2008, 22:27
Teşekkürler @acehreli...
g++ ile komutu verdiğimde sorunsuz çalıştı...

acehreli
24/03/2008, 06:54
Bir ayrintiyi duzeltmem gerek: Aslinda gcc yazinca da .cpp'nin C++ oldugunu biliyor ve C++ olarak derliyor. Aslinda sorun orada degil, baglama asamasinda.

gcc (veya g++) yazinca geri planda ayrica baglayici da cagrilir. Butun program parcalari (.o dosyalari) yaninda, standart kutuphaneler de programa baglanirlar.

Bura gcc'nin calismama nedeni, gcc'nin C kutuphanelerini baglamasiydi. g++ yazinca C++ kutuphanelerini de bagladigi icin sorun cozuldu.

Ali

utdemir
24/03/2008, 17:55
Tekrar teşekkürler... :)

Bir sorum daha olacak ama...

Ben bu programları birine göndermek istesem, linux üzerinde bunu exe olarak kaydedebileceğim bir program var mı bildiğiniz, sanal makine kurmaktan başka? Pek programlama sorusu olmadı ama, exe halinde kaydedebilen bir program olsaydı bayağı işime yarardı...