Войти

Показать полную графическую версию : проблемы с компиляцией (g++)


DaDa
28-12-2005, 16:52
Using built-in specs.
Configured with: FreeBSD/i386 system compiler
Thread model: posix
gcc version 3.4.2 [FreeBSD] 20040728

есть такая вот программка:

#include <iostream.h>
#include <ctype.h>
using namespace std;

int main()
{
int ch, lineno=0, charno=0, wordno=0;
for (int last=0; cin && (ch = cin.get()) != EOF; last=ch)
switch (ch)
{
case '\n': lineno++; wordno++;
break;
case '/': if (cin.peek()=='/') {
cin.ignore(10000,'\n');
lineno++;
}
else charno++;
break;
default: charno++;
if (isspase(ch) && last!=ch) wordno++;
}
cout << charno << " " << wordno << " " << lineno << "\n" << flush;
return 0;
}


при её компиляции
# g++ -Wno-deprecated -o mywc mywc.c

выдаётся вот такая ошибка:

mywc.c: In function `int main()':
mywc.c:20: error: `isspase' undeclared (first use this function)
mywc.c:20: error: (Each undeclared identifier is reported only once for each function it appears in.)


хотя
# locate ctype.h
/usr/include/_ctype.h
/usr/include/ctype.h
/usr/include/sys/ctype.h
/usr/include/wctype.h
/usr/ports/shells/v7sh/files/patch-ctype.h
/usr/src/sys/sys/ctype.h

Не подскажите в чем может быть проблема?

McVlad
28-12-2005, 17:30
Может isspace, а не isspase ????

Admiral
14-01-2007, 02:15
Проблемы Собственно проблема с установкой самого компилятора.
GCC причём с версиями 4.1.1, 4.0.0 и вот только что закончилось исполнение команды уже для версии 3.4.6

#make CFLAGS='-O' LIBCFLAFG='-O2' LIBCXXFLAGS='-O2 -fno-implicit-templates' bootstrap

Ошибки следующие

make[2]: *** [libbackend.a] Error 1
make[2]: Leaving directory '/home/doc/gcc-3.4.6/obj/gcc'
make[1]: *** [stage1_build] Error 2
make[1]: Leaving directory '/hone/doc/gcc-3.4.6/obj/gcc'
make: *** [bootstrap] Error 2

Текущая версия gсс version egcs-2.90.29 980515 (ercs-1.0.3 release)
Дистрибутив KSI Linux Nostromo 1999

P.S.
Возможно ли установить gcc где нет компиляторов?
При установки набирал следующие команды

#tar zxvf gcc-3.4.6.tar.gz
#mkdir obj
#cd obj
#../configure --prefix=/usr/local/gcc --program-suffix=-3.4.6 --enable-languages=c,c++,java,objc
#make CFLAGS='-O' LIBCFLAFG='-O2' LIBCXXFLAGS='-O2 -fno-implicit-templates' bootstrap
#make install

естественно что смысл в make install исчез после ошибок на предыдущей команде.

Подозреваю, что надо ближайшую к текущей, версии компилятор.
Поправьте меня, если я не прав.

Admiral
09-03-2007, 00:36
надо ближайшую к текущей, версии компилятор.
Таки так и есть.
С начала поставил 2.95.
А теперь 2.95 собираю 3.4.6
Вопрос: а как в обще утсанавливалось всё с самого начала? Не уж то собиралось ассемблером?

UPDATE (09.03.07)
Наверное, не судьба на дистрибутив KSI Linux Nostromo 1999
поставить что-то новее 3 версии (не включительно).

In file included from /usr/include/sys/select.h:31
from /usr/include/sys/types.h:126
from /../../gcc/tsystem.h:81
from /../../gcc/crtstuff.c:62
./include/selectbits.h:15:58: token "\" is not valid in preprocessor expressions
make[2]: *** [crtbegin.o] Error 1
make[2]: Leaving directory '/add/gcc-3.4.6/obj/gcc'
make[1]: *** [stage1_build] Error 2
make[1]: Leaving directory '/add/gcc-3.4.6/obj/gcc'
make: *** [bootstrap] Error 2

Продвижение с постом за 14-01-2007 в том, что ошибка №1 уже другая.

Envel
31-03-2007, 15:53
Уважаемый Admiral, возьмите бинарный пакет для своего дистрибутива.

Admiral
03-04-2007, 00:34
Envel
Так и сделал.
Жал что "конструктор" Linux не заладился.

Ещё проще, достать современный дистрибутив и работать с ним.

P.S.
А как на первых машинах без компилятора ставили их, не уж-то ассемблером?




© OSzone.net 2001-2012