Link Search Menu Expand Document

ამ სემინარზე განხილული მასალა არ შედის გამოცდაში, მაგრამ რამდენიმე მიზეზის გამო მნიშვნელოვანია რომ პროგრამის შექმნის პროცესი კარგად გესმოდეთ.

კომპილაციის პროცესი

კოდისგან პროგრამის შექმნა ორ ნაწილად არის დაყოფილი, რომ დიდ პროექტში ერთი ფაილის შექმნისას დანარჩენი ასეულობით თავიდან არ გაანალიზდეს.

gcc -c main.c
gcc -c module1.c
gcc -c module2.c
gcc -o prog main.o module1.o module2.o 

ტერმინები: დეკლარაცია, დეფინიცია, header file, source file

compile

  • სინტაქსის შემოწმება
  • სხვა ფაილები არ არის საჭირო, მხოლოდ header ფაილი რომ შეამოწმოს რომ ფუნქცია არსებობს, სწორად იყენებ და ა.შ

შეცდომა მოხდება, თუ

  • არის სინტაქსური შეცდომა
  • რამე ფუნქციას იყენებ, რომლის დეკლარაციაც ვერ მოიძებნა

output: object file

აქ უბრალოდ header fileების ფუნქციებს მიმართავს მათ ლოკაციასთან, აკავშირებს ერთმანეთს და აერთიანებს ერთ პროგრამაში.

შეცდომა მოხდება

  • თუ რომელიმე დეფინიცია ვერ იპოვა.
  • ვერ იპოვა main ფუნქცია

output: program

კომპილაციის პროცესი და gcc-ის მთავარი flag-ები უფრო დაწვრილებით ახსნილია ჰენდაუთში gcc reference

make utility

ამდენ ბრძანებას ყოველ ჯერზე ხელით ვერ შევიყვანთ. ერთი ალტერნატივაა, რომ დავწეროთ სკრიპტი, რომელსაც არგუმენტს რომ მივცემთ იმ კონკრეტულს შეასრულებს. ამ სკრიპტს უნდა შეეძლოს

  • compile, link, run
  • ამ სამის დამოკიდებულების კონტროლი. თუ შევიყვანთ ბრძანებას run, მაშინ შეცვლილი თუა ფაილი, თავისით უნდა მიხვდეს. ასევე, თუ კომპილაციაზე პრობლემა იყო, ლინკინგი არ უნდა მოხდეს, თორემ ძველ object file-ს გამოიყენებს და დავიბნევით.

ადრე ასეც იყო და ხელით წერდნენ ხოლმე ყველა პროექტისთვის დასაკომპაილებელ სკრტიპს. შემდეგ

make reference