Ноя
22
2009

Литература по C/C++, makefile. Hello world на C в linux

Взялся наконец учить C/C++. И встал у меня вопрос о выборе литературы. Люблю бумажные книги. Денег на хорошую книжку не жалко, но надо её найти. Т.к. я пользователь linux, то книжки а-ля «программирование на C++ в visual studio» меня не очень интересовали.

Нашел сперва книжку «Программирование на C++ в Linux» (красненькая обложка). Даже скачал её. Вроде бы неплохая книга, но там сходу в первой же главе сразу ООП и всё такое. Я ООП не боюсь (при работе на PHP применял), но хотел бы начать с элементарного. Т.е. и по базовому синтаксису пройтись, разобраться с указателями, выделением памяти и тд и тп. Т.е. начать хотел всё-таки с изучения C, а не C++. Поэтому книгу «Программирование на C++ в Linux» я отложил на попозже.

Затем я просмотрел еще ряд книжек в инет-магазинах и на книжной ярмарке, но как понять какая книга хорошая – неясно. Поэтому я в таких ситуациях пытаюсь добиться у знакомых рекомендации чего-либо. Так и сделал. И мне подкинули старенькую (1996 год) книжку «Начальный курс C и C++» (авторы: Б.И. Березин и С.Б. Березин), которую я начал читать, но оказалось, что инфа там немного может быть неактуальна. Решил, что всё-таки надо что-нибудь свежее купить.

Стал снова гуглить. Наткнулся на очень интересную online-книгу: «Программирование в Linux с нуля«. Почитав там введение обнаружил упоминание о книги Кернигана и Ритчи. Тут же вспомнил, что о какой-то их книги было упоминание так же и в старой книге, которую я начинал читать.

И погуглив я нашёл то, что надо: «Язык программирования C«. Авторы: Брайан Керниган и Деннис Ритчи. Оказалось, что это вобщем-то классическая книжка по C. От авторов языка. У книги было 34 переиздания в штатах. На русском языке было одно переиздание. Посоветовавшись с мамой (она тоже программист), выяснилось, что это действительно стоящая книга, а она просто про ней забыла, когда я спрашивал совета.

Я разумеется тут же загорелся идеей покупки. И, вобщем-то, через полтора часа книжка была у меня в руках. Уже начал читать. Очень доволен. Материал излагается понятно, достаточное количество примеров. А так же есть задания, которые я с удовольствием делаю. Вобщем рекомендую!

hello world на C в linux

Если программировать в linux, то вы столкнётесь с makefile. Это файл, в котором содержатся инструкции для компилятора что и как делать. На первый взгляд может показаться, что это всё сложно, но на самом деле не сильно ) Для начала нам ведт достаточно и неглубоких знаний, а хотя бы базовых. Вот пример простого makefile:

CC = gcc

all: hello

hello: hello.o

hello.o: hello.c

.PHONY: clean

clean:
rm -f hello hello.o

В кратце поясню. gcc – это компилятор, с помощью которого вы будете компилировать своё приложении. gcc помоему всегда есть в linux. Ну и в этом makefile предполагается, что текст вашей программы написан в файле hello.c А после компиляции вашей программы вы получите исполняемый файл hello. Для более подробного изучения работы с makefile мне порекомендовали книгу Managing Projects with GNU make.

Ну и для полноты примера приведу собственно текст программы, которая выводит hello world:

#include <stdio.h>

main() {
    printf ("Hello world\n");
}

Сохраните этот текст в hello.c
Запустите из консоли в этой папке команду make (проверьте, чтобы makefile описанный выше лежал в этой же папке). Если ошибок нет, то в этой же директории должен появиться исполняемый файл hello. Для его запуска вы можете написать в этой директории: ./hello
Если всё сделано правильно, то вы увидите сообщение hello world на мониторе. Поздравляю! =)

yas@yas-desktop:~/cpp/hello$ ls
hello.c  makefile
yas@yas-desktop:~/cpp/hello$ cat hello.c
#include <stdio.h>

main() {
    printf ("Hello world\n");
}

yas@yas-desktop:~/cpp/hello$ cat makefile
CC = gcc

all: hello

hello: hello.o

hello.o: hello.c

.PHONY: clean

clean:
        rm -f hello hello.o

yas@yas-desktop:~/cpp/hello$ make
gcc    -c -o hello.o hello.c
gcc   hello.o   -o hello
yas@yas-desktop:~/cpp/hello$ ls
hello  hello.c  hello.o  makefile
yas@yas-desktop:~/cpp/hello$ ./hello
Hello world
yas@yas-desktop:~/cpp/hello$

tags: , , ,
posted in C/C++ by yas375

Follow comments via the RSS Feed | Оставить комментарий | Trackback URL

9 Comments to "Литература по C/C++, makefile. Hello world на C в linux"

  1. Alexey wrote:

    Вы неправильно дали код программы
    вот правильный
    #include

    int main() {
    printf («Hello world/n»);
    return 0;
    }

  2. maccraft wrote:

    Alexey а почему ваш правильнее? Тем что вы ноль возвращаете?
    В классическом издании ноль не возвращается.

    А вот подключить библиотеку stdio.h вы забыли так же как и автор.

    #include

    main()
    {
    printf («Hello world/n»);
    }

  3. maccraft wrote:

    Нда… Alexey слова про библиотеку забираю. )))

  4. yas wrote:

    тут просто «порезались» < и >
    В посте поправил

  5. Degenerator wrote:

    Автору – Спасибо!

    2 Alexey
    Чем поправлять человека, бессмысленным добавлением ретурна, лучше сказали бы спасибо.

    Борланд компилятор, например, не требует ни обьявления типа функции, ни возвращения какого либо значения.

    printf (»Hello world/n»); – переход на новую строку в конце предложения не получишь.
    «\n» и «/n» – разные вещи.

    Да и ковычка в начале странная какаято ;)

  6. Dmitry wrote:

    Спасибо!=) Хоть удалось потестить. После студии очень было сложно разобраться как запускать скомпилированную программу в линуксе.

  7. 5_kopeek wrote:

    clean: rm -f hello hello.o

    надо писать в одну строку.
    так как в примере, у меня не работает (ubuntu 10.04)

  8. Anthony wrote:

    у меня не работало как и у #7. писало
    makefile:12: *** missing separator. Stop.
    только у меня заработало когда я поставил табуляцию перед
    rm -f hello hello.o

  9. KrAssor wrote:

    Каждое правило command должно начинаться с символа табуляции — это обязательное условие (читал в статейке http://c-reaction.net/content/562)

Leave Your Comment