Menü
ücretsiz
Kayıt
Ev  /  İLE/ Ubuntu'da (Linux) C'de (C) Programlama. giriiş

Ubuntu'da (Linux) C (C) programlama. giriiş

İşletim sistemindeki tüm eylemler programlar kullanılarak gerçekleştirilir, bu nedenle yeni başlayanların çoğu yalnızca başkalarının programlarını kullanmakla değil, kendi programlarını yazmakla da ilgilenir. Birçoğu OpenSource kod tabanına katkıda bulunmak istiyor.

Bu, Linux programlama hakkında bir genel bakış makalesidir. Hangi dillerin en sık kullanıldığını ele alacağız, temel kavramları ve olasılıkları göz önünde bulunduracağız, nasıl yazılacağını analiz edeceğiz. en basit program En popüler programlama dillerinden birinde, manuel olarak nasıl oluşturulacağı ve çalıştırılacağı.

Tarihsel olarak, Unix çekirdeği C dilinde yazılmıştır. Dahası, bu dil Unix çekirdeğini yazmak için yaratılmıştır. Linux çekirdeği Minix çekirdeğini (Unix'in bir sürümü) temel aldığından, aynı zamanda C ile yazılmıştır. Bu nedenle Linux için ana programlama dilinin C ve C++ olduğunu söyleyebiliriz. Bu eğilim uzun süre devam etti.

Genel olarak, Linux için Java ve Python'dan C# ve hatta Pascal'a kadar hemen hemen her dilde program yazabilirsiniz. Tüm dillerin derleyicileri ve tercümanları vardır. C++ ile program yazmak zordur ve C zaten birçok kişi tarafından modası geçmiş kabul edilmektedir, bu nedenle pek çok programcı program yazmak için diğer dilleri kullanır. Örneğin, birçok sistem aracı Python veya Perl ile yazılmıştır. Çoğu programdan Linux komutları Mint, Ubuntu yükleyicisi ve bazı uygun betikler Python'da yazılmıştır. Basit optimizasyon komut dosyaları da dahil olmak üzere birçok komut dosyası Perl'de yazılmıştır. Bazen Ruby komut dosyası oluşturmak için kullanılır. Bunlar OpenShift betikleri veya örneğin Metasploit çerçevesidir. Bazı platformlar arası geliştiriciler Java kullanır. Ancak sistemin ana bileşenleri hala C ile yazılmıştır.

Bu yazıda C'nin temellerini ele almayacağız. C karmaşık bir dildir ve bu dilde ustalaşmak için en az bir kitap okumanız ve çokça pratik yapmanız gerekir. Linux üzerinde C programları nasıl yazılır, nasıl kurulur ve çalıştırılır ona bakacağız.

Neden C:

2. Kütüphaneler

Doğal olarak, ekranda bir dizi veya görüntü görüntülemeniz gerekirse, video kartına doğrudan erişemezsiniz. Sistemde zaten uygulanmış olan birkaç işlevi çağırmanız ve onlara görüntülemek istediğiniz verileri iletmeniz yeterlidir. Bu tür işlevler kitaplıklara yerleştirilir. Aslında kitaplıklar, diğer programlar tarafından kullanılan işlev koleksiyonlarıdır. Diğer programlarla aynı kodu içerirler, tek fark, mutlaka bir başlatma işlevinin varlığının olmamasıdır.

Kütüphaneler ikiye ayrılır:

  • Statik- derleme aşamasında programa bağlanırlar, bağlanırlar ve bundan sonra kütüphanenin tüm işlevleri programda yerel olarak kullanılabilir. Bu tür kitaplıklar .a uzantısına sahiptir;
  • dinamik- bu tür kitaplıklar çok daha yaygındır, RAM'e yüklenirler ve programa dinamik olarak bağlanırlar. Bir program bir kitaplığa ihtiyaç duyduğunda, onu bilinen bir adresten çağırır. rasgele erişim belleği. Bu hafızadan tasarruf sağlar. Bu kitaplıkların uzantısı, Shared Object'e benzeyen .so'dur.

Bu nedenle, herhangi bir C programı için kitaplıklar eklemeniz gerekir ve tüm programlar bir tür kitaplık kullanır. Hangi dilde yazmaya karar verirseniz verin, sonunda her şeyin C sistem kitaplıklarına indirgeneceğini unutmamak da önemlidir. Örneğin, Python'da bir program yazarsınız, bu dilin standart özelliklerini kullanırsınız ve yorumlayıcının kendisi zaten ana özelliklere erişmek için sistem kitaplıklarını kullanan bir C / C ++ programıdır. Bu nedenle, C programlarının nasıl çalıştığını anlamak önemlidir. Elbette Go gibi hemen montajcıya çevrilen diller var ama prensipler buradaki ile aynı. Ek olarak, linux sistem programlaması çoğunlukla C veya C++'dır.

3. Program derleme işlemi

Uygulamaya geçmeden ve ilk programımızı oluşturmadan önce, montaj işleminin nasıl gerçekleştiğini, hangi aşamalardan oluştuğunu anlamamız gerekir.

Her ciddi program birçok dosyadan oluşur, bunlar .c uzantılı kaynak dosyalar ve .h uzantılı başlık dosyalarıdır. Bu başlık dosyaları, programa kitaplıklardan veya diğer dosyalardan aktarılan işlevleri içerir.c. Önce. derleyici programı nasıl derleyebilir ve çalışmaya hazırlayabilir, tüm işlevlerin gerçekten uygulanıp uygulanmadığını, tüm statik kitaplıkların mevcut olup olmadığını kontrol etmesi ve onu tek bir dosyada derlemesi gerekir. Bu nedenle, önce kaynak dosyayı oluşturan önişlemci çalıştırılır, başlık dosyalarının kodunu dahil etmek için include gibi ifadeler yürütülür.

Bir sonraki aşamada, derleyici çalışmaya başlar, kod üzerinde gerekli tüm eylemleri gerçekleştirir, dilin sözdizimsel yapılarını, değişkenleri ayrıştırır ve tüm bunları bir ara koda ve ardından makine komutlarının koduna dönüştürür. daha sonra derleme dilinde bakın. Bu aşamadaki programa nesne modülü adı verilir ve henüz çalışmaya hazır değildir.

Ardından, bağlayıcı çalışmaya gelir. Görevi, nesne modülünü statik kitaplıklar ve diğer nesne modülleri ile bağlamaktır. Her kaynak dosya için ayrı bir nesne modülü oluşturulur. Ancak şimdi program başlatılabilir.

Ve şimdi, GCC derleyicisini kullanarak tüm süreci pratikte görelim.

4. Program nasıl oluşturulur?

Linux'ta program oluşturmak için kullanılan iki tür derleyici vardır, bunlar . Şimdiye kadar, GCC daha yaygındır, bu yüzden bunu dikkate alacağız. Genellikle, program zaten sisteminizde kuruludur, değilse, Ubuntu'da yüklemek için çalıştırabilirsiniz:

sudo apt gcc'yi kur

Programı yazmaya ve derlemeye geçmeden önce sözdizimi ve derleyici seçeneklerine bir göz atalım:

$ gcc seçenekleri source_file_1.c -o bitmiş_dosya

Seçenekler yardımıyla yardımcı programa ne yapacağını, hangi kitaplıkları kullanacağını söylüyoruz, ardından programın kaynak dosyalarını belirliyoruz. Bugün kullanacağımız seçeneklere bakalım:

  • - çıktı için sonucu bir dosyaya yazın;
  • -C- bir nesne dosyası oluşturun;
  • -X- dosya türünü belirtin;
  • -l- statik kitaplığı yükleyin.

Aslında, ihtiyacımız olan en temel şey bu. Şimdi ilk programımızı oluşturalım. Ekrana bir satır metin yazdıracak ve daha ilginç hale getirmek için 9'un karekökünü alacaktır. İşte kaynak kodu:

katmak
#katmak

int ana()(
printf("site\n");
printf("Kök: %f\n", sqrt(9));
0 dönüşü;
}

gcc -c program.c -o program.o

Bu derleme aşamasıdır, programda herhangi bir hata yoksa başarılı olacaktır. Birkaç kaynak dosya varsa, her biri için böyle bir komut yürütülür. Sonra bağlantıyı yapıyoruz:

gcc -lm programı.o -o programı

-l seçeneğine dikkat edin, onunla hangi kitaplıkların dahil edilmesi gerektiğini belirtiriz, örneğin, burada matematiksel işlevler kitaplığını ekliyoruz, aksi takdirde bağlayıcı şu veya bu işlevin nerede olduğunu bulamayacaktır. Ancak bundan sonra programı yürütmek için çalıştırabilirsiniz:

Tabii ki, tüm bu eylemler çeşitli grafik ortamlar kullanılarak gerçekleştirilebilir, ancak her şeyi manuel olarak yaparak, her şeyin nasıl çalıştığını daha iyi anlayabilirsiniz. Ldd komutu yardımıyla programımızın hangi kütüphaneleri kullandığını görebilirsiniz:

Bunlar, dahil ettiğimiz standart libc ve libm olmak üzere iki yükleyici kitaplığıdır.

5. Montaj otomasyonu

Linux altında programlamayı düşündüğümüzde, programların derlenmesini otomatikleştiren sistemi not etmemek mümkün değil. Gerçek şu ki, çok sayıda program kaynak dosyası olduğunda, bunları derlemek için komutları manuel olarak girmeyeceksiniz. Bunları bir kez kaydedebilir ve ardından her yerde kullanabilirsiniz. Bunun için bir make yardımcı programı ve Makefiles var. Bu dosya hedeflerden oluşur ve aşağıdaki sözdizimine sahiptir:

hedef: bağımlılıklar
takım

Hedefin bağımlılığı bir dosya veya başka bir hedef olabilir, ana hedef hepsidir ve komut gerekli derleme eylemlerini gerçekleştirir. Örneğin, programımız için Makefile şöyle görünebilir:

program:program.o
gcc -lm programı.o -o programı

program.o: program.c
gcc -c program.c -o program.o

Ardından, derlemeyi başlatmak için make komutunu çalıştırmanız yeterlidir, yalnızca önceki geçici dosyaları ve yerleşik programı kaldırmayı unutmayın:

Program tekrar hazır ve çalıştırabilirsiniz.

sonuçlar

yaratılış Linux programlarıçok ilginç ve heyecan verici. Bu konuya biraz aşina olduğunuzda bunu kendiniz göreceksiniz. Bu kadar kısa bir makalede her şeyi ele almak zor, ancak temelleri ele aldık ve bunlar size bir temel sağlamalıdır. Bu yazıda linux'ta programlamanın temellerini ele aldık, herhangi bir sorunuz varsa yorumlarda sorun!

Linux için C Programlama Kursu:

Geleneksel olarak açık işletim sistemleri için program yazmak için kullanılan araçlar, GNU geliştirici araçlarıdır. Biraz tarihsel arka plan yapalım. GNU Projesi, 1984 yılında Richard Stallman tarafından kuruldu. Gerekliliği, o zamanlar programcılar arasındaki işbirliğinin zor olmasından kaynaklanıyordu, çünkü ticari mal sahipleri yazılım böyle bir işbirliğinin önünde çok sayıda engel yarattı. GNU projesinin amacı, kimsenin bu yazılıma münhasır haklar atamasına izin vermeyecek tek bir lisans altında bir dizi yazılım yaratmaktı. Bu kitin bir parçası, kullanacağımız ve tüm Linux dağıtımlarına dahil edilmesi gereken geliştirici araç kitidir.

Bu araçlardan biri de GCC derleyicisidir. Bu kısaltma başlangıçta GNU C Derleyicisi anlamına geliyordu. Şimdi bunun anlamı - GNU Derleyici Koleksiyonu.

GCC kullanarak ilk programı oluşturalım. Geleneğe göre, ilk program basitçe "Merhaba dünya!" - "Selam Dünya!".

Oluşturacağımız programların kaynak kod dosyaları düz metin dosyalarıdır ve herhangi bir metin düzenleyici (örn. GEdit KWrite, Kate ve daha geleneksel Linux kullanıcıları vi ve emacs) kullanılarak oluşturulabilir. Metin düzenleyicilere ek olarak, kendi yerleşik düzenleyicileri olan özel geliştirme ortamları da vardır. Böyle bir araç KDevelop'tur. İlginç bir şekilde, yerleşik bir düzenleyiciye ve düzenleyicinin hemen altında yerleşik bir konsola sahiptir. Böylece, pencereler arasında geçiş yapmadan doğrudan tek bir programda yapabilir ve kodu düzenleyebilir ve konsol komutları verebilirsiniz.

Ayrı bir merhaba dizini oluşturun. Bu bizim ilk proje dizinimiz olacak. içinde yarat Metin dosyası merhaba.c aşağıdaki metinle birlikte:

#katmak

printf("Merhaba dünya!\n");

Ardından konsolda proje dizinine gidin. bir ekip çevir

Şimdi ne olduğuna yakından bakın. Dizinde yeni bir a.out dosyası belirdi. Bu yürütülebilir dosyadır. Hadi başlatalım. Konsola şunu yazın:

Program başlamalı, yani metin görünmelidir:

gcc derleyicisi, oluşturulan tüm yürütülebilir dosyalara varsayılan olarak a.out adını atar. Farklı bir şekilde adlandırmak istiyorsanız -o bayrağını ve adlandırmak istediğiniz adı derleme komutuna eklemeniz gerekir. Aşağıdaki komutu yazalım:

gcc merhaba.c -o merhaba

Dizinde merhaba adlı yürütülebilir bir dosyanın göründüğünü görüyoruz. Hadi başlatalım.

Gördüğünüz gibi, sonuç tamamen aynı yürütülebilir dosya, yalnızca bizim için uygun bir adla.

-o bayrağı, birçok gcc derleyici bayrağından yalnızca biridir. Diğer bazı bayraklar daha sonra tartışılacaktır. Olası tüm bayrakları görmek için man help sistemini kullanabilirsiniz. Komut satırına şunu yazın:

Bu program için size bir yardım sistemi sunulacaktır. Her bayrağın ne anlama geldiğini gözden geçirin. Yakında bazılarıyla tanışacağız. Yardım sisteminden q tuşu ile çıkılır.

Elbette, geliştirme dizinimizden bir program çalıştırdığımızda, dosya adından önce bir nokta ve eğik çizgi yazdığımızı fark etmişsinizdir. Bunu neden yapıyoruz?

Gerçek şu ki, eğer sadece ismi yazarsak çalıştırılabilir dosya, işletim sistemi onu /usr/bin ve /usr/local/bin dizinlerinde arayacak ve elbette bulamayacak. /usr/bin ve /usr/local/bin dizinleri sistem konum dizinleridir. yürütülebilir programlar. Bunlardan ilki, genellikle programların kararlı sürümlerini barındırmak için tasarlanmıştır. Linux dağıtımı. İkincisi, kullanıcının kendisi tarafından yüklenen programlar içindir (kimsenin kararlılığı için kefil olmadığı). Bunları birbirinden ayırmak için böyle bir sisteme ihtiyaç vardır. Varsayılan olarak, programlar oluşturulduklarında /usr/local/bin dizinine kurulur. /usr/bin içine fazladan herhangi bir şey koymak veya oradan manuel olarak bir şey silmek son derece istenmeyen bir durumdur çünkü bu sistem çökmesine neden olabilir. Kararlılığından dağıtım geliştiricilerinin sorumlu olduğu programlar yerleştirilmelidir.

Başka bir yerde bulunan bir programı çalıştırmak için, programın tam yolunu şu şekilde belirtmeniz gerekir:

/home/dima/projeler/merhaba/merhaba

Veya başka bir seçenek: yolu şu anda konsolda bulunduğunuz geçerli dizine göre yazın. Bu durumda, bir nokta geçerli dizin, iki nokta - üst dizin anlamına gelir. Örneğin ./hello komutu bulunduğu dizinde bulunan hello programını çalıştırır, ../hello komutu üst dizinde bulunan hello programını çalıştırır, ./projects/hello/hello komutu ise içindeki alt dizinlerdeki programı çalıştırır. geçerli dizin.

Programlara giden sistem yolları listesine ek dizinler eklemek mümkündür. Bunu yapmak için PATH sistem değişkenine yeni bir yol ekleyin. Ama şimdilik asıl konudan uzaklaşmayalım. Ortam Değişkenleri ayrı bir konuşmadır.

Şimdi gcc programının ne yaptığına bakalım. Çalışması üç aşamadan oluşur: ön işleme, derleme ve bağlama (veya bağlama).

Önişlemci, #include yönergelerinde belirtilen tüm başlık dosyalarının içeriğini ana dosyaya dahil eder. Başlık dosyaları genellikle programda kullanılan ancak program metninde tanımlanmayan işlevlerin bildirimlerini içerir. Tanımları başka bir yerde: ya başka kaynak dosyalarda ya da ikili kitaplıklarda.

İkinci aşama derlemedir. C/C++ dilindeki program metnini bir dizi makine talimatına dönüştürmekten oluşur. Sonuç bir nesne dosyasında saklanır. Tabii ki, farklı işlemci mimarilerine sahip makinelerde, ikili dosyalar farklı formatlarda elde edilir ve bir makinede başka bir makinede oluşturulmuş bir ikiliyi çalıştırmak imkansızdır (aynı işlemci mimarisine ve aynı işletim sistemlerine sahip olmadıkça). Bu nedenle UNIX benzeri sistemler için programlar kaynak kodları olarak dağıtılır: kimin hangi işlemciye ve hangi işletim sistemine sahip olduğuna bakılmaksızın tüm kullanıcılar tarafından kullanılabilir olmalıdırlar.

Son aşama düzendir. Bir projedeki tüm nesne dosyalarını tek bir dosyaya bağlamaktan, işlev çağrılarını tanımlarına bağlamaktan ve projede çağrılan ancak tanımlanmayan işlevleri içeren kitaplık dosyalarını eklemekten oluşur. Sonuç olarak, nihai hedefimiz olan yürütülebilir bir dosya oluşturulur. Bir programda bir işlev kullanılıyorsa, ancak bağlayıcı bu işlevin tanımlandığı yeri bulamazsa, bir hata mesajı verir ve çalıştırılabilir bir dosya oluşturmayı reddeder.

Şimdi pratikte nasıl göründüğüne bakalım. Başka bir program yazalım. Toplama, çıkarma, çarpma ve bölme yapabilen en ilkel hesap makinesi olacak. Başlatıldığında, işlem yapmak için sırayla iki sayı isteyecek ve ardından aritmetik işlemin işaretini girmenizi isteyecektir. Dört karakter olabilir: "+", "-", "*", "/". Bundan sonra, program sonucu görüntüler ve durur (bizi işletim sistemi veya daha doğrusu, programı çağırdığımız komut yorumlayıcısına).

Proje için oluşturalım yeni dosya kalkul, içinde kalkul.c dosyasını oluşturacağız.

#katmak

printf("Birinci sayi: ");

scanf("%f",&num1);

printf("İkinci sayı: ");

scanf("%f",&num2);

printf(" Operatör (+ - * /): ");

while ((op = getchar()) != EOF)

printf("%6.2f\n",say1 + sayi2);

başka if(op == "-")

printf("%6.2f\n", sayi1 - sayi2);

başka if(op == "*")

printf("%6.2f\n", sayi1 * sayi2);

başka if(op == "/")

printf("Hata: sifira bölme!\n");

kırmak;

printf("%6.2f\n",sayi1 / sayi2);

Yani öncelikle söylendiği gibi ön işleme yapılır. Bu aşamada ne yapıldığını görmek için -E seçeneğini kullanacağız. Bu seçenek, programın yürütülmesini ön işlemci tarafından işleme aşamasında durdurur. sonuç bir dosyadır kaynak kodu içinde bulunan başlık dosyalarının içeriği ile.

Bizim durumumuzda, bir başlık dosyası ekledik - stdio.h - bir koleksiyon standart özellikler giriş çıkış. Bu işlevler konsola istenen metni verir ve konsoldan girdiğimiz kelimeleri de okur.

Aşağıdaki komutu girin:

gcc -E kalkul.c -o kalkul.cpp

Ortaya çıkan dosyaya kalkul.cpp adını verdik. Aç onu. Lütfen oldukça uzun olduğunu unutmayın. Bunun nedeni, stdio.h başlık dosyasındaki tüm kodu içermesidir. Ek olarak, önişlemci buraya derleyiciye bildirilen işlevlerle nasıl iletişim kuracağını söyleyen bazı etiketler ekledi. Programımızın ana metni sadece en altta görünür.

Stdio.h başlık dosyasında başka hangi işlevlerin bildirildiğini de görebilirsiniz. Belirli bir işlev hakkında bilgi almak istiyorsanız, yerleşik adamdan bu konuda soru sorabilirsiniz. Örneğin, fopen gizemli işlevinin ne yaptığını birdenbire öğrenmek isterseniz, şunu yazabilirsiniz:

Yardım sistemi bilgisinde de birçok bilgi var.

herkese sorabilirsin başlık dosyası hemen.

Şimdi bir sonraki adıma bakalım. Bir nesne dosyası oluşturalım. Bir nesne dosyası, çağrılan işlevleri tanımlarıyla ilişkilendirmeden, program kodumuzun makine diline "kelimesi" çevirisidir. -c seçeneği, bir nesne dosyası oluşturmak için kullanılır.

Derleyici yalnızca kaynak dosyanın adını aldığı ve .c uzantısını .o olarak değiştirdiği için ortaya çıkan dosyanın adı atlanabilir (farklı bir şekilde adlandırmak isteyip istemediğimizi belirtebilirsiniz).

Önişlemci tarafından önceden işlenmiş bir kaynaktan (yukarıda aldığımız gibi) bir nesne dosyası oluşturuyorsak, derlenen dosyanın önişlemci tarafından işlenmiş bir kaynak kod dosyası olduğunu açıkça belirtmeliyiz. ve önişlemci etiketlerine sahiptir. Aksi takdirde şu şekilde işlenecektir: normal dosya C++, önişlemci etiketlerini hesaba katmadan, bu, bildirilen işlevlerle ilişkinin kurulmayacağı anlamına gelir. -x seçeneği, işlenmekte olan dosyanın dilini ve biçimini açıkça belirtmek için kullanılır. Önişlemci tarafından işlenen C++ dosyası cpp-output ile gösterilir.

gcc -x cpp-çıktı -c kalkul.cpp

Son olarak, son adım düzendir. Yürütülebilir dosyayı nesne dosyasından alıyoruz.

gcc kalkul.o -o kalkul

Çalıştırabilirsin.

Soruyorsunuz: “Ara adımlarla neden tüm bu yaygara? gcc kalkul.c -o kalkul'u bir kez çalıştırmak daha iyi olmaz mıydı?"

Gerçek şu ki, gerçek programlar çok nadiren tek bir dosyadan oluşur. Kural olarak, birkaç kaynak dosya vardır ve bunlar bir projede birleştirilir. Ve bazı istisnai durumlarda, programın farklı dillerde yazılmış birkaç bölümden derlenmesi gerekir. Bu durumda, her biri kaynağından bir nesne dosyası alacak şekilde farklı dillerden derleyiciler çalıştırmanız ve ardından ortaya çıkan bu nesne dosyalarını yürütülebilir bir programa bağlamanız gerekir.

Dmitry Panteleichev (dimanix2006 at rambler dot ru) - GCC derleyicisine giriş

İsim: Linux'ta C++ Programlama.

"Linux'ta C++ ile Programlama" kitabı, KDEvelop geliştirme ortamında C++ uygulamaları geliştirmeye adanmıştır. Kitabın yazarı veriyor Detaylı Açıklama uygulama bileşeni etkileşimleri, Qt Designer yardımcı programı ile çalışmanın temellerini kapsar ve iletişim kutularındaki kontrolleri ve bunların yaratıldığı sınıfları tartışır. Kitap, uygulama arayüzü öğeleri oluşturarak Belge/Görünüm kavramını öğretir. Ekranda görüntülenen çeşitli bilgileri kaydetme ve geri yükleme, metin editörleri geliştirme, etkileşimli süreçlere dayalı uygulamalarda çoklu görev düzenleme, sınıf ve işlev şablonları ile çalışma gibi konular da işlenir. Sonuç olarak, yazar verir yararlı tavsiye Geliştirilen uygulama için bir yardım sistemi oluşturmak. Kitap profesyonel programcılar için tasarlanmıştır.


Kitap, KDevelop geliştirme ortamında C++ ile yazılmış uygulamalar oluşturmaya ayrılmıştır. Uygulama bileşenlerinin etkileşim yollarının açıklaması verilmiştir. Qt Designer yardımcı programı ile çalışma ele alınır ve iletişim kutularında kullanılan ana kontrollerin yanı sıra bunlarla çalışmak için oluşturulan sınıflar açıklanır. Okuyucu, Belge/Görünüm konseptiyle tanışır ve uygulama kullanıcı arabirimi öğelerinin nasıl oluşturulacağını öğrenir. Ek olarak, ayrı bölümler ekranda çeşitli bilgilerin görüntülenmesi, kaydedilmesi ve bir dosyadan geri yüklenmesi, metin editörleri oluşturulması, sınıf ve işlev şablonlarıyla çalışma ve etkileşimli süreçlere dayalı bir uygulamada çoklu görev düzenleme konularını ele alır. Uygulamanın yardım sistemini oluşturmaya yönelik yönergelerle sona erer.

İçerik:
giriiş
Bu kitap kimin için?
kitap yapısı
Bu kitapta kullanılan kurallar
Donanım ve yazılım gereksinimleri
Bölüm 1 Uygulama Bileşenlerinin Etkileşimi
Sinyaller ve alıcılar
Sinyal gönderme
Alıcı Uygulaması
Bağlantı Uygulaması
Olay işleme
Bir pencere ile çalışmak
Giriş odağıyla çalışma
Fare İşlemi
Klavye işlemi
Sürükle ve bırak uygulaması
Olay filtreleri
Sentetik olaylar
Olay İşleme Sırası
Çözüm
Bölüm 2 İletişim Kutuları ve Temel Kontroller
yaratılış diyalog uygulaması
Bir uygulama saplaması oluşturun
İletişim Kutusu Hazır Ayarı Oluşturma
Diyalog Uygulamasının Tamamlanması
Özel İletişim Kutuları Oluşturma
Sekmeli İletişim Kutusu Oluşturma
Sihirbaz Oluşturma
Bölüm 3 Kontrol sınıfları
Liste sınıfı
Lineer Regülatör ve Lineer Gösterge Sınıfları
Tarih ve saat ile çalışma
4. Bölüm Uygulama, Belge ve Görünüm Sınıfları
Qt çoklu pencere uygulaması
Belge sınıfı
Sınıfı görüntüle
Uygulama sınıfı
Çoklu Pencere KDE Uygulaması
Belge sınıfı
Sınıfı görüntüle
Uygulama sınıfı
Bölüm 5 Kullanıcı arabirimi öğeleri oluşturma
Kullanıcı arayüzü Qt kütüphaneleri
Menüde değişiklik yapma
Durum çubuğuyla çalışma
KDE uygulama kullanıcı arabirimi
Menüde değişiklik yapma
Araç çubuğu özelleştirmesi
Durum çubuğuyla çalışma
Bölüm 6 Ekranda bilgi görüntüleme
Şekil çizimi
Bir fırça ile çalışmak
Pencereyi yeniden çiz
Görünüm Nesnelerini Senkronize Etme
Metin çıktısı
Bit eşlemlerle çalışma
Algoritmaya bağlı bit eşlemler
Cihazdan bağımsız bit eşlemler
Bölüm 1 Belge Dosyalarıyla Çalışmak
Uygulamadaki bilgileri kaydetme ve geri yükleme
İletişim Kutularını Özelleştirme
Menüde değişiklik yapma
Çalışma dizinini ayarlama
Bölüm 8 metin belgeleri
Basit bir metin düzenleyici oluşturma
Daha Karmaşık Bir Düzenleyici Oluşturmak
KDE düzenleyicisini oluşturma
Bölüm 9 Koleksiyon Şablonları ve Sınıfları
Şablonlar
Şablon konsepti
İşlev Şablonları
Sınıf Şablonları
Koleksiyon sınıfları
Koleksiyon sınıfı türleri
diziler
bağlantılı listeler
Haritaları göster
Diğer koleksiyon sınıfları
Bölüm 10 Bir Uygulamada Çoklu Görev Gerçekleştirme
Süreç etkileşimi
Basit bir sunucu için istemci oluşturma
Daha Karmaşık Bir Sunucu Oluşturma
müşteri oluştur
Bazı açıklamalar
Bölüm 11 Uygulama Yardımı
Referans Bilgileri Sunum Formları
Yardım sistemine nasıl erişilir
Arka plan bilgilerini sunmanın yolları
Bilgi sunum biçimleri
Bağlam yardımı programlama
İpucu çıktısı
Durum çubuğunda yardım bilgilerinin görüntülenmesi
Belirli bir öğe hakkında bilgi alma
Kullanıcı arayüzü
Programlama komut yardımı
Qt Uygulamaları için Komut Yardımı Dosya Biçimi
Bir Qt Demo Uygulaması Oluşturma
Ek 1 CD'de neler var?
Ek 2 İnternet Kaynakları
konu dizini


Ücretsiz indirin e-kitap uygun bir formatta izleyin ve okuyun:
Linux'ta C++ Programlama - Nikolay Sekunov - fileskachat.com kitabını hızlı ve ücretsiz indirin.

PDF İndir
Bu kitabı aşağıdan satın alabilirsiniz en iyi fiyat Rusya genelinde teslimat ile indirimli.

Konunun çok alakalı olduğu ortaya çıktı. Bazı hatalar ve sorular dikkate alındı, sonuç olarak ikinci bir ustalık sınıfının düzenlenmesine karar verildi. Eklendi ve düzeltildi!

Linux altında C programlamada ustalık sınıfı. Ana API'yi inceliyoruz.

Bu eğitim, API'yi öğrenmek isteyenler içindir * beğenmeyinİşletim sistemi, özellikle Linux altında. Burada, aşağıdakileri içeren Linux işletim sistemi altındaki geliştirme özelliklerini ele alacağız:


  • Yazılım oluşturma sürecine ve GCC'den C derleyicisinin özelliklerine aşinalık

  • Paylaşılan Kitaplıkları Geliştirme ve Kullanma

  • Hata ayıklama programları

  • Düşük seviyeli dosya G/Ç mekanizmalarını keşfetme

  • Çoklu görev ve süreçler arası iletişimi sağlamak için mekanizmaları incelemek

  • Dosya ve ağ soketlerini kullanma

  • Sinyal mekanizmasının incelenmesi ve uygulanması

  • Süreçlerin incelenmesi, iş parçacıkları, bunların farkı, çoklu iş parçacığı kullanımı, iş parçacığı senkronizasyon mekanizmalarının incelenmesi ve sorunları

  • Arka plan programı oluşturma, arka plan programı ve uygulama yazılımı arasındaki farkı öğrenme

  • Konsol G/Ç Özelliklerini Keşfetme

  • Bellek eşlemeli dosyalar ve bunların nasıl kullanılacağı

Bu ana sınıf, öncelikle yazılım geliştiricileri, mühendisler, programcılar ve yalnızca cihazla ve Linux işletim sisteminin özellikleriyle ilgilenen amatörler için tasarlanmıştır.

Ana sınıfın katılımcıları için gereksinimler: Kitap düzeyinde C dili bilgisi B.V. Kernighan, D.M. Ritchie "C DİLİ".

Bu ana sınıfın maliyeti 6.000 ruble olacak.

Mekan, Hackspace Neuron tesislerinde Moskova şehridir.
Tarihler: Yaklaşık 4 Temmuz (Pazartesi), - 7 Temmuz (Perşembe) arası, öğle yemeği molası ve çay/kahve molaları ile 10:00-17:00 arası.

Çevrimiçi yayın planlanmamıştır.
Gruptaki kişi sayısı: 8-10.

Kayıt yapılır e-posta [e-posta korumalı] veya bu gönderiye yorum yapın. Kayıt için tam adınız gereklidir. (tam olarak) ve iletişim bilgileri (telefon numarası ve posta). Bu ana sınıfa katılmanın amacını, eğitim düzeyini ve mesleği açıklamak arzu edilir.

Ayrıntılı kurs programı:

Modül 1: Giriş


  • GNU/Linux'ta yazılım oluşturmanın özelliklerine aşinalık

  • konsola giriş metin editörleri(vi,nano,mcedit)

  • gdb hata ayıklayıcı ile çalışma

  • Manuel ve otomatik yazılım montajı (Makefile)

  • İstemci-Arayüz-Sunucu (CIS) modeli

  • Statik kütüphane binası

  • Paylaşılan Kitaplıklar

  • Ortam değişkenleriyle çalışma

Modül 2: Düşük seviye G/Ç ve dosya işlemleri

  • Linux G/Ç Mekanizmalarına Genel Bakış (Ubuntu)

  • Dosya tanımlayıcıları

  • Sistem çağrıları: aç, kapat, yaz, oku ve ara

  • Dosya türleri

  • Düğümler ve sabit bağlantılar

  • Dosya izinleri

  • işlem dosya sistemi

  • Bir dizinin içeriğini okumanın iki yolu

  • Seyrek dosyalar ve kullanım özellikleri

  • Bir dosyanın alanlarını engelleme

Modül 3

  • Linux İşlemler Arası İletişim Mekanizmaları (Ubuntu)

  • İsimsiz borular (borular)

  • Adlandırılmış kanallar

  • Mesajlar (mesaj kuyruğu)

  • Paylaşılan hafıza

  • Semaforlar

Modül 4

  • Bir dosya ad alanındaki yuvalar (UNIX yuvaları)

  • Çift prizler

  • Ağ soketleri (soketler)

Modül 5. Sinyaller

  • Sinyallere Giriş

  • Sinyallerin diğer süreçler arası iletişim mekanizmalarından farkı nedir?

  • Sinyal işlemenin özellikleri

  • Modül 6

  • Klonlama işlemleri - fork()

  • Yürütülen bir işlemi değiştirme - exec()

  • Zombiler (zombiler) - onları ortadan kaldırmanın nedenleri ve yolları

Modül 7Modül 8 - Konular (devamı)

  • Bir iş parçacığı sonlandırma işleyicisi oluşturun

  • İlkelleri senkronize et

  • Akış Özellikleri

Modül 9: Daemon'lar (Hizmetler)

  • Arka plan programı ve konsol yardımcı programı arasındaki fark

  • Daemons geliştirme özellikleri

  • Ağ Soketlerini Kullanarak Arka Plan Programı Oluşturma

Modül 10: Konsol G/Ç

  • Konsol uygulamaları geliştirmenin özellikleri

  • Çıktı Yönlendirmesini Önleme

  • Terminal yönetimi

  • Kimlik doğrulama sırasında kullanıcının parolasını gizleme

  • ESC Sekansları ile Terminal Kontrolü

Modül 11

  • Normal bir dosya gösteriliyor

  • dosya paylaşma

  • Özel ekranlar

  • mmap'in diğer kullanımları

Modül 12

  • 64 bit uygulama geliştirmenin özellikleri

  • ncurses kütüphanesini kullanma

Kurs lideri: Sergey Dolin. Elektronik mühendisi, linux yazılım geliştiricisi (uygulamalı, donanım için test yazılımı, sürücüler). Gömülü yazılım geliştiricisi. 2011'den beri Linux programcısı. OAO NICEVT, JSC Concern Sistemprom, OOO PROSOFT'ta (Dolamant'ın bir yan kuruluşunda) çalıştı.