31 (23.07.2011 18:48:15 отредактировано gramozeka)

MONSTER-XAKER пишет:

Что я не так делаю  sad

Читаешь вестимо  :lol: ...

man gcc

 Консоль:

user@host:~/ПроектыС/hello-word$ gcc hello-word.c -o hello-word.exe
user@host:~/ПроектыС/hello-word$ ./hello-word.exe
Hello world!

gcc --help пишет:

Синтаксис: gcc [ключи] файл...
Ключи:
  -pass-exit-codes         Выход с максимальным кодом возврата от прохода
  --help                   Вывести этот текст
  --target-help            Показать специфические ключи целевой платформы
  --help={target|optimizers|warnings|params|[^]{joined|separate|undocumented}}[,...]
                           Показать специфические ключи командной строки
  (Задайте '-v --help' для вывода ключей всех проходов компиляции)
  --version                Display compiler version information
  -dumpspecs               Показать встроенные спецификации
  -dumpversion             Показать версию компилятора
  -dumpmachine             Показать имя целевой платформы
  -print-search-dirs       Показать каталоги поиска
  -print-libgcc-file-name  Показать имя run-time библиотеки компилятора
  -print-file-name=<биб>   Показать полное маршрутное имя библиотеки <биб>
  -print-prog-name=<прог>  Показать полное имя компоненты компилятора <прог>
  -print-multi-directory   Показать корневой каталог с версиями libgcc
  -print-multi-lib         Показать соответствие между ключами и каталогами
                           поиска библиотек
  -print-multi-os-directory Показать относительный маршрут к библиотекам операционной системы
  -print-sysroot           Display the target libraries directory
  -print-sysroot-headers-suffix Вывести суффикс sysroot, используемый для поиска заголовочных файлов
  -Wa,<ключи>              Передать <ключи>, разделённые запятыми, ассемблеру
  -Wp,<ключи>              Передать <ключи>, разделённые запятыми, препроцессору
  -Wl,<ключи>              Передать <ключи>, разделённые запятыми, компоновщику
  -Xassembler <арг>        Передать <арг> ассемблеру
  -Xpreprocessor <арг>     Передать <арг> препроцессору
  -Xlinker <арг>           Передать <арг> компоновщику
  -combine                 Передать компилятору несколько исходных файлов вместе
  -save-temps              Не удалять промежуточные файлы
  -save-temps=<arg>        Do not delete intermediate files
  -no-canonical-prefixes   Do not canonicalize paths when building relative
                           prefixes to other gcc components
  -pipe                    Передавать промежуточные данные по конвейеру
  -time                    Включить хронометраж проходов                                                                                                         
  -specs=<файл>            Использовать <файл> спецификаций вместо                                                                                               
                             внутренних спецификаций компилятора                                                                                                 
  -std=<стандарт>          Считать, что исходный код следует <стандарту>                                                                                         
  --sysroot=<каталог>      Использовать <каталог> как головной каталог для заголовков
                           и библиотек
  -B <каталог>             добавить <каталог> к списку поиска программ
                             компилятора
  -b <машина>              Генерировать код для указанной <машины>,
                                    если возможно
  -V <версия>              Использовать <версию> gcc, если она установлена
  -v                       Отображать команды, запускаемые компилятором
  -###                     Как -v, но параметры берутся в кавычки и команды не запускаются
  -E                       Только препроцессирование - без компиляции, ассемблирования, компоновки
  -S                       Только компиляция - без ассемблирования и компоновки
  -c                       Компиляция и ассемблирование, без компоновки
  -o <файл>                Записать результат в <файл>
  -x <язык>                Задать язык последующих входных файлов.
                           <язык> может быть: c c++ assembler none
                           'none' означает, что далее язык нужно
                           определять по расширению имени файла

Ключи, начинающиеся с -g, -f, -m, -O, -W, или --param автоматически
передаются процессам, запускаемым gcc. Для передачи ключей этим процессам, используйте ключи -W<буква>.

Инструкции по составлению и отправке отчётов об ошибках см. на:
<http://gcc.gnu.org/bugs.html>.

" si contuderis stultum in pila quasi tisanas feriente desuper pilo non auferetur ab eo stultitia eius " © Proverbs 27:22

32

http://linuxforum.ru/viewtopic.php?id=8328

95% процентов проблем находятся между клавиатурой и стулом.

33

Fat-Zer пишет:

я видел исполняемые файлы на 273Мб

дык напишите в коде что-то вроде

static int m[1048576];

и будет у вас 4х метровый файл.
кстати. я тут цеплял к elf пару гигов - работает  wink

MONSTER-XAKER пишет:

gcc hello-world.c -o hello-world.o

В результате вылетает сообщение:

"gcc: no input files" или "gcc: no such file of directory"

Что я не так делаю

всё.

Карусель разнесло по цепочке за час
Всех известий — конец
Да, весна началась!
(всё к лицу подлецу, как родному отцу, не рассказывай, батя, и так всё пройдёт)

34

Огромная благодарность вашему форуму и тем кто мне помогает!
Хоть я и нуб в среде Linux и лиш начинаю осваивать терминал но я наконец научился компилировать программы и абривиатура GCC меня больше не пугает  smile

Предположим что я умею компилировать простые исходники из "Cи" в исполняемый "О", умею сращивать несколько "о" файлов в один,
но я нимагу понять почему они не запускаются на моей консольке?

Вроде делаю как положено:
Есть файлик который приписывает к ELF-у в заголовок и в конец пару строк для инициализации файла ядром (уже говорилось выше)
и задаёт новое расширение BIN (в среде приставки эти бины направляются на переработку напрямик процессору, как я понял)
В терминале выглядит так:

mkbing.exe <путь к файлу "о"> <путь к чистому файлу "bin">
Программа выводит подпись создателя и сообщяет что записала в файл bin XXXX байт данных.

По идее приставка должна проглотить и слёту проживать файл, но после запуска остаётся гореть лиш чёрный экран (спасает лиш reset)
Может я поспешил с запуском ELF файла? Может он ещё сыроват чтоб проц исполнил его?

35

MONSTER-XAKER пишет:

абривиатура GCC меня больше не пугает

за то меня пугает: здесь вам не тут, БОЛЬШИМИ буквами писать не надо.

MONSTER-XAKER пишет:

в исполняемый "О"

*.o это полуфабрикаты.
вы фарш кушали? и как?

MONSTER-XAKER пишет:

Может он ещё сыроват чтоб проц исполнил его?

что плюётесь? ага. фарш ещё и жарить надо...

Карусель разнесло по цепочке за час
Всех известий — конец
Да, весна началась!
(всё к лицу подлецу, как родному отцу, не рассказывай, батя, и так всё пройдёт)

36

А как его пожарить? И главное чем???  oO

37

MONSTER-XAKER пишет:

А как его пожарить? И главное чем???

facepalm
вы читать умеете?

drBatty пишет:

1) BIN'ов не бывает. Есть ELF'ы
2) есть утилита gcc, она делает из *.c -> ELF
3) если *.c много, то gcc работает дооолгоооо. Потому делают как: из каждого *.с делают полуфабрикат *.о, а потом, тем-же gcc объединяют *.o -> ELF (линквка называется). Когда программер меняет один с-файл, нет нужды переделывать все о-полуфабрикаты. Следит за этим утилита make.

ЗЫЖ на самом деле gcc вызывает ld, но вам пока рановато. Впрочем... Скрывать я не буду:

+ открыть спойлер

LD(1)                                         GNU Development Tools                                         LD(1)

NAME
       ld - The GNU linker

SYNOPSIS
       ld [options] objfile ...

DESCRIPTION
       ld combines a number of object and archive files, relocates their data and ties up symbol references.
       Usually the last step in compiling a program is to run ld.

       ld accepts Linker Command Language files written in a superset of AT&T's Link Editor Command Language
       syntax, to provide explicit and total control over the linking process.

       This man page does not describe the command language; see the ld entry in "info" for full details on the
       command language and on other aspects of the GNU linker.

       This version of ld uses the general purpose BFD libraries to operate on object files. This allows ld to
       read, combine, and write object files in many different formats---for example, COFF or "a.out".  Different
       formats may be linked together to produce any available kind of object file.

       Aside from its flexibility, the GNU linker is more helpful than other linkers in providing diagnostic
       information.  Many linkers abandon execution immediately upon encountering an error; whenever possible, ld
       continues executing, allowing you to identify other errors (or, in some cases, to get an output file in
       spite of the error).

       The GNU linker ld is meant to cover a broad range of situations, and to be as compatible as possible with
       other linkers.  As a result, you have many choices to control its behavior.

OPTIONS
       The linker supports a plethora of command-line options, but in actual practice few of them are used in any
       particular context.  For instance, a frequent use of ld is to link standard Unix object files on a
       standard, supported Unix system.  On such a system, to link a file "hello.o":

               ld -o <output> /lib/crt0.o hello.o -lc

hint: в man pages ещё очень много интересного и полезного...

Карусель разнесло по цепочке за час
Всех известий — конец
Да, весна началась!
(всё к лицу подлецу, как родному отцу, не рассказывай, батя, и так всё пройдёт)

38

Ну пропустил hello.o через ld
ld -o hello.1 hello.o -lc

Структура чуть изменилась но на приставке всё ещё чёрный экран. Что дальше делать?

39

MONSTER-XAKER пишет:

Структура чуть изменилась но на приставке всё ещё чёрный экран. Что дальше делать?

голову включить. Вы не знаете, что значит слово link? откройте словарь.

ЗЫЖ 2All, это наверное самы забавный форум в рунете.  :lol:

Карусель разнесло по цепочке за час
Всех известий — конец
Да, весна началась!
(всё к лицу подлецу, как родному отцу, не рассказывай, батя, и так всё пройдёт)

40

Я только учусь компилировать и запускать программы на устройствах ARM

41

MONSTER-XAKER пишет:

Я только учусь компилировать и запускать программы на устройствах ARM

да какая разница, на каких устройствах.

кто это писал?

MONSTER-XAKER пишет:

Я опытный пользователь ПК и я прексрасно разбираюсь в ОС семейства Windows

между прочим, и компилятор, и линкер в венде работают в точности так-же. Вы видимо всё забыли.  ac

Карусель разнесло по цепочке за час
Всех известий — конец
Да, весна началась!
(всё к лицу подлецу, как родному отцу, не рассказывай, батя, и так всё пройдёт)

42

Да, я разбираюсь в Windows (XP), но до момента создания этой темы я даже не знал что такое ввобще компиляция! ag
Я умею работать с исполняемыми файлами (exe), знаю что такое библиотеки (dll), умею работать с приложениями, но установив свой первый дистрибутив Ubuntu я даже толком не умел запускать на ней программы, не знал как выглядит исполняемый файл, я привык что в Windows у каждого файла есть своё расширение, вне зависимости от имени файла.
По этому я и создал тему по компиляции, подумал что знатоки своего дела доходчиво объяснят алгоритм её выполнения (что нужно написать в терминале, с какими параметрами).

43

MONSTER-XAKER пишет:

Да, я разбираюсь в Windows (XP), но до момента создания этой темы я даже не знал что такое ввобще компиляция! ag
Я умею работать с исполняемыми файлами (exe), знаю что такое библиотеки (dll), умею работать с приложениями, но установив свой первый дистрибутив Ubuntu я даже толком не умел запускать на ней программы, не знал как выглядит исполняемый файл, я привык что в Windows у каждого файла есть своё расширение, вне зависимости от имени файла.
По этому я и создал тему по компиляции, подумал что знатоки своего дела доходчиво объяснят алгоритм её выполнения (что нужно написать в терминале, с какими параметрами).

стоит изучить суть вопроса - т.е. тупо освоить какой нибудь язык программирования даже в общих чертах и перечитать документацию по компилятору. А тыкаться ,как слепой котенок , в котелке с картошкой ,стоящем на медленном огне , в надежде найти мамкину титьку - дело ,сами понимаете , очень перспективное  :lol: ..

" si contuderis stultum in pila quasi tisanas feriente desuper pilo non auferetur ab eo stultitia eius " © Proverbs 27:22

44

MONSTER-XAKER пишет:

Вот интересно что он делает? Судя по строчке rbtty=/dev/ttyUSB0

судя по строчке слово "rbtty" это сокращение от drBatty  ag

ПатреГ не любит Gnome...