Во-первых, как новичок, вы всегда должны просить GCC скомпилировать все предупреждения и отладочную информацию, то есть gcc -Wall -g
. Но когда-нибудь прочитайте Как вызвать gcc
. Используйте хороший редактор исходного кода (например, GNU emacs или vim или gedit и т. д.), чтобы редактировать исходный код C, но иметь возможность компилировать программу в командной строке (поэтому не Не всегда используйте сложную IDE, скрывающую от вас важные детали компиляции).
Тогда вам, вероятно, не хватает какой-то конкретной библиотеки Гарварда, некоторых параметров, таких как -L
, за которыми следует каталог библиотеки, а затем -l
приклеивается к имени библиотеки. Таким образом, вам может понадобиться gcc -Wall -g -lcs50
(замените cs50
на соответствующее имя), и вам может понадобиться -L
какой-то-каталог
Обратите внимание, что порядок аргументов программы до gcc
имеет значение. Как правило, если a
зависит от b
, вы должны поставить a
перед b
; более конкретно я предлагаю
- Начните с имени программы
gcc
; добавьте стандартный уровень C, например -std=c99
, если хотите
- Поместите предупреждение компилятора, параметры отладки (или оптимизации), например,
-Wall -g
(вы даже можете добавить -Wextra
, чтобы получить еще больше предупреждений).
- Поместите определения препроцессора и включите каталог, например.
-DONE=1
и -Imy-include-dir/
- Поместите исходный файл C
hello.c
- Поместите любые объектные файлы, с которыми вы связываетесь, т.е.
bar.o
- Поместите каталоги библиотеки
-Lmy-lib-dir/
, если это необходимо
- Pur имена библиотек
-laa
и -lbb
(когда libaa.so
зависит от libbb.so
, в таком порядке)
- Закончите
-o your-program-name
, чтобы указать имя созданного двоичного файла. Не используйте имя по умолчанию a.out
Варианты указания каталога -I
(для включения препроцессора) и -L
для библиотек можно указывать несколько раз, порядок имеет значение (порядок поиска).
Очень скоро вы захотите использовать инструменты автоматизации сборки, такие как GNU make
(возможно, с помощь remake
в Linux)
Узнайте также, как использовать отладчик gdb
.
Заведите привычку всегда запрашивать предупреждения у компилятора и всегда улучшайте свою программу до тех пор, пока не получите никаких предупреждений: компилятор — ваш друг, он вам помогает!
Прочтите также Как отлаживать небольшие программы и знаменитый SICP (который обучает очень важным понятиям; вам может понадобиться использовать guile
в Linux во время чтения см. http://norvig.com/21-days.html, чтобы узнать больше). Помните также о таких инструментах, как valgrind.
Радоваться, веселиться.
person
Basile Starynkevitch
schedule
28.07.2012
gcc helloWorld.c -lcs50
работает? - person Alok Singhal   schedule 28.07.2012#include <cs50.h>
будет работать так же, как#include <stdio.h>
. - person ironicaldiction   schedule 29.07.2012