"hello,world" gcc Азы - подтолкните, pls

Для новичков как вообще в Linux, так и в конкретной теме, к которой относится вопрос.

Модератор: Bizdelnick

BlockAdA
Сообщения: 6

"hello,world" gcc Азы - подтолкните, pls

Сообщение BlockAdA »

сразу прошу прощения за потраченное время, но очень хочется понять (сама пыталась, но методом тыка, ничего не зная, это у меня возьмёт ооочень много времени :) )
ориентируясь на вот это : http://www.linuxfocus.org/Russian/March2002/article229.shtml
вот захотелось попробовать...
создала этот "hello,world" и сохранила как file.c на desktop (а какая разница где?..) и попробовала с terminal gcc -o file file.c вобщем всё как написано..., а он мне :
gcc: file.c no such file or directory
gcc: no input files

это он за что меня так?
может кто не поленится намекнуть где я ошиблась ( не с того начала, не туда сунулась, что-то пропустила, упустила (эт 100%)... и т.д. и т.п. обидно..)
Спасибо сказали:
Аватара пользователя
eduard_pustobaev
Сообщения: 2629
Статус: Ленивец
ОС: Arch/Debian.

Re: "hello,world" gcc Азы - подтолкните, pls

Сообщение eduard_pustobaev »

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

cd ~/Desktop
gcc file.c -o flie
В дисгармонии со вселенной.
Спасибо сказали:
Аватара пользователя
Dudraug
Сообщения: 313
ОС: Debian lenny/sid

Re: "hello,world" gcc Азы - подтолкните, pls

Сообщение Dudraug »

1) Вы должны быть в директории с файлом
2) проверьте есть ли файл file.c
3) gcc file.c -o file Может так
P4-3.0, ASUS P5GD1, 1024MB OЗУ, GeForce 6600GT
Спасибо сказали:
sergio
Сообщения: 436
Статус: Интересующийся новичок
ОС: Debian GNU/Linux 4 & 5

Re: "hello,world" gcc Азы - подтолкните, pls

Сообщение sergio »

BlockAdA писал(а):
18.08.2007 00:48
с terminal gcc -o file file.c вобщем всё как написано..., а он мне :
gcc: file.c no such file or directory
gcc: no input files


Терминал по-идее запускается с вашим стартовым каталогом (обычно это домашний каталог) в качестве текущей рабочей директории. В нем, вероятно лежит папочка Desktop. Файлы, которые "сохраняете на десктоп" должны быть в той папочке. А вы не в ней, поэтому и не находит.
Можно даже так запускаться:

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

gcc file.c

тогда скомпилированный бинарник будет обозван a.out (если a.out уже был - то новый затрет старый). Если так, как у вас написано - то file, соответственно.
Да, предвидя следующую проблему :tongue: - запустить скомплированное из того же терминала можно так:

или

- смотря как обозвали. С точкой и слэшем спереди.

ЗЫ: здесь есть форум программирование для начинающих - Программирование для начинающих
Debian GNU/Linux 4 -- AMD Athlon64 3000+ / Asus 7600GS -- Gnome
Debian GNU/Linux 5 -- Dell (Vostro) 500 (Celeron M560 / iGM965) -- Gnome
Спасибо сказали:
BlockAdA
Сообщения: 6

Re: "hello,world" gcc Азы - подтолкните, pls

Сообщение BlockAdA »

конфуз-то какой... (вот научили в visual studio кнопки нажимать как обезьяну, а чтоб ручками, да с командной строки...)
эту ошибку поняла (ребята, СПАСИБО), но дальше-то страшнее стало. Теперь он ошибки выдаёт (это в трёх-то строках кода :) ) Что не так с stdio.h? или к нему я тоже должна путь указывать?? так я привыкла, что достаточно про него просто помнить..

filec.c:2:19: error: stdio.h: No such file or directory
filec.c: In function ‘main’:
filec.c:4: warning: incompatible implicit declaration of built-in function ‘printf’
filec.c:3: warning: return type of ‘main’ is not ‘int’


sergio писал(а):
18.08.2007 09:26
ЗЫ: здесь есть форум программирование для начинающих - Программирование для начинающих


спасибо, побежала туда :) авось, научусь чему..
Спасибо сказали:
sergio
Сообщения: 436
Статус: Интересующийся новичок
ОС: Debian GNU/Linux 4 & 5

Re: "hello,world" gcc Азы - подтолкните, pls

Сообщение sergio »

BlockAdA писал(а):
18.08.2007 16:48
Теперь он ошибки выдаёт (это в трёх-то строках кода :) ) Что не так с stdio.h? или к нему я тоже должна путь указывать?? так я привыкла, что достаточно про него просто помнить..

filec.c:2:19: error: stdio.h: No such file or directory
filec.c: In function ‘main’:
filec.c:4: warning: incompatible implicit declaration of built-in function ‘printf’
filec.c:3: warning: return type of ‘main’ is not ‘int’

"Код в студию", как говорицо.
Пока могу только пальцем в небо:

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

#include "stdio.h"

написали вместо

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

#include <stdio.h>

?
Первый ворнинг возможно из-за ненайденного стдио.х.
Второй ворнинг - мэйн у вас что-то не то возращает - gcc это пропускает с ворнингом, поскольку по-умолчанию работает в старом стандарте и пыжится обеспечить совместимость с доисторическим кодом.

Таки код в студию, чего гадать-то.
Debian GNU/Linux 4 -- AMD Athlon64 3000+ / Asus 7600GS -- Gnome
Debian GNU/Linux 5 -- Dell (Vostro) 500 (Celeron M560 / iGM965) -- Gnome
Спасибо сказали:
Аватара пользователя
arkhnchul
Сообщения: 2284
Статус: Толчковый инженер
ОС: Debian, Fedora

Re: "hello,world" gcc Азы - подтолкните, pls

Сообщение arkhnchul »

надо еще stdlib.h подключать...
Losing is fun!
Спасибо сказали:
Аватара пользователя
Uncle_Theodore
Сообщения: 3339
ОС: Slackware 12.2, ArchLinux 64

Re: "hello,world" gcc Азы - подтолкните, pls

Сообщение Uncle_Theodore »

Arkhnchul писал(а):
18.08.2007 19:00
надо еще stdlib.h подключать...

Не надо stdlib подключать.
Если скопировали код с вебсайта, возможно, у Вас не установлены заголовки и библиотеки gcc. Какой у Вас дистрибутив?
Спасибо сказали:
BlockAdA
Сообщения: 6

Re: "hello,world" gcc Азы - подтолкните, pls

Сообщение BlockAdA »

код не копировала, написала в текст.редакторе, сохранила .c
дистрибутив... Ubuntu ? это имеется в виду?
код..да какой там код :
#include<stdio.h>
void main() {
printf("hi, how are you?");
}
понятно, что void на int и return 0; . но меня-то пугало, что он stdio.h не находит.

но БАНЗАЙ!!
посоветовали apt-get install libc6-dev (это и называется : установить заголовки и библиотеки gcc ?) и после пары часов мучений я увидела результат трудов моих : "hi, how are you?" в качестве input на мой экран. Нет предела радости моей :)
теперь - Кернигана с начала, но уже в Linux.
Ребята, спасибо. Вы меня вдохновили. :)


Arkhnchul писал(а):
18.08.2007 19:00
надо еще stdlib.h подключать...


ну да, а зачем он здесь? эт лишнее
Спасибо сказали:
Аватара пользователя
arkhnchul
Сообщения: 2284
Статус: Толчковый инженер
ОС: Debian, Fedora

Re: "hello,world" gcc Азы - подтолкните, pls

Сообщение arkhnchul »

та фиг знает зачем, у меня без него ругался.
Losing is fun!
Спасибо сказали:
BlockAdA
Сообщения: 6

Re: "hello,world" gcc Азы - подтолкните, pls

Сообщение BlockAdA »

Arkhnchul писал(а):
18.08.2007 21:26
та фиг знает зачем, у меня без него ругался.


:)
Спасибо сказали:
sergio
Сообщения: 436
Статус: Интересующийся новичок
ОС: Debian GNU/Linux 4 & 5

Re: "hello,world" gcc Азы - подтолкните, pls

Сообщение sergio »

BlockAdA писал(а):
18.08.2007 20:38
libc6-dev (это и называется : установить заголовки и библиотеки gcc ?)

Скорее это назвается "довесок к libc, который нужен тому кто собрался DEVeloperить с участием libc". Тому, кто просто пользует приложения завязанные на библиотеку - довесок не нужен, им одной libc6 хватит.
(А мне вот мысль, что может стоять компилятор си и при этом не стоять стандартных заголовков к нему - показалась бредовой. Оказывается - зря. :happy: )
Debian GNU/Linux 4 -- AMD Athlon64 3000+ / Asus 7600GS -- Gnome
Debian GNU/Linux 5 -- Dell (Vostro) 500 (Celeron M560 / iGM965) -- Gnome
Спасибо сказали:
BlockAdA
Сообщения: 6

Re: "hello,world" gcc Азы - подтолкните, pls

Сообщение BlockAdA »

sergio писал(а):
18.08.2007 22:08
BlockAdA писал(а):
18.08.2007 20:38
libc6-dev (это и называется : установить заголовки и библиотеки gcc ?)

Скорее это назвается "довесок к libc, который нужен тому кто собрался DEVeloperить с участием libc". Тому, кто просто пользует приложения завязанные на библиотеку - довесок не нужен, им одной libc6 хватит.
(А мне вот мысль, что может стоять компилятор си и при этом не стоять стандартных заголовков к нему - показалась бредовой. Оказывается - зря. :happy: )


так вот и мне это так казалось (но кто я? в линуксах )
но мы - молодцы :)
Спасибо сказали:
Andrew S
Сообщения: 225
Статус: экспериментатор
ОС: Conrad-Gentoo

Re: "hello,world" gcc Азы - подтолкните, pls

Сообщение Andrew S »

BlockAdA писал(а):
18.08.2007 20:38
#include<stdio.h>
void main() {
printf("hi, how are you?");
}

Еще пара замечаний:
1. Надо ставить пробел после #include
2. printf("hi, how are you?\n");
Иначе строка не отобразится, т.к. линукс буферизует выводимые на экран символы и отображает их только в момент перевода строки
Спасибо сказали:
Аватара пользователя
slasher
Сообщения: 92
ОС: Arch

Re: "hello,world" gcc Азы - подтолкните, pls

Сообщение slasher »

а почему бы не писать
#include <stdio.h>
int main(){
printf("hi, how are you?\n");
return 0;
}
?
это продолжая замечания от Andrew S ;)
P.S Сорри, не заметил.
Today would be a good day to DIE.
Спасибо сказали:
sergio
Сообщения: 436
Статус: Интересующийся новичок
ОС: Debian GNU/Linux 4 & 5

Re: "hello,world" gcc Азы - подтолкните, pls

Сообщение sergio »

Andrew S писал(а):
18.08.2007 22:22
Иначе строка не отобразится, т.к. линукс буферизует выводимые на экран символы и отображает их только в момент перевода строки

При завершении (штатном, не аборт) работы приложения библиотека должна флэшануть потоки... мне казалось, что она это где-то обещала. :rolleyes: Так что все же отобразится. Но в целом по делу.

2 BlockAdA: или flush-нуть stdout можно, если перевод строки не нужен, а вытолкнуть из буфера надо сразу...

что может стоять компилятор си и при этом не стоять стандартных заголовков к нему -

В этом тоже есть своя логика - заголовки относятся к библиотеке... хоть она и стандартная для си, но все ж ее можно поменять. На другую версию, хотя б. =)

UPDATE: libc6-dev есть у gcc в списке "рекомедованных пакетов".
Их кажется aptitude предлагает поставить по-умолчанию, а apt-get не предлагает, там надо для этого ключи указывать...
Debian GNU/Linux 4 -- AMD Athlon64 3000+ / Asus 7600GS -- Gnome
Debian GNU/Linux 5 -- Dell (Vostro) 500 (Celeron M560 / iGM965) -- Gnome
Спасибо сказали:
BlockAdA
Сообщения: 6

Re: "hello,world" gcc Азы - подтолкните, pls

Сообщение BlockAdA »

ребята, я согласна, что писАть надо красиво, но не до такой же степени :)
всё прекрасно работает. без \n просто приглашение стоит сразу за output, но результат-то тот же. в данном случае не принципиально :)

....flush ... чёй-то знакомо звучит, но не припомню... завтра посмотрю :)

хватит на сегодня, баиньки пора :)
Спасибо сказали: