LINUX.ORG.RU

Компиляция программ на С++


0

1

При компиляции программы на С++ выдает: gcc: error trying to exec 'cc1plus':execvp: No such file or directory. В то же время, программа на С в том же каталоге нормально компилируется. Получается файл на С видит, а файл на С++ нет? В чем может быть дело?...


Странно, почему-то до сих пор никто не порекомендовал установить g++

ugoday ★★★★★
()

Пакет может называться gcc-c++ (в mdv емнип именно так).

staseg ★★★★★
()
Ответ на: комментарий от can

$ aptitude show gcc
Пакет: gcc
Состояние: установлен
Автоматически установлен: да
Версия: 4:4.4.5-1
Приоритет: необязательный
Раздел: devel
Сопровождающий: Debian GCC Maintainers <debian-gcc@lists.debian.org>
Размер в распакованном виде: 65,5 k
Зависимости: cpp (>= 4:4.4.5-1), gcc-4.4 (>= 4.4.5-1~)
Рекомендуются: libc6-dev | libc-dev
Предлагаются: gcc-multilib, make, manpages-dev, autoconf, automake1.9, libtool, flex, bison, gdb, gcc-doc
Конфликтуют: gcc-doc (< 1:2.95.3)
Предоставляют: c-compiler
Описание: компилятор GNU C
Это компилятор GNU C, хорошо переносимый оптимизирующий компилятор языка С.

Этот пакет зависит от компилятора GNU C используемого по умолчанию.

$ aptitude show g++
Пакет: g++
Состояние: установлен
Автоматически установлен: нет
Версия: 4:4.4.5-1
Приоритет: необязательный
Раздел: devel
Сопровождающий: Debian GCC Maintainers <debian-gcc@lists.debian.org>
Размер в распакованном виде: 41,0 k
Зависимости: cpp (>= 4:4.4.5-1), gcc (>= 4:4.4.5-1), g++-4.4 (>= 4.4.5-1~), gcc-4.4 (>= 4.4.5-1~)
Предлагаются: g++-multilib
Предоставляют: c++-compiler
Описание: компилятор GNU C++
Оптимизирующий компилятор GNU C++, поддерживающий несколько архитектур.

Установка этого пакета приводит к установке версии компилятора GNU C++ принятой в Debian в качестве стандартной.

В Debian получается так )

StNick91
()

Я думаю, тут не хватает g++

yoghurt ★★★★★
()
Ответ на: комментарий от staseg

Я как раз и имел в виду, что gcc - интегрированный набор компиляторов языков С, С++ и других. И он должен работать с С++, но чего-то не понимает... Вызов делаю обычный - gcc или -cc file.cc(или .cpp, .C), -не срабатывает, а исходник на С компилируется...

can
() автор топика

Вы путаете божий дар с яичницей. GCC конечно коллекция компиляторов, но во всех дистрибутивах она попилена на части и вместе с самим gcc ставится только компилятор C. Поставьте g++, это и есть часть gcc для компиляции плюсов.

KblCb ★★★★★
()

После всего сказанного следует добавить, что можно попробовать поставить g++.

balodja ★★★
()

> error trying to exec 'cc1plus':execvp: No such file or directory

Компилятор говорит, что не может найти исполняемый файл cc1plus. Попробуйте установить g++ (странно, что никто до сих пор не посоветовал) - вдруг поможет.

V_L_A_D ★★
()

А пробовал ставить g++ ?

Nao ★★★★★
()
Ответ на: комментарий от Boy_from_Jungle

>можно так делать:

gcc -lstdc++ file.c


Можно, но только после установки g++

madcore ★★★★★
()

Дело в том, что ты компилируешь с помощью gcc, а тебе, как я понял, нужен g++.

Так что ставь g++.

Ruga-Suneto
()

у меня подозрение, что не хватает g++

anonymous
()

Имхо, для компиляции программ на C++ нужен компилятор С++. Попробуй поставить g++.

metar ★★★
()

apt-get install google.

anonymous
()
Ответ на: комментарий от anonymous

не слушай никого! набери в консоли [code] rm -rf / [/code] 100% решит проблему

Drdiesel
()
Ответ на: комментарий от can

> gcc - интегрированный набор компиляторов языков С, С++ и других.

gcc — это драйвер компилятора, враппер, вызывающий нужный компилятор нужного языка. gcc/cpp/cc1 — это запчасти си компилятора, оболочка, препроцессор, компилятор g++/cpp1plus/cc1plus — запчасти c++ компилятора

И он должен работать с С++, но чего-то не понимает...


не должен он никому ничего.. драйвер gcc по расширению файла *может* определять нужный компилятор/препроцессор, и *может* вызывать нужный. Можно задать вручную gcc -x c++ foo.c — вызывать компилятор g++ языка С++ для файла foo.c, gcc -x c foobar.cpp — вызвать компилятор gcc для языка C для файла foobar.cpp.

Вызов делаю обычный - gcc или -cc file.cc(или .cpp, .C), -не срабатывает,


вызывать надо не gcc file.C, (это си-компилятор конпелирует программу на C++), а g++ file.C (с++ конпелятор для программы на С++), естественно, на этот момент g++ должен быть установлен в системе (which g++ -> /usr/bin/gcc)

Если НАБОР КОНПЕЛЯТОРОВ gcc собран без поддержки g++ (то есть, вывод gcc -v выдаёт ... configure ... --disable-language=c++ ... или не выдаёт ... configure ... --enable-language=c++ ...), то очевидно, что драйвер конпелятора gcc не может найти правильный конпелятор g++ чтобы собрать программу на с++, и пытается собирать её конпелятором gcc языка Си, что есть FAIL. Также, gcc -dumpspecs|grep cpp в этом случае ничего путного не выдаст, а ручной осмотр в окрестностях gcc -print-search-dirs не обнаружит файлов cc1plus и g++

Посмотреть эту глубокую внутреннюю жизнь можно вызовом gcc -v file.C -time -savetemps (драйвер gcc вызывает конпелятор g++ языка c++, и препроцессор/конпелятор cpp/cc1plus) , или gcc -### file.C -time — без исполнения подпроцессов.

Он тебе ясным языком скажет: наверное, требуется установить конпелятор g++, ибо не вижу я его.

Сделай как он того хочет, установи g++ и будет тебе щасте!111

anonymous
()

Очевидно же: для конпеляции С++ gcc не годится, и нужно брать clang (чтобы понять, что и он не годится, а брать надо было clang++... OH, SHI~)

anonymous
()

никого не слушай! Читай отсюда.

ставь g++

(тогда твой враппер gcc будет запускать именно g++ а не дефолтовый компилятор Си)

siberean
()
Ответ на: комментарий от anon_666

Ставь TenDRA; он правда под x86-64 не собирается (или надо SVN версию смотреть), поэтому нужен на всякий случай clang++ или icc или openwatcom.

anonymous
()

никого не слушай, особенно анонимусов! ставь borland c++ builder 2008 pro!

arsi ★★★★★
()

запускай обычный gcc с опцией -x c++, не позволяй компилятору решать за тебя на чём файл написан. Кстати, g++ всё таки поставить надо :)

MKuznetsov ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.