Помогите UNIX-чайнику. (Не могу скомпилировать прогу.)

Модератор: Модераторы разделов

Аватара пользователя
MumiyTroll2008
Сообщения: 28
ОС: WinXP + куча *nix-ов

Помогите UNIX-чайнику.

Сообщение MumiyTroll2008 »

Hello! :rolleyes:

Второй день работаю с UNIX-ом по книге Робачевского, вернее с Linux UBUNTU 7.04 через виртуальную машину. И несмотря что 2 дня всего знаком c UNIX-системой уже тянет писать проги под нее. Язык С.

В общем хочу написать простую прогу, чтобы изучить как вообще компилировать, запускать и т. д. на UNIX-е.

Прога такая:

#include <stdio.h>
main()
{
printf("Hello World");
}

Умного ничего, не правда ли? :crazy:

Но немогу и эту откомпилировать и соответственно выполнить.

В общем в текущем каталоге, где находится исходник проги под именем Ex1.с, через терминал ввожу команду make Ex1, все как у Робачевского описано. Мне система выдет всяку бяку, типа lp команда не может быть выполнена, и что возвратило -1 и всякую такую белеберду.

Что я не так делаю? :mellow:

Прошу не смеятся сильно, поколение выросшее на Windows сами понимаете.

PS: Уважаемые модераторы, прошу прощения, но я помоему не туда запостил тему. Поздно увидел подраздел. Перенесите пожалуйста в нужный раздел. Спасибо! :rolleyes:
Знаешь, мне уже не важно!
Все не так уж важно....
Спасибо сказали:
Аватара пользователя
nesk
Сообщения: 2268
Статус: Линукссаксовец
ОС: MS Windows XP Home SP3

Re: Помогите UNIX-чайнику.

Сообщение nesk »

попробуйте честно набрать
gcc Ex1.с -o Ex1

и пожалуйста пишите дословный вывод сообщения об ошибке. :) а то не понятно ничего

тоесть всю ту "белеберду" которую Вам пишет система, пишите в сообщение, если такой "белеберды" много, то используйте теги типа codebox
Внимание: У меня под рукой нет машины с Linux. Я не использую эту ОС. Ответы я даю либо по памяти, либо мне помогает гугл. Тщательно читайте маны по тем командам и конфигурационным файлам, которые я упоминаю.

0xDEFEC8ED
Спасибо сказали:
Аватара пользователя
MumiyTroll2008
Сообщения: 28
ОС: WinXP + куча *nix-ов

Re: Помогите UNIX-чайнику.

Сообщение MumiyTroll2008 »

Дословно:

mt@mt -laptop ~/MyProg$ gcc Ex1.c -o Ex1
Ex1.c: В функции 'main'
Ex1.c: 7: предупреждение: incompatible implicat declaration or built-in function
'printf'
/usr/bin/ld: crt1.o: No such file or directory
collect2: выполенение ld завершилось с кодом возврата 1
mt@mt -laptop ~/MyProg$


Вот все дословно.
Знаешь, мне уже не важно!
Все не так уж важно....
Спасибо сказали:
Аватара пользователя
Voice
Сообщения: 1073
Статус: столлманист
ОС: Debian GNU/Linux

Re: Помогите UNIX-чайнику.

Сообщение Voice »

void main()

// Хм... у меня и без void проглотило. Не знал что так можно :)
"И может собственных Платонов и быстрых разумом Невтонов российская земля рождать."
М. В. Ломоносов
Спасибо сказали:
Nymin
Сообщения: 1095
Статус: -
ОС: GNU/Linux

Re: Помогите UNIX-чайнику.

Сообщение Nymin »

почитайте что нибудь кроме робачевского

у меня кстати и без void main() все скомпилилось
nymin@home:~$ gcc ex1.c -o ex1
nymin@home:~$ ./ex1
Hello World
Спасибо сказали:
andy128k
Сообщения: 28
ОС: GNU/Linux

Re: Помогите UNIX-чайнику.

Сообщение andy128k »

Voice писал(а):
16.07.2008 00:16
void main()


Это неправильно.
Спасибо сказали:
Аватара пользователя
nesk
Сообщения: 2268
Статус: Линукссаксовец
ОС: MS Windows XP Home SP3

Re: Помогите UNIX-чайнику.

Сообщение nesk »

кажись у вас просто не хватает программ для сборки
вы же одного CD систему ставили?
тут для ubuntu рекомендуют поставить
sudo apt-get install build-essential
ну не знаю :)

а Робачевский - хорошая книжка, очень рекомендую для ознакомления с UNIX вообще

Voice писал(а):
16.07.2008 00:16
void main()

// Хм... у меня и без void проглотило. Не знал что так можно :)

это в винде так, а в юникс система принято возвращать из майна - int :)

http://www.opennet.ru/docs/RUS/bogatyrev/gl_1.html
Внимание: У меня под рукой нет машины с Linux. Я не использую эту ОС. Ответы я даю либо по памяти, либо мне помогает гугл. Тщательно читайте маны по тем командам и конфигурационным файлам, которые я упоминаю.

0xDEFEC8ED
Спасибо сказали:
Аватара пользователя
MumiyTroll2008
Сообщения: 28
ОС: WinXP + куча *nix-ов

Re: Помогите UNIX-чайнику.

Сообщение MumiyTroll2008 »

Теперь что-то мой компилятор напроч с ума сошел выдает следующее ошибку

Ex1.c:1:19: error: stdio.h: No such file or directory.

А ниже опять предупеждения всякие.
Знаешь, мне уже не важно!
Все не так уж важно....
Спасибо сказали:
Nymin
Сообщения: 1095
Статус: -
ОС: GNU/Linux

Re: Помогите UNIX-чайнику.

Сообщение Nymin »

Не хочется вас огорчать, но с компилятором как раз все в порядке
sudo aptitude install build-essential
Спасибо сказали:
alfss
Сообщения: 262

Re: Помогите UNIX-чайнику.

Сообщение alfss »

мы что телепаты?
шяс подожди на волну твоего пк настроимся - файл гляним
Спасибо сказали:
Аватара пользователя
nesk
Сообщения: 2268
Статус: Линукссаксовец
ОС: MS Windows XP Home SP3

Re: Помогите UNIX-чайнику.

Сообщение nesk »

Nymin писал(а):
16.07.2008 00:37
Не хочется вас огорчать, но с компилятором как раз все в порядке
sudo aptitude install build-essential

вот только он это вряд ли поставит, у него ubuntu на виртуалке, а сеть он наверно даже и не настраивал, но эта уже другая история. Как говориться: одна тема - одна проблема.
Внимание: У меня под рукой нет машины с Linux. Я не использую эту ОС. Ответы я даю либо по памяти, либо мне помогает гугл. Тщательно читайте маны по тем командам и конфигурационным файлам, которые я упоминаю.

0xDEFEC8ED
Спасибо сказали:
Аватара пользователя
MumiyTroll2008
Сообщения: 28
ОС: WinXP + куча *nix-ов

Re: Помогите UNIX-чайнику.

Сообщение MumiyTroll2008 »

nesk писал(а):
16.07.2008 00:42
Nymin писал(а):
16.07.2008 00:37
Не хочется вас огорчать, но с компилятором как раз все в порядке
sudo aptitude install build-essential

вот только он это вряд ли поставит, у него ubuntu на виртуалке, а сеть он наверно даже и не настраивал, но эта уже другая история. Как говориться: одна тема - одна проблема.

Ну это сеть уже да, конечно не имеет отношения к теме сеть, будем разбиратся. Самое главное, причина понятна, что мне и нужно было. Я просто думал, что я что-то нитак делаю. А раз причина не в этом, то это гуд. Будем с сетью разбиратся и доводить до ума свою ось.

Спасибо огромное за помощь. :rolleyes:
Знаешь, мне уже не важно!
Все не так уж важно....
Спасибо сказали:
Olegator
Сообщения: 2493
ОС: SuseLinux 11.2 KDE 4.3

Re: Помогите UNIX-чайнику.

Сообщение Olegator »

есть книга - GCC. Полное руководство. Когда всё установите обратитесь к ней, там найдёте ответы на многие будущие ваши вопросы
Спасибо сказали:
Аватара пользователя
MumiyTroll2008
Сообщения: 28
ОС: WinXP + куча *nix-ов

Re: Помогите UNIX-чайнику.

Сообщение MumiyTroll2008 »

Olegator писал(а):
16.07.2008 10:45
есть книга - GCC. Полное руководство. Когда всё установите обратитесь к ней, там найдёте ответы на многие будущие ваши вопросы


Спасибо за рекомендацию. :rolleyes:
Знаешь, мне уже не важно!
Все не так уж важно....
Спасибо сказали:
Ardes
Сообщения: 50
ОС: Fedora Core GNU/Linux

Re: Помогите UNIX-чайнику.

Сообщение Ardes »

вы для компиляции вводили команду make?????
Спасибо сказали:
Аватара пользователя
nesk
Сообщения: 2268
Статус: Линукссаксовец
ОС: MS Windows XP Home SP3

Re: Помогите UNIX-чайнику.

Сообщение nesk »

Ardes писал(а):
16.07.2008 14:29
вы для компиляции вводили команду make?????

а в чем проблема? команда make прекрасно отрабатывает даже в отсутствие Makefile. Попробуйте. ;)

Olegator писал(а):
16.07.2008 10:45
есть книга - GCC. Полное руководство. Когда всё установите обратитесь к ней, там найдёте ответы на многие будущие ваши вопросы

не думаю что с этой книги стоит начинать знакомство с unix или знакомства с программирование под unix. фактически можно обойтись без этой книги вообще :)
но конечно чем больше книг прочтешь - тем лучше :)
Внимание: У меня под рукой нет машины с Linux. Я не использую эту ОС. Ответы я даю либо по памяти, либо мне помогает гугл. Тщательно читайте маны по тем командам и конфигурационным файлам, которые я упоминаю.

0xDEFEC8ED
Спасибо сказали:
Olegator
Сообщения: 2493
ОС: SuseLinux 11.2 KDE 4.3

Re: Помогите UNIX-чайнику.

Сообщение Olegator »

nesk писал(а):
16.07.2008 15:16
не думаю что с этой книги стоит начинать знакомство с unix или знакомства с программирование под unix. фактически можно обойтись без этой книги вообще

с этой книги стоит начинать знакомство с gcc :)
Спасибо сказали:
Аватара пользователя
MumiyTroll2008
Сообщения: 28
ОС: WinXP + куча *nix-ов

Re: Помогите UNIX-чайнику.

Сообщение MumiyTroll2008 »

Ну все я все скачал обновил, проги пошли без траблов, благодарю за помощь. :rolleyes:

Ну и еще на последок один нембольшой, но идиотский вопрос.

Вот я установил пакеты обновлений, при установке в терминале фигурировало gcc++!
Дак это получается я могу уже не только на плоском С, а на С++ писать, я правильно понял? :rolleyes:
Конечно изучать я систему на плоском С буду, на мой взгляд это полезнее для изучения UNIX, так как С это вообще ее родной язык. Но все же интересно про возможность работы на С++ стандартными средствами системы?

Да и вот еще что хотел спросить, если знаете то посоветуйте, есть ли для LINUX хоть какие-нибудь небольшие но редакторы исходников на С разумеется, ну например, чтобы отступы в теле блоков программ делались и таки штучки.
Я просто видел что-то подобное в менеджере пакетов, но какой и что лучшее я не знаю. Поэтому хочу спросить.
Знаешь, мне уже не важно!
Все не так уж важно....
Спасибо сказали:
Ardes
Сообщения: 50
ОС: Fedora Core GNU/Linux

Re: Помогите UNIX-чайнику.

Сообщение Ardes »

чтобы компилировать программы на си++ достаточно поставить компилятор G++.
Спасибо сказали:
Аватара пользователя
MumiyTroll2008
Сообщения: 28
ОС: WinXP + куча *nix-ов

Re: Помогите UNIX-чайнику.

Сообщение MumiyTroll2008 »

Ardes писал(а):
16.07.2008 16:13
чтобы компилировать программы на си++ достаточно поставить компилятор G++.

Понял, спасибо!
Знаешь, мне уже не важно!
Все не так уж важно....
Спасибо сказали:
Аватара пользователя
uptime
Сообщения: 1661
Статус: Drinker with computing problems
ОС: kubuntu 8.04

Re: Помогите UNIX-чайнику.

Сообщение uptime »

MumiyTroll2008 писал(а):
16.07.2008 16:08
...
Да и вот еще что хотел спросить, если знаете то посоветуйте, есть ли для LINUX хоть какие-нибудь небольшие но редакторы исходников на С разумеется, ну например, чтобы отступы в теле блоков программ делались и таки штучки.
...

Про редакторы тема холиварная, но если вы хорошо обучаетесь, начинайте сразу с vim. Там вам и отступы будут и расцвечивание и фолдинг и прочая автоматизация...

успехов
The answer, my friend, is blowin' in the wind.
The answer is blowin' in the wind.
Спасибо сказали:
Olegator
Сообщения: 2493
ОС: SuseLinux 11.2 KDE 4.3

Re: Помогите UNIX-чайнику.

Сообщение Olegator »

MumiyTroll2008 с вопросами связанными с компилятором gcc и опциями компилирования, отладки и т.д. обратитесь к книге которую я посоветовал. gcc это набор компиляторов различных языков - c, c++, ada, java. И что вы хотите откомпилировать он узнаёт либо по расширению файла, либо по настройке. например gcc hello.cpp и g++ hello.cpp и c++ hello.cpp это всё одно и тоже. Настройка g++ и с++ просто говорит компилятору что бы он перешёл в режим компиляции программ написанных на с++, а в первом случае он сам переходит в этот режим, так как у файла расширение .cpp
Спасибо сказали:
Ardes
Сообщения: 50
ОС: Fedora Core GNU/Linux

Re: Помогите UNIX-чайнику.

Сообщение Ardes »

Olegator писал(а):
16.07.2008 16:45
MumiyTroll2008 с вопросами связанными с компилятором gcc и опциями компилирования, отладки и т.д. обратитесь к книге которую я посоветовал. gcc это набор компиляторов различных языков - c, c++, ada, java. И что вы хотите откомпилировать он узнаёт либо по расширению файла, либо по настройке. например gcc hello.cpp и g++ hello.cpp и c++ hello.cpp это всё одно и тоже. Настройка g++ и с++ просто говорит компилятору что бы он перешёл в режим компиляции программ написанных на с++, а в первом случае он сам переходит в этот режим, так как у файла расширение .cpp

Неа! Я пробовал уже так компилировать. gcc не находит библиотек от си++.
Спасибо сказали:
Аватара пользователя
MumiyTroll2008
Сообщения: 28
ОС: WinXP + куча *nix-ов

Re: Помогите UNIX-чайнику.

Сообщение MumiyTroll2008 »

Ardes писал(а):
16.07.2008 16:55
Неа! Я пробовал уже так компилировать. gcc не находит библиотек от си++.

А я ради спортивного интереса тоже попробовал счас С++ прогу закинуть, причем туда напихал всякого и контейнеров STL и еще всякой всячины.
Что интересно команда gcc меня скажем мягко "отправила подальше" :crazy: , не смотря на расширение .cpp, а g++ сработала на ура и все скомпилила без траблов. :rolleyes:

В общем спасибо за неоценимую помощь всем еще раз. :rolleyes:
Знаешь, мне уже не важно!
Все не так уж важно....
Спасибо сказали:
Аватара пользователя
deninok
Сообщения: 585
Статус: Программист С++
ОС: Debian GNU/Linux

Re: Помогите UNIX-чайнику.

Сообщение deninok »

(nesk) писал(а):
(Voice) писал(а):void main()

// Хм... у меня и без void проглотило. Не знал что так можно :)

это в винде так, а в юникс система принято возвращать из майна - int :)

"Уж сколько раз твердили миру..." (С)
Друзья, операционная система здесь ни при чём. Стандартный С - он и в Африке стандартный С. Писать main() или void main() - это НЕправильно. Никогда так не пишите, это нарушение стандарта. А тот факт, что компилятор пропускает такой вариант - только в "минус" компилятору. Всегда пишите int main().

P.S. Кстати, если GCC вызывать с флагами -ansi и -pedantic, он никогда не пропустит main() или void main()...
Спасибо сказали:
MiK13
Сообщения: 1289
ОС: Linux Debian

Re: Помогите UNIX-чайнику.

Сообщение MiK13 »

deninok писал(а):
17.07.2008 10:46
"Уж сколько раз твердили миру..." (С)
Друзья, операционная система здесь ни при чём. Стандартный С - он и в Африке стандартный С. Писать main() или void main() - это НЕправильно. Никогда так не пишите, это нарушение стандарта. А тот факт, что компилятор пропускает такой вариант - только в "минус" компилятору. Всегда пишите int main().

P.S. Кстати, если GCC вызывать с флагами -ansi и -pedantic, он никогда не пропустит main() или void main()...

Код: Выделить всё

mik13@mishak:~/Prog$ cat p0.c
#include <stdio.h>
main() {
  printf("Hello\n");
}
mik13@mishak:~/Prog$ gcc -ansi -pedantic p0.c -o p0
mik13@mishak:~/Prog$

Никаких сообщений об об ошибке

Код: Выделить всё

mik13@mishak:~/Prog$ cat p1.c
#include <stdio.h>
void main() {
  printf("Hello\n");
}
mik13@mishak:~/Prog$ gcc -ansi -pedantic p1.c -o p1
p1.c: In function 'main':
p1.c:2: warning: return type of 'main' is not 'int'
mik13@mishak:~/Prog$

На сколько я знаю, тип int являктся дефолтным, т.е. подразумевается, если не указан никакой другой тип.
Поэтому вид main() без добавочного int может быть и корректным
Спасибо сказали:
Аватара пользователя
whirlwind
Сообщения: 67

Re: Помогите UNIX-чайнику.

Сообщение whirlwind »

MiK13 писал(а):
23.07.2008 14:19
На сколько я знаю, тип int являктся дефолтным, т.е. подразумевается, если не указан никакой другой тип.
Поэтому вид main() без добавочного int может быть и корректным

меня вот уже ткнули добрые люди в стандарт:
An implementation shall not predefine the main function. This function shall not be overloaded. It shall have a return type of type int, but otherwise its type is implementation-defined. All implementations shall allow both of the following definitions of main:
int main() { /* ... */ }
and
int main(int argc, char* argv[]) { /* ... */ }

мое знание английского не позволяет постигнуть всю глубину фразы, выделенной жирным :) тем не менее, я так понимаю, писать что-то отличное от указанного не стоит
Добро всегда побеждает зло. Мы победили, значит мы - добро.
Спасибо сказали:
Аватара пользователя
deninok
Сообщения: 585
Статус: Программист С++
ОС: Debian GNU/Linux

Re: Помогите UNIX-чайнику.

Сообщение deninok »

(MiK13) писал(а):На сколько я знаю, тип int являктся дефолтным, т.е. подразумевается, если не указан никакой другой тип.
Поэтому вид main() без добавочного int может быть и корректным

Действительно, без явного указания типа возвращаемого функцией значения он трактовался как int (причём это относилось к любой функции, а не только к int main()). Но это было раньше, до введения стандарта С99. Теперь это ошибка.
Спасибо сказали:
Аватара пользователя
deninok
Сообщения: 585
Статус: Программист С++
ОС: Debian GNU/Linux

Re: Помогите UNIX-чайнику.

Сообщение deninok »

(whirlwind) писал(а):
It shall have a return type of type int, but otherwise its type is implementation-defined. All implementations shall allow both of the following definitions of main:
int main() { /* ... */ }
and
int main(int argc, char* argv[]) { /* ... */ }

мое знание английского не позволяет постигнуть всю глубину фразы, выделенной жирным :) тем не менее, я так понимаю, писать что-то отличное от указанного не стоит

Фразу можно перевести примерно так:
"Тип возвращаемого ею (функцией main) значения должен быть int, однако он, строго говоря, зависит от реализации. Все реализации должны поддерживать следующие два определения функции main:
int main() { /* ... */ }
and
int main(int argc, char* argv[]) { /* ... */ }"
Спасибо сказали:
Аватара пользователя
deninok
Сообщения: 585
Статус: Программист С++
ОС: Debian GNU/Linux

Re: Помогите UNIX-чайнику.

Сообщение deninok »

(MiK13) писал(а):
(deninok) писал(а):P.S. Кстати, если GCC вызывать с флагами -ansi и -pedantic, он никогда не пропустит main() или void main()...

Код: Выделить всё

mik13@mishak:~/Prog$ cat p0.c
#include <stdio.h>
main() {
  printf("Hello\n");
}
mik13@mishak:~/Prog$ gcc -ansi -pedantic p0.c -o p0
mik13@mishak:~/Prog$

Никаких сообщений об об ошибке

Не знаю, какая версия GCC у вас, у меня 4.3.1., и я проверял запуск с main() или void main() с указанными флагами. В обоих случаях компилятор выдавал ошибку (соответственно)
1. ISO C++ forbids declaration of ‘main’ with no type
2. ‘::main’ must return ‘int’

Я подчёркиваю: компилятор выдавал ошибку (error), а не предупреждение.
Спасибо сказали: