O c

O c

Wstęp

To, co tylko czytasz, to początek serii artykułów poświęconych rozwojowi systemów Linux. Jednak w przypadku drobnych modyfikacji (jeśli istnieje), będziesz mógł użyć tej wiedzy, którą otrzymasz, czytając naszą serię w dowolnym innym systemie, który korzysta z tych samych narzędzi (OpenIndiana, BSD…). Ten pierwszy artykuł będzie stopniowo poradzić sobie z zawiłościami pisania kodu C na Linux. Oczekuje się, że będziesz mieć podstawową wiedzę programistyczną, albo w systemach Linux/UNIX lub na innych platformach. Chodzi o to, że powinieneś znać podstawy programowania, na przykład zmienną lub jak zdefiniować strukturę. Mimo że otrzymasz te informacje z tego artykułu, nie nalegamy zbytnio na koncepcje początkującego na poziomie. Słowo ostrzeżenia: nie będziemy uwzględnić wszystkiego, co można powiedzieć o C, ponieważ zajęłoby to dużo miejsca i oczywiście nie wiemy wszystkiego o C.

Dlaczego C?

Niektórzy z was mogą argumentować, że C nie jest najlepszym językiem na poziomie początkującym. Zgodził się, ale znowu spodziewasz się, że będziesz mieć podstawową wiedzę programistyczną, dla jednego. Po drugie, C i UNIX, a następnie Linux, są ściśle związane, że wydawało się, że było naturalne, aby rozpocząć naszą serię rozwoju z C. Od jądra, którego znaczna część jest napisana w C, po wiele codziennych aplikacji użytkownika, C jest masowo używany w systemie Linux. Na przykład GTK opiera się na C, więc jeśli używasz aplikacji GNOME lub XFCE, używasz aplikacji opartych na C. C to stary, dobrze ugruntowany język programowania, istotne narzędzie w wielu częściach w świecie IT, od systemów wbudowanych po komputery mainframe. Dlatego uczciwe jest założyć, że umiejętności C nie tylko wzbogacą twoje CV, ale także pomogą ci rozwiązać wiele problemów w systemie Linux, to znaczy tylko wtedy, gdy będziesz traktować to poważnie i ćwiczysz, czytając i pisząc C. kod.

O c

Historia

C ma ponad 40 lat, z początkami w Bell Labs z Brianem Kernighanem, Dennisem Ritchie i Kenem Thompsonem jako „zwykli podejrzani.„Rozwój UNIX i ewolucja C są ściśle powiązane, jak powiedzieliśmy, ponieważ Unix był początkowo napisany w Zgromadzeniu, ale miał wiele niedociągnięć. Dlatego podczas przeprowadzania się do PDP-11 jako głównej platformy sprzętowej, programiści rozpoczęli C jako język podstawowy dla Unix. W 1978 roku Kernighan i Ritchie napisali: „The C Programming Language”, książka, która jest dzisiaj, jak 20 lat temu: książka o programowaniu C. Serdecznie polecamy, abyś to zdobył.



Klasyfikacja

Zawsze są ludzie zainteresowani klasyfikacją rzeczy i oczywiście programowanie nie jest inne. Żartując na bok, ponieważ jesteśmy na początku, pomyśleliśmy, że powinieneś wiedzieć, że C jest językiem programowania strukturalnego proceduralnego, ze słabym pisaniem. W języku angielskim właśnie powiedzieliśmy, że C używa procedur (zwykła nazwa używana przez programistów C, a także, której użyjemy, to funkcje), że używa podejścia ustrukturyzowanego (myślenia bloków kodu) i Wreszcie obsługuje niejawne konwersje typu. Jeśli nie wiesz, co oznacza jakikolwiek z powyższych!

Nasze podejście

Ten artykuł, który jest tylko częścią wprowadzającą i będziemy regularnie publikować następne części, w których każdy rozdział będzie radził sobie z ważną częścią języka: zmienne, wskaźniki, struktury itp. (Subskrybuj kanał RSS, jeśli jeszcze tego nie zrobiłeś) Na końcu części teoretycznej pokażemy praktyczny przykład, dla którego wybraliśmy w przeszłości, niewielkie oprogramowanie napisane przez Kimball Hawkins (dzięki, Kimball). Zbadamy go, a następnie pakujemy dla systemów Debian i Fedora. Deweloper Debian, Andree Leidenfrost, pokaże ci, jak przesłać nasz nowy pakiet do repozytorium Debian, upewniając się, że szanujemy wszystkie wymagania pakietu, które zostaną przyjęte do Debian Distribution (dzięki, Andree). Zalecamy wypróbowanie naszych przykładów w swoim systemie, poświęć trochę czasu na zbadanie kodu i spróbuj wprowadzić własne modyfikacje.

Niezbędne narzędzia

Zanim zaczniemy, upewnijmy się, że w systemie Linux zainstalujemy wszystkie niezbędne narzędzia. Będziesz potrzebować kompilatora, a mianowicie GCC, pakietu Binutils i edytora tekstu lub IDE. Niezależnie od tego, czy wybierzesz edytor tekstu, czy jakiś rodzaj IDE zależy w dużej mierze od twoich preferencji, ale więcej o tym później. W zależności od użytych opcji dystrybucji i instalacji Linux, możesz już zainstalować niezbędne narzędzia. Złożyliśmy mały skrypt, który pomoże Ci sprawdzić, czy masz zainstalowane wszystkie obowiązkowe narzędzia programistyczne:

#!/bin/sh gcc -v if [$? != 0]; Następnie echo „GCC nie jest instalowany!„fi ld -v if [$? != 0]; Następnie echo "Proszę zainstalować binutils!„Fi 


Zapisz ten skrypt jako DevToolsCheck.sh, uruchom to:

 $ sh DevToolscheck.cii 

Na moim komputerze dostaję następujące dane wyjściowe:

$ sh DevTools.sh za pomocą wbudowanych specyfikacji. Collect_gcc = gcc collect_lto_wrapper =/usr/lib/x86_64-Linux-gnu/gcc/x86_64-Linux-gnu/4.6.1/LO-WRAPPER.6.1-4 '--With-Bugurl = plik: /// usr/share/doc/gcc-4.6/README.Bugs-Uneble-Languages ​​= C, C ++, Fortran, OBJC, OBJ-C ++, Go--Prefix =/usr --program-Suffix = -4.6-Enable-shared-enable-Multiarch [opcje konfiguracji] Model wątku: POSIX GCC wersja 4.6.1 (Debian 4.6.1-4) GNU LD (GNU Binutils dla Debian) 2.21.52.20110606 

Dlaczego potrzebujesz binarii binutils i GCC, zobaczysz wkrótce. Teraz skupmy się trochę na pytaniu „redaktor kontra IDE”.

Jedyne, co w tym względzie doradzimy, to „użyj tego, z czym czujesz się komfortowo i zignoruj ​​to, co mówią inni”. Ta kwestia jest bardzo subiektywna i zależy od wielu zmiennych. Na przykład, jeśli opracujesz (lub używany do opracowania) w innych systemach operacyjnych, możesz być używany do IDE. W Linux znajdziesz wiele dobrych IDes, w tym Eclipse, Geane, Kdevelop lub Anjuta. Spróbuj je zainstalować, aby zobaczyć, co uważasz za bardziej odpowiednie. Z drugiej strony, jeśli chcesz przejść do prostego edytora, istnieje również wiele opcji: VI (M), Emacs, Kate, Nano, Jed i tak dalej. Przeszukując Internet, znajdziesz wiele dyskusji na temat najlepszego redaktora. Mówimy, że zainstaluj z nich i dowiedz się, co najbardziej Ci odpowiada. Jesteś jedynym sędzią tego i będzie to narzędzie, z którego będziesz często korzystać, więc spośród sobie czasu, użyj go, przeczytaj o tym i zapoznaj się z tym. Niezależnie od twojego wyboru, założymy, że dokonałeś wyboru w odniesieniu do narzędzia do edycji i znasz jego użycie.

Proces kompilacji

Krótko mówiąc, ten proces zaczyna się od kodu źródłowego, który napisałeś, a jeśli wszystko pójdzie dobrze, wynik jest wykonywalny binarny lub biblioteka. Nie trzeba dodawać, że jest w tym coś więcej, ale konieczne jest zrozumienie powyższego zdania, zanim przejdziesz dalej. Nie musisz teraz zapamiętywać wszystkich koncepcji, ponieważ później staną się wyraźniejsze. Na tym etapie ważne jest, aby uzyskać ogólny pomysł.

Powiedzmy, że mamy napisany kod źródłowy, a teraz chcemy, aby kompilator go przetworzył i podał nam wykonywalny binarny. Przepływ pracy tego procesu jest zilustrowany po twojej prawej stronie.

Należy pamiętać, że ma to zastosowanie tylko do C, który jest opracowanym językiem, w przeciwieństwie do interpretowanych języków (Perl, Python, Shell), i będziemy skierować ściśle do GCC i przyjaciół do reszty naszego przewodnika. Jak ilustruje figura po prawej stronie (CPP) przyjmuje kod źródłowy, szuka Instrukcje wstępne (W C zaczynają się od skrótu), a jeśli wszystko wygląda dobrze, wynik jest zrozumiałym przez kompilatora. Kompilator (GCC) wykonuje całą ciężką pracę, w tym optymalizację kodu dla leżącego u podstaw sprzętu (jeśli jesteś zainteresowany teorią kompilatora lub kompilacji krzyżowej, istnieje wiele dobrych książek na ten temat, ale zakładamy tutaj bardziej początkujący poziom). Rezultatem jest kod montażowy, ściśle blisko maszyny, z którego będą generowane binarie (podobnie jak narzędzie). Ostatecznie, w zależności od opcji i kodu, „LD” połączy wykonywalne z wszystkimi niezbędnymi bibliotekami i voila! Wynik końcowy: Twój program. Jeśli chcesz zobaczyć wszystkie powstałe pliki pośrednie, flaga GCC -Save -temps, jak pomoże ci to zrobić. Zalecamy przeczytanie strony ręcznej GCC, przynajmniej oszczędnie, i upewnienie się, że twój kompilator nas jest aktualny. Przyzwyczaisz się do zwykłych flag GCC, czytając nasze przykłady, ale oczekuje się, że wiesz, co robią, a nie tylko kopiuj i wklej polecenia, które widzisz na ekranie.



Przykład C Program

Każdy szanujący się samouczek programowania zaczyna się od programu „Hello, World”. Ten program nie robi nic innego oprócz wydruku „Cześć, świat!”Na ekranie, a następnie wychodzi. Służy do zilustrowania bardzo podstawowej struktury programu i niektórych podstawowych pojęć. Więc bez zbędnych ceregieli, oto jest.

#włączać  / * To jest komentarz */ int main () printf ("hello, świat!\N"); powrót 0; 

Teraz przeanalizujmy linię programu po linii i zobaczmy, co reprezentuje każda linia. Pierwszy to dyrektywa przedprocesorowa (patrz wyżej), która prosi o Stdio.H plik, który zawiera definicję dla printf funkcjonować. Pliki nagłówka to pliki, które zwykle zawierają różne definicje (funkcje, zmienne…) i tworzyć .C Pliki mniej zagracone. Wszystko, co za plik źródłowy (.c) będzie potrzebny #włączać stwierdzenie i ewentualnie argument dla linkera. Wszystko, co zostało zdefiniowane w dołączonym pliku nagłówka, będzie dostępne w twoim kodzie źródłowym.

główny() jest obowiązkową funkcją w każdym programie C. Jak sama nazwa mówi, główny Działanie nastąpi tutaj, niezależnie od tego, ile funkcji zdefiniowałeś. int main () oznacza, że ​​ta funkcja nie ma żadnych argumentów (pustych nawiasów) i że zwraca liczbę całkowitą (początkowa int). Wszystkie zostaną omówione później. Najważniejszą rzeczą jest tutaj printf funkcja, która traktuje nasz tekst jako argument i wyświetla to. "\N”Oznacza„ Newline ”i jest to odpowiednik używania klawisza Enter (lub ^m). Nazywa się to sekwencją ucieczki i wszystkie sekwencje ucieczki w C zaczynają się od „\”. Na przykład, aby lepiej zrozumieć, czym jest sekwencja ucieczki, wyobraź sobie, że piszesz kod HTML i musisz wydrukować „<” character. HTML's syntax uses angle brackets to define HTML tags, so chances are your bracket will be interpreted as HTML code instead of being displayed. So, what to do? We escape it with “<” and it will appear properly. Just the same, if you want to insert a newline character, you can't type it directly, as the compiler could care less if you write your program on a single line or not and therefore you you need to escape your new line character with “\N".

powrót 0 mówi kompilatorowi, że wszystko jest w porządku i wykonanie główny() Funkcja się tam kończy. To dlatego, że 0 jest kodem pomyślnego wykonywania, podczas gdy wartości większe niż 0 (liczby całkowite) wskazuje, że coś poszło nie tak. Kręcone aparaty ortodontyczne, które zaczynają i kończą główną funkcję, wyznaczają jej „blok wykonania, to znaczy to, co dzieje się główny(), zostaje w główny(). Być może zauważyłeś półkolony na końcu oświadczeń: są one obowiązkowe jako znak, że obecne oświadczenie się tam zakończyło, ale nie należy ich używać w dyrektywach preprocesor #włączać.



Kompilacja

Kompilacja zostanie omówiona bardziej szczegółowo w nadchodzących częściach tego przewodnika. Ale dla kompletności tutaj jest prosty przykład wiersza poleceń na temat kompilacji i wykonania naszego pierwszego programu „Hello World” C:

$ gcc -o hello hello.C $ ./Witajcie, świat!

Wniosek

Mamy nadzieję, że nie wcisnęliśmy zbyt wielu informacji w twoim mózgu i że spodoba ci się pozostanie z nami w tym samouczku programowania. Część 2 będzie miała do czynienia z porównaniem C i innymi językami programowania, aby pomóc tym, którzy już mają pewne doświadczenie w rozwoju.

Oto, czego możesz się spodziewać następnego:

  • I. C Opracowanie w Linux - Wprowadzenie
  • Ii. Porównanie C i innych języków programowania
  • Iii. Typy, operatorzy, zmienne
  • Iv. Kontrola przepływu
  • V. Funkcje
  • Vi. Wskaźniki i tablice
  • VII. Struktury
  • VIII. Podstawowe I/O
  • IX. Styl kodowania i zalecenia
  • X. Budowanie programu
  • Xi. Opakowanie dla Debiana i Fedory
  • XII. Uzyskanie pakietu w oficjalnych repozytoriach Debiana

Powiązane samouczki Linux:

  • Rzeczy do zainstalowania na Ubuntu 20.04
  • Rzeczy do zrobienia po zainstalowaniu Ubuntu 20.04 Focal Fossa Linux
  • Rzeczy do zrobienia po zainstalowaniu Ubuntu 22.04 JAMMY Jellyfish…
  • Wprowadzenie do automatyzacji, narzędzi i technik Linuksa
  • Zainstaluj Arch Linux na stacji roboczej VMware
  • Rzeczy do zainstalowania na Ubuntu 22.04
  • Pobierz Linux
  • Podstawowe polecenia Linux
  • Polecenia Linux: Top 20 najważniejsze polecenia, które musisz…
  • Ubuntu 20.04 Przewodnik