Yvision.kz
kk
Разное
Разное
399 773 постов42 подписчика
Всяко-разно
0
09:30, 03 февраля 2013

Основы *nix кодинга. Часть 1.

Основы linux кодинга. Часть 1.
Привет всем.
Цель данной статьи рассказать читателям об основах linux программирования с помощью системных вызовов.
В качестве компилятора будем использовать gcc, которые входит в поставку большинства дистрибутивов. Еще нам понадобится make
Инструменты
Перед тем как начать программировать, стоит разобрать, что нам поможет в этом.
Для начала компилятор gcc(GNU project C Compiler):
Пример простейшего использования:БBr>
$gcc /proga.c -o /prog или так:
$gcc -o /prog /proga.c

Ключ -o указываем имя и путь к будущему бинарнику
Если в исходном тексте есть ошибки, то умный компилятор укажет на них.
Маны:
http://www.linuxcenter.ru/lib/books/linuxdev/linuxdev1.phtml
http://skif.bas-net.by/bsuir/prog_in_linux/node3.html

Make - программа может состоять из множества файлов, которые нужно как то собрать в один.
Если файлов мало то можно собрать использую только gcc, но файлов может быть очень много. Именно для таких случаев и применяем сборщик Make. Для ее работы необходимо использовать makefile - специальные файлы со сценарием сборки. Что бы лучше понять эти сценарии давайте попробуем собрать программу, состоящую из двух частей с помощью gcc:
У нас есть файл main.c и modul.c:
$gcc - -c main.c $gcc - -c modul.c
Тут мы указали ключ -c, он означает, что нужно собрать объектный файл, это еще не является полноценной программой, ее мы соберем дальше:
$ gcc -o programm main.o modul.c

Теперь мы собрали бинарник из двух файлов.
Итак, вернемся к make, как я уже говорил файлов для сборки может быть очень много, поэтому используем makefile.
Попробуем сделать его самим:
hello:
main.o programm.o
gcc -o programm main.o modul.o

main.o:
main.c
gcc -c main.c

modul.o:
modul.c
gcc -c modul.c

clean:
rm -f *.o programm

Думаю все ясно. Мы выполняем почти те же действия, что и выше, но уже автоматически.
В разделе Clean мы отчищаем директорию от временных файлов. Да, и не забываем про знаки табуляции, они очень важны Вот мануал для самостоятельного изучения
http://www.linuxrsp.ru/docs/gm.html
Тянуть не будем, и перейдем к делу.
Для начала определимся, что такое системный вызов:
Системный вызов это обращение, какой либо прикладной программы к ядру ОС, для выполнения какой либо операции.

Первым, как думаю самым несложным, мы разберем работу с файлами.

 

Уроки для хакеров и программистов


0
249
0