Автор Тема: посоветуйте компилятор  (Прочитано 6342 раз)

Оффлайн Axe79

  • Завсегдатай
  • *
  • Сообщений: 175
посоветуйте компилятор
« : 14.10.2009 18:08:00 »
Решил взяться за С++.
Скачал Самоучитель Джес Либерти Освой самостоятельно С++ за 21день

дошёл до первого  примера и понял что появилась проблема с компилятором
в статье http://linuxopen.ru/2007/12/19/nachinaem-programmirovat-na-ss-pod-linux.html

предложили gcc или g++ тоже не вышло.

Может кто-то просветить по вопросам
1 Какой компилятор  лучше
2 Какая комплектация пакетов и библиотек
3 Какая версия подходит для примеров в том же самоучителе (тот же gcc присутствует в варианте 4,1 и 3,2 и 3,3)
и ещё играет ли роль к версия компилятора при компиляции кодов разных книг разных годов выпуска  :D
Если проще то если книга старая не устаревают ли листинги примеров.

заранее спасибо
« Последнее редактирование: 14.10.2009 18:17:41 от Axe79 »
Ничто так не стимулирует тягу к труду интеллектуальному, как обилие труда физического!
Gutta cavat lapidem non vi, sed saepe cadendo Капля долбит камень не силой, а частым падени

Оффлайн Skull

  • Глобальный модератор
  • *****
  • Сообщений: 19 926
    • Домашняя страница
    • Email
Re: посоветуйте компилятор
« Ответ #1 : 14.10.2009 19:19:57 »
1 Какой компилятор  лучше
gcc — для C, g++ — для C++. Свободной альтернативы GNU CC пока нет.
Цитировать
2 Какая комплектация пакетов и библиотек
Смотря что собираетесь собирать. gcc4.1 вытянет всё, что нужно для сборки простых приложений на glibc. Если нужны библиотеки, обратите внимание на пакеты вида lib???-devel — это включаемые файлы (*.h). Если нужен make — ставьте make.
Цитировать
3 Какая версия подходит для примеров в том же самоучителе (тот же gcc присутствует в варианте 4,1 и 3,2 и 3,3)
Любая
Цитировать
и ещё играет ли роль к версия компилятора при компиляции кодов разных книг разных годов выпуска  :D
Практически нет, так как в самоучителях не такой извращённый код, который чувствителен к версии компилятора.
Андрей Черепанов (cas@)

Оффлайн dk

  • alt linux team
  • ***
  • Сообщений: 989
    • Email
Re: посоветуйте компилятор
« Ответ #2 : 14.10.2009 19:37:09 »
Посмотрел по указанной ссылке. Советую больше эту ссылку не использовать. Ваши "проблемы с компилятором" вызваны тем, что при переводе текста в формат HTML пропали очень важные вещи. Например, в первом же примере вместо
#includeдолжно быть
#include<stdio.h>
Ну и так далее, все примеры - нерабочие.

Что касается устаревания листингов примеров, все зависит от того, какие там примеры...
« Последнее редактирование: 14.10.2009 19:38:52 от dk »

Оффлайн Axe79

  • Завсегдатай
  • *
  • Сообщений: 175
Re: посоветуйте компилятор
« Ответ #3 : 14.10.2009 21:42:38 »
когда

#include <iostream.h>

int main()
{
cout<< "Hello World!\n";
return 0;
}

[axe@localhost cyppy]$ g++ HELLO.cpp
In file included from /usr/lib/gcc/i586-alt-linux/4.1.2/../../../../include/c++/4.1.2/backward/iostream.h:31,
                 from HELLO.cpp:1:
/usr/lib/gcc/i586-alt-linux/4.1.2/../../../../include/c++/4.1.2/backward/backward_warning.h:32:2: warning: #warning This file includes at least one deprecated or antiquated header. Please consider using one of the 32 headers found in section 17.4.1.2 of the C++ standard. Examples include substituting the <X> header for the <X.h> header for C++ includes, or <iostream> instead of the deprecated header <iostream.h>. To disable this warning use -Wno-deprecated.
HELLO.cpp:7:2: warning: no newline at end of file
[axe@localhost cyppy]$   

а когда #include<stdio.h>

[axe@localhost cyppy]$ g++ HELLO.cpp
HELLO.cpp:7:2: warning: no newline at end of file
HELLO.cpp: In function ‘int main()’:
HELLO.cpp:5: ошибка: нет декларации ‘cout’ в этой области видимости
[axe@localhost cyppy]$ 


Насчет второго вопроса: вы что-то конкретное хотите написать как только освоитесь с языком?

Второй вопрос имел под собой понятие комплекта простых стандартных библиотек необходимых просто на первых парах... для обучения.

А С меня отговаривали учить говорили чтоб не тратить время зря и не переучиваться .
Ничто так не стимулирует тягу к труду интеллектуальному, как обилие труда физического!
Gutta cavat lapidem non vi, sed saepe cadendo Капля долбит камень не силой, а частым падени

Оффлайн dk

  • alt linux team
  • ***
  • Сообщений: 989
    • Email
Re: посоветуйте компилятор
« Ответ #4 : 14.10.2009 21:54:13 »
когда

#include <iostream.h>

int main()
{
cout<< "Hello World!\n";
return 0;
}


Правильно:
#include<iostream>
using namespace std;

Если в вашей книжке по C++ написано #include<iostream.h> - выкиньте эту книжку, это не про язык C++. Если написано #include<stdio.h> - то это из языка C, для работы функций printf и scanf.

Оффлайн dk

  • alt linux team
  • ***
  • Сообщений: 989
    • Email
Re: посоветуйте компилятор
« Ответ #5 : 14.10.2009 21:55:07 »
Второй вопрос имел под собой понятие комплекта простых стандартных библиотек необходимых просто на первых парах... для обучения.

На первых порах для обучения вам достаточно стандартной библиотеки языка.

Оффлайн Axe79

  • Завсегдатай
  • *
  • Сообщений: 175
Re: посоветуйте компилятор
« Ответ #6 : 14.10.2009 22:26:03 »
на #include<iostream>
using namespace std;

int main()
{
 cout<< "Hello World!\n";
 return 0;
}
выдало



[axe@localhost cyppy]$ gcc HELLO.cpp
HELLO.cpp:8:2: warning: no newline at end of file
/home/axe/tmp/ccQR3hA7.o: In function `__static_initialization_and_destruction_0(int, int)':
HELLO.cpp:(.text+0x24): undefined reference to `std::ios_base::Init::Init()'
/home/axe/tmp/ccQR3hA7.o: In function `__tcf_0':
HELLO.cpp:(.text+0x6b): undefined reference to `std::ios_base::Init::~Init()'
/home/axe/tmp/ccQR3hA7.o: In function `main':
HELLO.cpp:(.text+0x8e): undefined reference to `std::cout'
HELLO.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*)'
/home/axe/tmp/ccQR3hA7.o:(.eh_frame+0x11): undefined reference to `__gxx_personality_v0'
collect2: выполнение ld завершилось с кодом возврата 1
[axe@localhost cyppy]$    



если не тяжело дайте кусок кода который должен работать  я запущу и определюсь с направлением проблемы
« Последнее редактирование: 14.10.2009 22:28:02 от Axe79 »
Ничто так не стимулирует тягу к труду интеллектуальному, как обилие труда физического!
Gutta cavat lapidem non vi, sed saepe cadendo Капля долбит камень не силой, а частым падени

Оффлайн dk

  • alt linux team
  • ***
  • Сообщений: 989
    • Email
Re: посоветуйте компилятор
« Ответ #7 : 14.10.2009 22:55:48 »
Этот код - правильный.

HELLO.cpp:8:2: warning: no newline at end of file

Предупреждение: нет символа новой строки в конце файла.

Цитировать
/home/axe/tmp/ccQR3hA7.o: In function `__static_initialization_and_destruction_0(int, int)':
HELLO.cpp:(.text+0x24): undefined reference to `std::ios_base::Init::Init()'

Эта, и все последующие ошибки, связаны с тем, что вы используете gcc для компиляции программы на C++. Используйте компилятор g++.
« Последнее редактирование: 14.10.2009 22:58:17 от dk »

Оффлайн Axe79

  • Завсегдатай
  • *
  • Сообщений: 175
Re: посоветуйте компилятор
« Ответ #8 : 14.10.2009 23:26:55 »









Этот код - правильный.

HELLO.cpp:8:2: warning: no newline at end of file

Предупреждение: нет символа новой строки в конце файла.

Цитировать
/home/axe/tmp/ccQR3hA7.o: In function `__static_initialization_and_destruction_0(int, int)':
HELLO.cpp:(.text+0x24): undefined reference to `std::ios_base::Init::Init()'

Эта, и все последующие ошибки, связаны с тем, что вы используете gcc для компиляции программы на C++. Используйте компилятор g++.

всё правильно  сгенерился файл a.out но это не экзека и в sh не идёт
что дальше компоновка как по книге?

А С меня отговаривали учить говорили чтоб не тратить время зря и не переучиваться .
Хм... вообще-то полезно будет знать их особенности и различия, часто C и C++ используются бок о бок.
Удачи вам в изучении языка.  :)
спасибо )) самому хочется получить результаты


Ничто так не стимулирует тягу к труду интеллектуальному, как обилие труда физического!
Gutta cavat lapidem non vi, sed saepe cadendo Капля долбит камень не силой, а частым падени

Оффлайн dk

  • alt linux team
  • ***
  • Сообщений: 989
    • Email
Re: посоветуйте компилятор
« Ответ #9 : 14.10.2009 23:54:36 »
всё правильно  сгенерился файл a.out но это не экзека и в sh не идёт

./a.out

А в sh не идет, потому что sh нужен для запуска shell-скриптов, а не для запуска ELF-программ.

Оффлайн Axe79

  • Завсегдатай
  • *
  • Сообщений: 175
Re: посоветуйте компилятор
« Ответ #10 : 14.10.2009 23:58:45 »
я не просто так с SH пробовал

[root@localhost cyppy]# ./a.out
bash: ./a.out: Отказано в доступе

так бывает если перл скрипт без обьявления интерпритатора запустить хотя тут точно ни perl ни shell точно не причём

Ничто так не стимулирует тягу к труду интеллектуальному, как обилие труда физического!
Gutta cavat lapidem non vi, sed saepe cadendo Капля долбит камень не силой, а частым падени

Оффлайн dk

  • alt linux team
  • ***
  • Сообщений: 989
    • Email
Re: посоветуйте компилятор
« Ответ #11 : 15.10.2009 00:10:26 »
я не просто так с SH пробовал

Файловая система смонтирована с параметром noexec? Или файловая система - FAT или NTFS?

Кстати, а зачем вы под рутом работаете?

Оффлайн Axe79

  • Завсегдатай
  • *
  • Сообщений: 175
Re: посоветуйте компилятор
« Ответ #12 : 15.10.2009 01:08:58 »
рутовская консольо сталась  после монтирования

файловая система кажись ext2 или 3

если не тяжело скажите где смотреть ))) Самому интересно)
Ничто так не стимулирует тягу к труду интеллектуальному, как обилие труда физического!
Gutta cavat lapidem non vi, sed saepe cadendo Капля долбит камень не силой, а частым падени

Оффлайн dk

  • alt linux team
  • ***
  • Сообщений: 989
    • Email
Re: посоветуйте компилятор
« Ответ #13 : 15.10.2009 01:29:29 »
Итак, по порядку...

$ g++ <имя_файла>.cpp
$ ./a.out
$ ls -l a.out
$ pwd
$ mount

И выводы от этих команд - сюда

Оффлайн Axe79

  • Завсегдатай
  • *
  • Сообщений: 175
Re: посоветуйте компилятор
« Ответ #14 : 15.10.2009 01:40:55 »
готово :)
[axe@localhost cyppy]$ g++ HELLO.cpp
[axe@localhost cyppy]$ ./a.out
bash: ./a.out: Отказано в доступе
[axe@localhost cyppy]$ ls -l ./a.out
-rw-rw-rw- 1 root root 7550 Окт 15 00:38 ./a.out
[axe@localhost cyppy]$ pwd
/home/axe/Desktop/my_soft/cyppy
[axe@localhost cyppy]$ mount
/dev/sda7 on / type xfs (rw)
/proc on /proc type proc (rw,noexec,nosuid,gid=19)
sysfs on /sys type sysfs (rw)
udevfs on /dev type tmpfs (rw)
devpts on /dev/pts type devpts (rw)
shmfs on /dev/shm type tmpfs (rw)
tmpfs on /tmp type tmpfs (rw,nosuid)
/dev/sda1 on /mnt/sda1 type fuseblk (rw,nosuid,nodev,allow_other,default_permissions,blksize=4096)
/dev/sda5 on /mnt/sda5 type fuseblk (rw,nosuid,nodev,allow_other,default_permissions,blksize=4096)
/dev/sda6 on /mnt/sda6 type fuseblk (rw,nosuid,nodev,allow_other,default_permissions,blksize=4096)
none on /proc/sys/fs/binfmt_misc type binfmt_misc (rw)
/mnt/sda6/wwmy_soft on /home/axe/Desktop/my_soft type none (rw,bind)
/mnt/sda6/develop on /home/axe/Desktop/develop type none (rw,bind)
/mnt/sda6/data/wwbas on /home/axe/Desktop/wbas type none (rw,bind)
/mnt/sda6/data/wwobv on /home/axe/Desktop/wobv type none (rw,bind)
/mnt/sda6/data/wwfiltr on /home/axe/Desktop/wfiltr type none (rw,bind)
/mnt/sda6/data/wwmag on /home/axe/Desktop/wmag type none (rw,bind)
/mnt/sda6/data/wwfree_data on /home/axe/Desktop/wfree_data type none (rw,bind)
/mnt/sda6/wwexm on /home/axe/Desktop/wexm type none (rw,bind)
/mnt/sda5/Madoks on /home/axe/Desktop/MD type none (rw,bind)
/mnt/sda5/MuZZ on /home/axe/Desktop/MUZZ type none (rw,bind)
/mnt/sda6/torr/T4.2009.[torrents.ru].avi on /var/ftp/pub/Terminator4.avi type none (rw,bind)
/mnt/sda6/torr/Hraniteli.2009.D.TS.avi on /var/ftp/pub/Hraniteli.avi type none (rw,bind)
/mnt/sda6/torr/udarnaya_sila on /var/ftp/pub/udarnaya_sila type none (rw,bind)
/mnt/sda6/torr/udarnaya_sila_001-012 on /var/ftp/pub/udarnaya_sila_001-012 type none (rw,bind)
/mnt/sda6/torr/udarnaya_sila_(024-033) on /var/ftp/pub/udarnaya_sila_024-033 type none (rw,bind)
/mnt/sda6/torr/Znamenie.avi on /var/ftp/pub/Znamenie.avi type none (rw,bind)
/mnt/sda6/torr/Besslavnye.ubljudki.2009.D.TS.ELEKTRI4KA.Bumblebee.[uniongang.ru].avi on /var/ftp/pub/Besslavnye.ubljudki.2009.D.TS.ELEKTRI4KA.Bumblebee.[uniongang.ru].avi type none (rw,bind)
/mnt/sda6/torr/Mertvye.kak.ya.Zhizn.posle.smerti.2009.DivX.DVDRip.GoodVideo.avi on /var/ftp/pub/Mertvye.kak.ya.Zhizn.posle.smerti.2009.DivX.DVDRip.GoodVideo.avi type none (rw,bind)
/mnt/sda6/torr/Voina.nevest.2009.D.DVDRip_INTERLIVE.mkv on /var/ftp/pub/Voina.nevest.2009 type none (rw,bind)
/mnt/sda6/torr/Dobro.pozhalovat.v.ray.2.mkv on /var/ftp/pub/Dobro.pozhalovat.v.ray.2.mkv type none (rw,bind)
/mnt/sda6/torr/Nensi.dryu.2007.DVDRip-AVC.mkv on /var/ftp/pub/Nensi.dryu.2007.DVDRip-AVC.mkv type none (rw,bind)
/mnt/sda6/torr/Surrogaty.2009.D.TS.ELEKTRI4KA.Bumblebee.avi on /var/ftp/pub/Surrogaty.2009.D.TS.ELEKTRI4KA.Bumblebee.avi type none (rw,bind)
/mnt/sda6/torr/Brosok.kobry.2009.D.PROPER.TS.ELEKTRI4KA.Bumblebee.[uniongang.ru].avi on /var/ftp/pub/Brosok.kobry.2009.D.PROPER.TS.ELEKTRI4KA.Bumblebee.[uniongang.ru].avi type none (rw,bind)
/mnt/sda6/torr/Surrogaty.2009.D.TS.ELEKTRI4KA.Bumblebee.avi on /var/ftp/pub/Surrogaty.2009.D.TS.ELEKTRI4KA.Bumblebee.avi type none (rw,bind)
[axe@localhost cyppy]$   
Ничто так не стимулирует тягу к труду интеллектуальному, как обилие труда физического!
Gutta cavat lapidem non vi, sed saepe cadendo Капля долбит камень не силой, а частым падени