0.5 — Wprowadzenie do kompilatora, linkera i bibliotek

Kontynuacja dyskusji na temat tego diagramu z poprzedniej lekcji (0.4 -- Wprowadzenie do C++ rozwój):

Proces tworzenia oprogramowania

Omówmy kroki 4-7.

Krok 4: Kompilowanie kodu źródłowego

W celu skompilowania plików kodu źródłowego C++ używamy kompilatora C++. Kompilator C++ sekwencyjnie przegląda każdy plik kodu źródłowego (.cpp) w programie i wykonuje dwa ważne zadania:

Najpierw kompilator sprawdza kod C++, aby upewnij się, że jest zgodny z zasadami języka C++. Jeśli tak nie jest, kompilator wyświetli błąd (i odpowiedni numer wiersza), aby pomóc określić, co wymaga naprawy. Proces kompilacji również zostanie przerwany do czasu naprawienia błędu.

Po drugie, kompilator tłumaczy kod C++ na instrukcje języka maszynowego. Te instrukcje są przechowywane w pliku pośrednim zwanym plikiem obiektowym inne dane, które są wymagane lub przydatne w kolejnych krokach (w tym dane potrzebne linkerowi w kroku 5 oraz do debugowania w kroku 7).

Pliki obiektowe noszą zazwyczaj nazwy name.o lub name.obj, gdzie name to ta sama nazwa, co plik .cpp, z którego zostały utworzone.

Dla na przykład, jeśli Twój program zawierał 3 pliki .cpp, kompilator wygenerowałby 3 pliki obiektowe:

Proces kompilacji

Kompilatory C++ są dostępne dla wielu różnych systemów operacyjnych. Instalację kompilatora omówimy wkrótce, więc nie ma potrzeby tego teraz robić.

Krok 5: Łączenie plików obiektowych i bibliotek oraz tworzenie żądanego pliku wyjściowego

Po pomyślnym zakończeniu kompilatora wywoływany jest inny program uruchamia się linker . Zadaniem linkera jest połączenie wszystkich plików obiektowych i utworzenie żądanego pliku wyjściowego (takiego jak plik wykonywalny, który można uruchomić). Proces ten nazywa się łączeniem. Jeśli jakikolwiek etap procesu łączenia zakończy się niepowodzeniem, linker wygeneruje komunikat o błędzie opisujący problem, a następnie abort.

Po pierwsze, linker wczytuje każdy z plików obiektowych wygenerowanych przez kompilator i sprawdza, czy są one prawidłowe.

Po drugie, linker upewnia się, że wszystkie zależności między plikami zostały poprawnie rozwiązane. Na przykład, jeśli zdefiniujesz coś w jednym pliku .cpp, a następnie użyjesz tego w innym pliku .cpp, linker połączy oba razem, jeśli linker nie będzie w stanie połączyć z czymś odniesienia definicji, pojawi się błąd linkera i proces łączenia zostanie przerwany.

Po trzecie, linker zazwyczaj łączy w jednym lub większej liczbie plików bibliotecznych, które są zbiorami prekompilowanego kodu, który został „spakowany” do ponownego użycia w innych programach.

Na koniec linker generuje żądany plik wyjściowy. Zwykle tak będzie plik wykonywalny, który można uruchomić (ale może to być plik biblioteki, jeśli tak skonfigurowałeś swój projekt).

Proces łączenia

Biblioteka standardowa

C++ zawiera obszerną bibliotekę zwaną Biblioteką standardową C++ (zwykle nazywaną „biblioteką standardową”), która zapewnia zestaw przydatnych możliwości do wykorzystania w twoich programach biblioteka to biblioteka wejścia/wyjścia (często nazywana „iostream”), która zawiera funkcję drukowania tekstu na monitorze i uzyskiwania danych wejściowych z klawiatury od użytkownika.

Prawie każdy napisany program w C++ w jakiś sposób wykorzystuje bibliotekę standardową, dlatego niezwykle często zdarza się, że standardowa biblioteka C++ jest połączona z twoimi programami. Większość linkerów C++ jest domyślnie skonfigurowanych do łączenia się z biblioteką standardową, więc generalnie nie jest to coś, o co musisz się martwić.

Inne firmy. biblioteki

Opcjonalnie możesz połączyć biblioteki stron trzecich, które są bibliotekami tworzonymi i dystrybuowanymi przez niezależne podmioty (a nie jako część standardu C++). Załóżmy na przykład, że chcesz napisać program odtwarzający dźwięki. Biblioteka standardowa C++ nie zawiera takiej funkcjonalności. Chociaż możesz napisać własny kod, aby wczytać pliki dźwiękowe z dysku, sprawdzić, czy są prawidłowe, lub dowiedzieć się, jak skierować dane dźwiękowe do systemu operacyjnego lub sprzętu, aby odtwarzać je przez głośnik – to byłoby dużo pracy! Zamiast tego bardziej prawdopodobne jest, że znajdziesz jakiś istniejący projekt oprogramowania, który ma bibliotekę, która już implementuje wszystkie te rzeczy.

O tym, jak łączyć biblioteki (i tworzyć własne!) porozmawiamy w dodatku.

Budynek

Ponieważ wiąże się to z wieloma etapami, termin budynek jest często używany w odniesieniu do pełnego procesu konwertowania plików kodu źródłowego do pliku wykonywalnego, który można uruchomić. Konkretny plik wykonywalny powstały w wyniku kompilacji jest czasami nazywany a zbudować.

Dla zaawansowanych czytelników

W przypadku złożonych projektów utwórz narzędzia do automatyzacji (takie jak robić lub kompilacja2) są często używane do automatyzacji procesu tworzenia programów i przeprowadzania testów automatycznych. Chociaż takie narzędzia są potężne i elastyczne, ponieważ nie są częścią podstawowego języka C++ i nie trzeba ich używać, aby kontynuować, nie będziemy ich omawiać w ramach tej serii samouczków.

Kroki 6 i 7: Testowanie i debugowanie

To jest zabawna część! Możesz teraz uruchomić plik wykonywalny i zobaczyć, co się stanie!

Po uruchomieniu programu możesz go przetestować. Testowanie to proces oceny, czy oprogramowanie działa zgodnie z oczekiwaniami. Podstawowe testowanie zazwyczaj polega na wypróbowywaniu różnych kombinacji danych wejściowych, aby upewnić się, że oprogramowanie działa poprawnie w różnych przypadkach.

Jeśli program nie zachowuje się zgodnie z oczekiwaniami, będziesz musiał coś zrobić debugowaniem, czyli proces znajdowania i naprawiania błędów programistycznych.

W przyszłych rozdziałach omówimy bardziej szczegółowo, jak testować i debugować programy.

Zintegrowane środowiska programistyczne (IDE)

Należy pamiętać, że kroki 3, 4, 5 i 7 dotyczą oprogramowania, które należy zainstalować (edytor, kompilator, linker, debuger). Chociaż do każdej z tych czynności można używać oddzielnych programów, pakiet oprogramowania znany jako zintegrowane środowisko programistyczne (IDE) łączy i integruje wszystkie te funkcje razem. Omówimy IDE i zainstalujemy je w następnej sekcji.

guest
Twój adres e-mail nie zostanie wyświetlony
Znalazłeś błąd? Zostaw komentarz powyżej!
Komentarze związane z poprawkami zostaną usunięte po przetworzeniu, aby pomóc zmniejszyć bałagan. Dziękujemy za pomoc w ulepszaniu witryny dla wszystkich!
Awatary z https://gravatar.com/ są połączone z podanym adresem e-mail.
Powiadamiaj mnie o odpowiedziach:  
356 Komentarze
Najnowsze
Najstarsze Najczęściej głosowane
Wbudowane opinie
Wyświetl wszystkie komentarze