Компилятор gcc

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

chernogoloff
Сообщения: 6
ОС: ALT Linux

Компилятор gcc

Сообщение chernogoloff »

Решил написать свою первую программу на Linux, как пологается Hello World! А компилятор мне говорит "нет такого файла" хотя файл есть... ну маразм какой - то... я вроде не настолько туп, хоть и с линуксом недавно знаком... Стоит ALT Linux 4.0
Файл ../hello/hello.c находясь в каталоге hello на команду gcc hello.c получаю ответ No such file or directory... Заранее спасибо, если кто нибудь найдет минутку чтобы меня просветить...
Спасибо сказали:
Аватара пользователя
deninok
Сообщения: 585
Статус: Программист С++
ОС: Debian GNU/Linux

Re: Компилятор gcc

Сообщение deninok »

Исходный код в студию!
Спасибо сказали:
chernogoloff
Сообщения: 6
ОС: ALT Linux

Re: Компилятор gcc

Сообщение chernogoloff »

#include <stdio.h>

int main(void)

{

printf("Hello world!\n");

return(0);

}
взято с http://linuxcenter.ru/lib/books/linuxdev/linuxdev1.phtml
Спасибо сказали:
Аватара пользователя
serzh-z
Бывший модератор
Сообщения: 8259
Статус: Маньяк
ОС: Arch, Fedora, Ubuntu

Re: Компилятор gcc

Сообщение serzh-z »

chernogoloff писал(а):
09.06.2008 10:23
получаю ответ No such file or directory...
Полный вывод компилятора, плз.
Спасибо сказали:
chernogoloff
Сообщения: 6
ОС: ALT Linux

Re: Компилятор gcc

Сообщение chernogoloff »

/usr/bin/i586-alt-linux-gcc: No such file or directory
Спасибо сказали:
Аватара пользователя
serzh-z
Бывший модератор
Сообщения: 8259
Статус: Маньяк
ОС: Arch, Fedora, Ubuntu

Re: Компилятор gcc

Сообщение serzh-z »

chernogoloff писал(а):
09.06.2008 12:18
/usr/bin/i586-alt-linux-gcc: No such file or directory

Вероятно это относится к невозможности найти какие-то компоненты компилятора.

При попытке указать неверное имя исходника, gcc (по-крайней мере доступный мне 3.4.4) сообщает буквально следующее:
$ gcc nofile.c
gcc: nofile.c: No such file or directory
gcc: no input files
Спасибо сказали:
chernogoloff
Сообщения: 6
ОС: ALT Linux

Re: Компилятор gcc

Сообщение chernogoloff »

Доехал... ему видно нечем компилировать... я не тот файл искал. Спасибо большое!
Спасибо сказали:
facultative
Сообщения: 1

Re: Компилятор gcc

Сообщение facultative »

скорее всего не задал файл
синтаксис для gcc: gcc -o hello hello.c
Спасибо сказали:
mikluxo
Сообщения: 283
ОС: Slackware 12.2

Re: Компилятор gcc

Сообщение mikluxo »

Господа, раз есть уже топик про gcc, не стал новый открывать.
у меня есть допустим программа на С
компилю

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

gcc -S somefile.c

Дальше я посмотрел на ассемблерный код.
Теперь вопрос. А как этот ассемблерный код откомпилить в бинарник?
Пытался с

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

as somefile.S

получается a.out без возможности запуска(-x) делаю

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

chmod +x a.out

но запустить не могу все равно, говорит что это не бинарник.
Пытаюсь сделать так:

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

as -osomefile.o somefile.S

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

ld somefile.o

линкер дает ошибку, мол нет такой метки _start
Полазил по коду, действительно там определяется функция main. Компилить не хочет. Может кто сталкивался с сией проблемой. Очень уж хочется поэкспериментировать с ассемблером в unix
Ich weiss, dass ich nichts weiss, aber wissen Sie es auch?
Завистники на что не взглянут,
подымут вечно лай,
А ты себе своей дорогою ступай,
Полают, да отстанут. Крылов
Спасибо сказали:
Аватара пользователя
drBatty
Сообщения: 8735
Статус: GPG ID: 4DFBD1D6 дом горит, козёл не видит...
ОС: Slackware-current

Re: Компилятор gcc

Сообщение drBatty »

mikluxo блин... причём тут линкер-ассемблер??? вы хоть с Си разберитесь. Год назад уже писал, повторю:

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

[drb@localhost ~]$ cat > test.c
#include <stdio.h>
int main()
{
printf("hello, lammers\n");
return 0;
}
#тут я нажал CTRL+D
[drb@localhost ~]$ gcc test.c
[drb@localhost ~]$ ./a.out
hello, lammers
[drb@localhost ~]$

всё у меня запускается и работает.
Удачи.
http://emulek.blogspot.ru/ Windows Must Die
Учебник по sed зеркало в github

Скоро придёт
Осень
Спасибо сказали:
WhiteEvGenius
Сообщения: 2

Re: Компилятор gcc

Сообщение WhiteEvGenius »

Здравствуйте. Получил в универе задание написать несколько программ на С GCC, но так как пока мало знаком с этим компилятором и и языком C, то прошу у вас помощи.
1-ая прога должна визуализировать процесс сортировки символов методом обмена.
2-ая - это простейший сервер, который на запрос клиента возвращает список процессов.

Помогите, пожалуйста, кто чем может :)
Спасибо сказали:
Аватара пользователя
RasenHerz
Сообщения: 1341
ОС: Arch Linux amd64

Re: Компилятор gcc

Сообщение RasenHerz »

запрос готовых решений не приветствуется. пишите программы сами, а будут конкретные вопросы - вам здесь помогут.
WhiteEvGenius писал(а):
28.11.2008 10:42
Получил в универе задание написать несколько программ на С GCC, но так как пока мало знаком с этим компилятором и и языком C, то прошу у вас помощи.

вот так вот неожиданно и получил, учился-учился в медицинском, а тут на вам - пишите программы! так что ли? видно плохо учился.
Спасибо сказали:
mikluxo
Сообщения: 283
ОС: Slackware 12.2

Re: Компилятор gcc

Сообщение mikluxo »

drBatty Я Вас попрошу относиться уважительнее к другим участникам форума. С С++/C я сам как-нибудь без Вас разберусь. Мне нужно из C перевести в asm а потом этот же исходный код через ld перевести в a.out Проблема в том. Что когда пишешь прогу на С, он компилит .S файл
В котором Entry point main
А линкер ищет _start :(
Так решение еще и не нашел. Помогите добрые люди. В принципе пока не очень надо. Но очень хочется поковырять код, который создает gcc.
Моя задача поковырять *.S потом отлинковать и посмотреть как работает. Напрямую gcc -oHello hello.c мне не нужен.
Ich weiss, dass ich nichts weiss, aber wissen Sie es auch?
Завистники на что не взглянут,
подымут вечно лай,
А ты себе своей дорогою ступай,
Полают, да отстанут. Крылов
Спасибо сказали:
WhiteEvGenius
Сообщения: 2

Re: Компилятор gcc

Сообщение WhiteEvGenius »

Учиться, товарищ RasenHerz, я только начал. К тому же про готовые решения речи не шло. Я и сам хочу научиться писать программы. Я просто не до конца понимаю, что от меня требуется. Вот и подумал, возможно, кто-то объяснит или литературу какую-нибудь посоветует.
Спасибо сказали:
mikluxo
Сообщения: 283
ОС: Slackware 12.2

Re: Компилятор gcc

Сообщение mikluxo »

WhiteEvGenius Ваш 2й вопрос Вам под UNIX, или под windows[о qt пока речь не идет]? Вообще, второй вопрос затрагивает работу с сетью. Если бы Вы делали на Java, тогда можно было бы не заморачиваться, на какой ОС делать. Во вторых, как сортировка, которую Вы указали, работает знаете? Это InsertionSort или BubbleSort или еще что?

ЗЫ По моему Вам нужно почитать Deitel С How to program или на русском Как программировать на С. И еще, этот вопрос не в том топике задан. Нужно создавать отдельный.

в [] указано, что новичкам читать не надо.
Ich weiss, dass ich nichts weiss, aber wissen Sie es auch?
Завистники на что не взглянут,
подымут вечно лай,
А ты себе своей дорогою ступай,
Полают, да отстанут. Крылов
Спасибо сказали:
Аватара пользователя
Олег777
Сообщения: 238
Статус: зануда
ОС: Чё?

Re: Компилятор gcc

Сообщение Олег777 »

mikluxo писал(а):
28.11.2008 10:57
drBatty Я Вас попрошу относиться уважительнее к другим участникам форума. С С++/C я сам как-нибудь без Вас разберусь. Мне нужно из C перевести в asm а потом этот же исходный код через ld перевести в a.out Проблема в том. Что когда пишешь прогу на С, он компилит .S файл
В котором Entry point main
А линкер ищет _start :(
Так решение еще и не нашел. Помогите добрые люди. В принципе пока не очень надо. Но очень хочется поковырять код, который создает gcc.
Моя задача поковырять *.S потом отлинковать и посмотреть как работает. Напрямую gcc -oHello hello.c мне не нужен.

Я не совсем понял, что вы хотите, но сходите сюда и внимательно прочтите верхние две темы (как происходит компиляция)
Уверен, все разьяснится.
Читайте новости на ЛОРе
Спички - детям!
Спасибо сказали:
Аватара пользователя
RasenHerz
Сообщения: 1341
ОС: Arch Linux amd64

Re: Компилятор gcc

Сообщение RasenHerz »

mikluxo писал(а):
28.11.2008 10:57
drBatty Я Вас попрошу относиться уважительнее к другим участникам форума. С С++/C я сам как-нибудь без Вас разберусь. Мне нужно из C перевести в asm а потом этот же исходный код через ld перевести в a.out Проблема в том. Что когда пишешь прогу на С, он компилит .S файл
В котором Entry point main
А линкер ищет _start :(
Так решение еще и не нашел. Помогите добрые люди. В принципе пока не очень надо. Но очень хочется поковырять код, который создает gcc.
Моя задача поковырять *.S потом отлинковать и посмотреть как работает. Напрямую gcc -oHello hello.c мне не нужен.


а изменить main на _start? =)
Спасибо сказали:
mikluxo
Сообщения: 283
ОС: Slackware 12.2

Re: Компилятор gcc

Сообщение mikluxo »

Олег777 писал(а):
28.11.2008 15:56
Я не совсем понял, что вы хотите, но сходите сюда и внимательно прочтите верхние две темы (как происходит компиляция)
Уверен, все разьяснится.

Спасибо за ссылку, очень интересный материал там подобран. Добавил в избранное. Может еще не раз вернусь к нему.
RasenHerz писал(а):
28.11.2008 16:35
а изменить main на _start? =)

Хотелось бы автоматом(ведь как-то он с С файла переводит сам), но пока и так сойдет. Спасибо за совет.
Ich weiss, dass ich nichts weiss, aber wissen Sie es auch?
Завистники на что не взглянут,
подымут вечно лай,
А ты себе своей дорогою ступай,
Полают, да отстанут. Крылов
Спасибо сказали:
Аватара пользователя
Portnov
Модератор
Сообщения: 1786
Статус: Матёрый линуксоид
ОС: Debian testing/unstable

Re: Компилятор gcc

Сообщение Portnov »

Когда 'он' (компилятор) собирает вашу программу, он к *.o, полученным из ваших исходников, добавляет ещё объектник C Runtime (что-то-там-crt.o). В нём и определена функция _start, которая вызывает main.
Работа: Ubuntu 9.10
Дом: Debian testing/unstable и на всякий случай winxp в virtualbox.
Для разнообразия: моя домашняя страница -http://iportnov.ru
Спасибо сказали:
mikluxo
Сообщения: 283
ОС: Slackware 12.2

Re: Компилятор gcc

Сообщение mikluxo »

Portnov писал(а):
28.11.2008 18:41
Когда 'он' (компилятор) собирает вашу программу, он к *.o, полученным из ваших исходников, добавляет ещё объектник C Runtime (что-то-там-crt.o). В нём и определена функция _start, которая вызывает main.

Очень интересно, а Вы не знаете, где про это можно почитать более подробно? Ну должен же быть способ без перередактирования асм файла откомпилить на as и слинковать с ld? Заранее спасибо.
Ich weiss, dass ich nichts weiss, aber wissen Sie es auch?
Завистники на что не взглянут,
подымут вечно лай,
А ты себе своей дорогою ступай,
Полают, да отстанут. Крылов
Спасибо сказали:
Аватара пользователя
Олег777
Сообщения: 238
Статус: зануда
ОС: Чё?

Re: Компилятор gcc

Сообщение Олег777 »

Собственно

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

bin$ gcc -S shet.c
bin$ ls
shet.c shet.s
bin$ gcc shet.s -o shet
bin$ ls
  shet.c   shet  shet.s

Или все таки надо as и ld?
Спички - детям!
Спасибо сказали:
mikluxo
Сообщения: 283
ОС: Slackware 12.2

Re: Компилятор gcc

Сообщение mikluxo »

Олег777 писал(а):
30.11.2008 10:34
Или все таки надо as и ld?

Как раз то, что надо. Хотел поэкспериментировать с asm AT&T синтаксиса, посмотреть как код компилит, изменить что-нибудь, перекомпилить, ну теперь займусь ковырянием. Спасибо большое!!!
Ich weiss, dass ich nichts weiss, aber wissen Sie es auch?
Завистники на что не взглянут,
подымут вечно лай,
А ты себе своей дорогою ступай,
Полают, да отстанут. Крылов
Спасибо сказали:
Аватара пользователя
Fen1x
Сообщения: 174
Статус: начинающий пингвин
ОС: Arch/Slackware

Re: Компилятор gcc

Сообщение Fen1x »

Вопрос такой, есть простой код:

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

bash-3.1$ cat hello.cpp
#include <iostream>
int main()
{
    std::cout << "Hello World";
    return 0;

    }

компилирую:

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

bash-3.1$ g++-gcc-4.2.4 hello.cpp
bash-3.1$

Почему при компиляции не выводиться фраза "Hello World" ?
Arch user | Kernel 2.6.32 |
"Краткость - сестра таланта" (с) А.П. Чехов |
Спасибо сказали:
Аватара пользователя
AestheteAnimus
Сообщения: 135
ОС: FreeBSD 8.0-RELEASE amd64

Re: Компилятор gcc

Сообщение AestheteAnimus »

Fen1x писал(а):
09.01.2009 15:51

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

bash-3.1$ g++-gcc-4.2.4 hello.cpp

Хм... А не поясните, что Вы вообще ожидали от столь странной строчки?
Спасибо сказали:
Аватара пользователя
Fen1x
Сообщения: 174
Статус: начинающий пингвин
ОС: Arch/Slackware

Re: Компилятор gcc

Сообщение Fen1x »

AestheteAnimus писал(а):
09.01.2009 15:57
Хм... А не поясните, что Вы вообще ожидали от столь странной строчки?

Раньше именно так *.cpp файлы и компилировал. Если компилировать g++ hello.cpp итог будет тот же.
Arch user | Kernel 2.6.32 |
"Краткость - сестра таланта" (с) А.П. Чехов |
Спасибо сказали:
Аватара пользователя
AestheteAnimus
Сообщения: 135
ОС: FreeBSD 8.0-RELEASE amd64

Re: Компилятор gcc

Сообщение AestheteAnimus »

Fen1x писал(а):
09.01.2009 17:03
Раньше именно так *.cpp файлы и компилировал. Если компилировать g++ hello.cpp итог будет тот же.

Интересно... и где же нашли такую забавную строчку?
Вообще, обычно это выглядит так:

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

# Компиляция
g++ -c main.cpp
# Линковка
g++ -o main main.o
Спасибо сказали:
Аватара пользователя
Fen1x
Сообщения: 174
Статус: начинающий пингвин
ОС: Arch/Slackware

Re: Компилятор gcc

Сообщение Fen1x »

AestheteAnimus писал(а):
09.01.2009 17:31
Интересно... и где же нашли такую забавную строчку?

Из консоли

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

bash-3.1$ g++
g++            g++-gcc-4.2.4

AestheteAnimus писал(а):
09.01.2009 17:31
# Компиляция
g++ -c main.cpp

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

bash-3.1$ g++ -с hello.cpp
g++: unrecognized option '-с'

Так и должно быть ?
Arch user | Kernel 2.6.32 |
"Краткость - сестра таланта" (с) А.П. Чехов |
Спасибо сказали:
Аватара пользователя
AestheteAnimus
Сообщения: 135
ОС: FreeBSD 8.0-RELEASE amd64

Re: Компилятор gcc

Сообщение AestheteAnimus »

Fen1x писал(а):
09.01.2009 17:42
Так и должно быть ?

Нет, не должно так быть. А теперь включите нужную раскладку и перепишите заново! :angry:
Спасибо сказали:
Аватара пользователя
Fen1x
Сообщения: 174
Статус: начинающий пингвин
ОС: Arch/Slackware

Re: Компилятор gcc

Сообщение Fen1x »

AestheteAnimus все, разобрался, благодарю.
Arch user | Kernel 2.6.32 |
"Краткость - сестра таланта" (с) А.П. Чехов |
Спасибо сказали:
Аватара пользователя
Фантом
Сообщения: 460
ОС: openSUSE

Re: Компилятор gcc

Сообщение Фантом »

Fen1x писал(а):
09.01.2009 15:51
Вопрос такой, есть простой код:

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

bash-3.1$ cat hello.cpp
#include <iostream>
int main()
{
    std::cout << "Hello World";
    return 0;

    }

компилирую:

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

bash-3.1$ g++-gcc-4.2.4 hello.cpp
bash-3.1$

Почему при компиляции не выводиться фраза "Hello World" ?


Хм... интересно, а почему эта строчка должна выводиться при компиляции? Может быть, я чего-то не понимаю?
Спасибо сказали: