{"id":35356,"date":"2025-11-28T19:01:59","date_gmt":"2025-11-28T16:01:59","guid":{"rendered":"https:\/\/fatihsoysal.com\/blog\/ubuntuda-c-kurulumu-ve-gelistirme-ortami-ayarlari\/"},"modified":"2025-11-28T19:01:59","modified_gmt":"2025-11-28T16:01:59","slug":"ubuntuda-c-kurulumu-ve-gelistirme-ortami-ayarlari","status":"publish","type":"post","link":"https:\/\/fatihsoysal.com\/blog\/ubuntuda-c-kurulumu-ve-gelistirme-ortami-ayarlari\/","title":{"rendered":"Ubuntu&#8217;da C++ Kurulumu ve Geli\u015ftirme Ortam\u0131 Ayarlar\u0131"},"content":{"rendered":"<p><body><\/p>\n<p>Ubuntu \u00fczerinde C++ geli\u015ftirme ortam\u0131n\u0131z\u0131 kurmak ve yap\u0131land\u0131rmak, performansl\u0131 ve g\u00fc\u00e7l\u00fc uygulamalar yaratman\u0131n ilk ad\u0131m\u0131d\u0131r. Bu rehberde, derleyici kurulumundan modern IDE entegrasyonuna, hata ay\u0131klama tekniklerinden proje y\u00f6netimine kadar t\u00fcm s\u00fcreci ad\u0131m ad\u0131m ke\u015ffedeceksiniz. G\u00fcn\u00fcm\u00fczde yaz\u0131l\u0131m d\u00fcnyas\u0131nda performans, g\u00fcvenlik ve kaynak y\u00f6netimi gibi kritik fakt\u00f6rler, C++&#8217;\u0131 vazge\u00e7ilmez bir dil haline getirmektedir. Oyun motorlar\u0131ndan i\u015fletim sistemlerine, finansal uygulamalardan g\u00f6m\u00fcl\u00fc sistemlere kadar geni\u015f bir yelpazede kullan\u0131lan C++, donan\u0131ma yak\u0131n seviyede kontrol sa\u011flayarak uygulamalar\u0131n tam potansiyeline ula\u015fmas\u0131na olanak tan\u0131r.<\/p>\n<p>Peki neden Ubuntu? A\u00e7\u0131k kaynakl\u0131 Linux da\u011f\u0131t\u0131mlar\u0131 aras\u0131nda en pop\u00fcler ve kullan\u0131c\u0131 dostu olan Ubuntu, geli\u015ftiricilere g\u00fc\u00e7l\u00fc bir terminal, zengin paket deposu ve geni\u015f bir topluluk deste\u011fi sunar. Bu kombinasyon, C++ ile geli\u015ftirme yapmak isteyenler i\u00e7in ideal bir platform olu\u015fturur. \u0130ster yeni ba\u015flayan bir yaz\u0131l\u0131mc\u0131 olun ister deneyimli bir geli\u015ftirici, bu makale size Ubuntu&#8217;da sa\u011flam ve verimli bir C++ geli\u015ftirme ortam\u0131 kurman\u0131z i\u00e7in gerekli t\u00fcm bilgileri sunacakt\u0131r. Bu s\u00fcre\u00e7 boyunca kar\u015f\u0131la\u015fabilece\u011finiz potansiyel sorunlara \u00e7\u00f6z\u00fcmler \u00fcretirken, ayn\u0131 zamanda geli\u015ftirme al\u0131\u015fkanl\u0131klar\u0131n\u0131z\u0131 daha verimli hale getirecek ipu\u00e7lar\u0131 da payla\u015faca\u011f\u0131z. \u00d6zellikle sistem programlama, y\u00fcksek performansl\u0131 bilgi i\u015flem veya g\u00f6m\u00fcl\u00fc sistemler alan\u0131nda \u00e7al\u0131\u015fmay\u0131 d\u00fc\u015f\u00fcn\u00fcyorsan\u0131z, C++ ve Ubuntu ikilisi sizin i\u00e7in m\u00fckemmel bir ba\u015flang\u0131\u00e7 noktas\u0131 olacakt\u0131r.<\/p>\n<p>Bu makalede sadece temel kurulum ad\u0131mlar\u0131n\u0131 de\u011fil, ayn\u0131 zamanda proje y\u00f6netimi i\u00e7in CMake gibi modern ara\u00e7lar\u0131, verimli hata ay\u0131klama tekniklerini ve Visual Studio Code gibi pop\u00fcler entegre geli\u015ftirme ortamlar\u0131n\u0131n (IDE) nas\u0131l yap\u0131land\u0131r\u0131laca\u011f\u0131n\u0131 da detayl\u0131ca ele alaca\u011f\u0131z. Amac\u0131m\u0131z, sizi C++&#8217;\u0131n derinliklerine yolculu\u011fa \u00e7\u0131kar\u0131rken, bu s\u00fcreci olabildi\u011fince sorunsuz ve keyifli hale getirmektir. Bu kapsaml\u0131 rehber, hem teorik bilgileri hem de pratik uygulamalar\u0131 bir araya getirerek \u00f6\u011frenme s\u00fcrecinizi h\u0131zland\u0131racak ve sizi C++ d\u00fcnyas\u0131nda yetkin bir geli\u015ftirici olmaya bir ad\u0131m daha yakla\u015ft\u0131racakt\u0131r. Haz\u0131rsan\u0131z, Ubuntu&#8217;da C++&#8217;\u0131n b\u00fcy\u00fcleyici d\u00fcnyas\u0131na ad\u0131m atal\u0131m!<\/p>\n<h2>Temel Kavramlar: C++ Geli\u015ftirme Ortam\u0131 Nedir ve Neleri \u0130\u00e7erir?<\/h2>\n<p>C++ ile yaz\u0131l\u0131m geli\u015ftirmeye ba\u015flamadan \u00f6nce, bir geli\u015ftirme ortam\u0131n\u0131n hangi temel bile\u015fenlerden olu\u015ftu\u011funu anlamak b\u00fcy\u00fck \u00f6nem ta\u015f\u0131r. Bir C++ geli\u015ftirme ortam\u0131, kod yazman\u0131za, derlemenize, \u00e7al\u0131\u015ft\u0131rman\u0131za ve hatalar\u0131 ay\u0131klaman\u0131za olanak tan\u0131yan bir dizi ara\u00e7 ve yaz\u0131l\u0131m\u0131n b\u00fct\u00fcn\u00fcd\u00fcr. Bu bile\u015fenler, yazd\u0131\u011f\u0131n\u0131z kaynak kodunu (source code) bilgisayar\u0131n anlayabilece\u011fi makine koduna d\u00f6n\u00fc\u015ft\u00fcrmekten, program\u0131n\u0131z\u0131n do\u011fru bir \u015fekilde \u00e7al\u0131\u015fmas\u0131n\u0131 sa\u011flamaya kadar \u00e7e\u015fitli g\u00f6revleri \u00fcstlenir. Bu ara\u00e7lar\u0131n her biri, geli\u015ftirme s\u00fcrecinizin farkl\u0131 a\u015famalar\u0131nda kritik roller oynar ve entegre bir \u015fekilde \u00e7al\u0131\u015farak verimli bir i\u015f ak\u0131\u015f\u0131 sunar.<\/p>\n<p>En temel bile\u015fen, \u015f\u00fcphesiz <strong>Derleyicidir (Compiler)<\/strong>. C++ kodunuzu okur ve bunu i\u015flemcinin do\u011frudan y\u00fcr\u00fctebilece\u011fi ikili (binary) bir dosyaya \u00e7evirir. Ubuntu ve \u00e7o\u011fu Linux sisteminde yayg\u0131n olarak kullan\u0131lan derleyici ailesi GNU Compiler Collection (GCC)&#8217;d\u0131r. \u00d6zellikle C++ i\u00e7in GCC&#8217;nin bir par\u00e7as\u0131 olan G++ derleyicisi kullan\u0131l\u0131r. Derleyici, s\u00f6zdizimi hatalar\u0131n\u0131 kontrol eder ve kodunuzu optimize etmeye \u00e7al\u0131\u015f\u0131r. Derleme s\u00fcreci, \u00f6n i\u015fleme, derleme, birle\u015ftirme (assembly) ve ba\u011flama (linking) olmak \u00fczere d\u00f6rt ana a\u015famadan olu\u015fur.<\/p>\n<p>Derleyiciden sonra gelen bir di\u011fer \u00f6nemli bile\u015fen <strong>Ba\u011flay\u0131c\u0131d\u0131r (Linker)<\/strong>. Program\u0131n\u0131z birden fazla kaynak dosyadan veya harici k\u00fct\u00fcphanelerden olu\u015ftu\u011funda, ba\u011flay\u0131c\u0131 t\u00fcm bu par\u00e7alar\u0131 bir araya getirerek \u00e7al\u0131\u015ft\u0131r\u0131labilir son bir dosya olu\u015fturur. Bu, \u00f6zellikle b\u00fcy\u00fck ve mod\u00fcler projelerde kodun yeniden kullan\u0131labilirli\u011fini art\u0131r\u0131r ve derleme s\u00fcrelerini k\u0131salt\u0131r. \u00d6rne\u011fin, matematiksel fonksiyonlar i\u00e7in bir k\u00fct\u00fcphane kullan\u0131yorsan\u0131z, ba\u011flay\u0131c\u0131 bu fonksiyonlar\u0131n tan\u0131mlar\u0131n\u0131 program\u0131n\u0131za ekler.<\/p>\n<p>Program\u0131n\u0131z\u0131n do\u011fru \u00e7al\u0131\u015ft\u0131\u011f\u0131ndan emin olmak ve hatalar\u0131 bulmak i\u00e7in ise <strong>Hata Ay\u0131klay\u0131c\u0131ya (Debugger)<\/strong> ihtiyac\u0131n\u0131z vard\u0131r. GDB (GNU Debugger), Linux sistemlerinde C++ programlar\u0131 i\u00e7in en yayg\u0131n kullan\u0131lan hata ay\u0131klay\u0131c\u0131d\u0131r. Program\u0131n\u0131z\u0131n y\u00fcr\u00fct\u00fclmesini kontrol etmenize, belirli noktalarda duraklatman\u0131za (breakpoint), de\u011fi\u015fken de\u011ferlerini incelemenize ve kodun ad\u0131m ad\u0131m nas\u0131l \u00e7al\u0131\u015ft\u0131\u011f\u0131n\u0131 g\u00f6rmenize olanak tan\u0131r. Hata ay\u0131klama, karma\u015f\u0131k yaz\u0131l\u0131mlarda sorun gidermenin vazge\u00e7ilmez bir par\u00e7as\u0131d\u0131r ve geli\u015ftiricinin zaman\u0131n\u0131 b\u00fcy\u00fck \u00f6l\u00e7\u00fcde verimli kullanmas\u0131n\u0131 sa\u011flar.<\/p>\n<p>Son olarak, <strong>Yap\u0131 Ara\u00e7lar\u0131 (Build Systems)<\/strong> ve <strong>Metin D\u00fczenleyiciler\/IDE&#8217;ler<\/strong> yer al\u0131r. Make ve CMake gibi yap\u0131 ara\u00e7lar\u0131, derleme s\u00fcrecini otomatikle\u015ftirerek ve y\u00f6neterek \u00f6zellikle b\u00fcy\u00fck projelerde i\u015fleri basitle\u015ftirir. Kaynak dosyalar\u0131n\u0131z\u0131n ba\u011f\u0131ml\u0131l\u0131klar\u0131n\u0131 izler ve sadece de\u011fi\u015fen dosyalar\u0131 yeniden derleyerek zamandan tasarruf etmenizi sa\u011flar. Metin d\u00fczenleyiciler (\u00f6rne\u011fin Vim, Emacs) veya Entegre Geli\u015ftirme Ortamlar\u0131 (IDE&#8217;ler) (\u00f6rne\u011fin Visual Studio Code, CLion, Code::Blocks) ise kod yazmak, projenizi y\u00f6netmek ve yukar\u0131da bahsedilen t\u00fcm ara\u00e7larla entegre bir \u015fekilde \u00e7al\u0131\u015fmak i\u00e7in kulland\u0131\u011f\u0131n\u0131z aray\u00fczlerdir. Bu ara\u00e7lar, s\u00f6zdizimi vurgulama, otomatik tamamlama, kod refakt\u00f6rleme ve s\u00fcr\u00fcm kontrol entegrasyonu gibi \u00f6zelliklerle \u00fcretkenli\u011finizi art\u0131r\u0131r. Geli\u015ftirme ortam\u0131n\u0131z\u0131n bu temel bile\u015fenleri, C++ yolculu\u011funuzda size rehberlik edecek iskeleti olu\u015fturur.<\/p>\n<h2>Ubuntu&#8217;da C++ Kurulumu Nas\u0131l Yap\u0131l\u0131r? Ad\u0131m Ad\u0131m Rehber<\/h2>\n<p>Ubuntu i\u015fletim sisteminizde C++ geli\u015ftirmeye ba\u015flamak i\u00e7in \u00f6ncelikle gerekli temel ara\u00e7lar\u0131 kurman\u0131z gerekir. Bu b\u00f6l\u00fcm, derleyici, ba\u011flay\u0131c\u0131 ve temel k\u00fct\u00fcphaneleri i\u00e7eren hayati paketleri sisteminize nas\u0131l y\u00fckleyece\u011finizi ad\u0131m ad\u0131m g\u00f6stermektedir. Bu s\u00fcre\u00e7, olduk\u00e7a basittir ve genellikle sadece birka\u00e7 terminal komutu ile tamamlan\u0131r. Unutmay\u0131n, Linux tabanl\u0131 sistemlerde yaz\u0131l\u0131m kurulumunun temelini paket y\u00f6neticileri olu\u015fturur ve Ubuntu i\u00e7in bu g\u00f6rev <code>apt<\/code> (Advanced Package Tool) taraf\u0131ndan \u00fcstlenilir. Bu ad\u0131mlar\u0131 takip ederek, ilk C++ program\u0131n\u0131z\u0131 derleyip \u00e7al\u0131\u015ft\u0131rabilecek sa\u011flam bir temel atm\u0131\u015f olacaks\u0131n\u0131z.<\/p>\n<h3>Ad\u0131m 1: Sistem Paket Listesini G\u00fcncellemek Neden \u00d6nemlidir?<\/h3>\n<p>Herhangi bir yaz\u0131l\u0131m kurulumuna ba\u015flamadan \u00f6nce sisteminizin paket listelerini g\u00fcncellemek, hem g\u00fcvenlik hem de uyumluluk a\u00e7\u0131s\u0131ndan kritik bir ad\u0131md\u0131r. Bu sayede, en g\u00fcncel yaz\u0131l\u0131m s\u00fcr\u00fcmlerine eri\u015febilir ve olas\u0131 ba\u011f\u0131ml\u0131l\u0131k sorunlar\u0131n\u0131 minimize edebilirsiniz. Terminali a\u00e7\u0131n (genellikle Ctrl+Alt+T k\u0131sayolu ile) ve a\u015fa\u011f\u0131daki komutu girin:<\/p>\n<pre><code>\nsudo apt update\n  <\/pre>\n<p><\/code><\/p>\n<p>Bu komut, yerel paket listenizi Ubuntu depolar\u0131ndaki en yeni bilgilerle senkronize eder. Ard\u0131ndan, mevcut paketlerinizi en son s\u00fcr\u00fcmlerine y\u00fckseltmek i\u00e7in a\u015fa\u011f\u0131daki komutu kullanabilirsiniz:<\/p>\n<pre><code>\nsudo apt upgrade\n  <\/pre>\n<p><\/code><\/p>\n<p>Bu komut, sisteminizdeki y\u00fckl\u00fc t\u00fcm paketleri g\u00fcvenli bir \u015fekilde g\u00fcncelleyecektir. Bu i\u015flem biraz zaman alabilir, ancak gelecekteki olas\u0131 sorunlar\u0131n \u00f6n\u00fcne ge\u00e7mek i\u00e7in olduk\u00e7a de\u011ferlidir.<\/p>\n<h3>Ad\u0131m 2: Gerekli C++ Geli\u015ftirme Paketlerini Kurmak<\/h3>\n<p>C++ geli\u015ftirme i\u00e7in ihtiyac\u0131n\u0131z olan temel ara\u00e7lar\u0131 tek bir komutla kurabilirsiniz. Ubuntu'da bu ara\u00e7lar\u0131n \u00e7o\u011fu <code>build-essential<\/code> paketi alt\u0131nda toplanm\u0131\u015ft\u0131r. Bu paket, GCC\/G++ derleyicisi, <code>make<\/code> arac\u0131 ve di\u011fer temel geli\u015ftirme k\u00fct\u00fcphanelerini i\u00e7erir. Ayr\u0131ca, hata ay\u0131klama i\u00e7in GDB'yi de bu ad\u0131mda kurmak ak\u0131ll\u0131ca olacakt\u0131r. A\u015fa\u011f\u0131daki komutu kullanarak bu paketleri y\u00fckleyebilirsiniz:<\/p>\n<pre><code>\nsudo apt install build-essential gdb\n  <\/pre>\n<p><\/code><\/p>\n<p>Komutu \u00e7al\u0131\u015ft\u0131rd\u0131ktan sonra, sizden y\u00f6netici \u015fifreniz istenebilir. Onay verdikten sonra sistem, gerekli paketleri indirip kurmaya ba\u015flayacakt\u0131r. Bu paketler genellikle \u00e7ok b\u00fcy\u00fck de\u011fildir ve kurulum h\u0131zl\u0131ca tamamlan\u0131r. Bu ad\u0131m, C++ derleyicisini, temel yap\u0131 ara\u00e7lar\u0131n\u0131 ve hata ay\u0131klay\u0131c\u0131y\u0131 sisteminize ekleyerek geli\u015ftirme ortam\u0131n\u0131z\u0131n \u00e7ekirde\u011fini olu\u015fturur.<\/p>\n<h3>Ad\u0131m 3: Kurulumu Do\u011frulamak ve \u0130lk C++ Program\u0131n\u0131z\u0131 Derlemek<\/h3>\n<p>Kurulumun ba\u015far\u0131l\u0131 olup olmad\u0131\u011f\u0131n\u0131 kontrol etmek i\u00e7in, derleyicinin ve hata ay\u0131klay\u0131c\u0131n\u0131n s\u00fcr\u00fcmlerini sorgulayabilirsiniz:<\/p>\n<pre><code>\ng++ --version\ngcc --version\ngdb --version\n  <\/pre>\n<p><\/code><\/p>\n<p>Bu komutlar, y\u00fckl\u00fc olan derleyici ve hata ay\u0131klay\u0131c\u0131 s\u00fcr\u00fcmlerini terminalde g\u00f6sterecektir. E\u011fer versiyon bilgileri ekrana geliyorsa, her \u015fey yolunda demektir.<\/p>\n<p>\u015eimdi, k\u00fc\u00e7\u00fck bir C++ program\u0131 yazarak kurulumu pratik olarak test edelim. Bir metin d\u00fczenleyici a\u00e7\u0131n (\u00f6rne\u011fin <code>nano<\/code> veya <code>gedit<\/code>) ve a\u015fa\u011f\u0131daki kodu <code>hello.cpp<\/code> ad\u0131yla kaydedin:<\/p>\n<pre><code>\n#include <iostream>\n\nint main() {\n    std::cout << \"Merhaba, Ubuntu C++ D\u00fcnyas\u0131!\" << std::endl;\n    return 0;\n}\n  <\/pre>\n<p><\/code><\/p>\n<p>Dosyay\u0131 kaydettikten sonra, terminale geri d\u00f6n\u00fcn ve <code>hello.cpp<\/code> dosyas\u0131n\u0131n bulundu\u011fu dizine gidin. Ard\u0131ndan, program\u0131 derlemek i\u00e7in G++'\u0131 kullan\u0131n:<\/p>\n<pre><code>\ng++ hello.cpp -o hello\n  <\/pre>\n<p><\/code><\/p>\n<p>Bu komut, <code>hello.cpp<\/code> dosyas\u0131n\u0131 derleyecek ve <code>hello<\/code> ad\u0131nda \u00e7al\u0131\u015ft\u0131r\u0131labilir bir dosya olu\u015fturacakt\u0131r. E\u011fer bir hata mesaj\u0131 almazsan\u0131z, derleme ba\u015far\u0131l\u0131 demektir. Son olarak, program\u0131n\u0131z\u0131 \u00e7al\u0131\u015ft\u0131rmak i\u00e7in:<\/p>\n<pre><code>\n.\/hello\n  <\/pre>\n<p><\/code><\/p>\n<p>Terminalde \"Merhaba, Ubuntu C++ D\u00fcnyas\u0131!\" \u00e7\u0131kt\u0131s\u0131n\u0131 g\u00f6rmeniz gerekiyor. Bu \u00e7\u0131kt\u0131, C++ geli\u015ftirme ortam\u0131n\u0131z\u0131n ba\u015far\u0131yla kuruldu\u011funu ve \u00e7al\u0131\u015ft\u0131\u011f\u0131n\u0131 kan\u0131tlar. Tebrikler, ilk C++ program\u0131n\u0131z\u0131 Ubuntu'da derlediniz ve \u00e7al\u0131\u015ft\u0131rd\u0131n\u0131z!<\/p>\n<div class=\"tip\">\n    Uzman \u0130pucu: <code>-o<\/code> bayra\u011f\u0131, derlenen \u00e7\u0131kt\u0131n\u0131n ad\u0131n\u0131 belirlemenizi sa\u011flar. Belirtmezseniz, varsay\u0131lan olarak <code>a.out<\/code> ad\u0131nda bir dosya olu\u015fturulur. Her zaman anlaml\u0131 bir isim kullanmak iyi bir al\u0131\u015fkanl\u0131kt\u0131r.\n  <\/div>\n<h2>Geli\u015ftirme Ortam\u0131 Se\u00e7imi ve Ayarlamas\u0131: Hangi IDE veya Edit\u00f6r\u00fc Kullanmal\u0131?<\/h2>\n<p>C++ kodunuzu yazarken, derlerken ve hata ay\u0131klarken kullanaca\u011f\u0131n\u0131z aray\u00fcz, geli\u015ftirme verimlili\u011finiz \u00fczerinde do\u011frudan bir etkiye sahiptir. Ubuntu'da C++ geli\u015ftiricileri i\u00e7in bir\u00e7ok g\u00fc\u00e7l\u00fc metin d\u00fczenleyici ve Entegre Geli\u015ftirme Ortam\u0131 (IDE) se\u00e7ene\u011fi bulunmaktad\u0131r. Bu b\u00f6l\u00fcmde, en pop\u00fcler se\u00e7eneklerden baz\u0131lar\u0131n\u0131 inceleyecek ve \u00f6zellikle Visual Studio Code'un (VS Code) kurulumu ile yap\u0131land\u0131rmas\u0131na odaklanaca\u011f\u0131z. Do\u011fru arac\u0131 se\u00e7mek, kod yazma deneyiminizi \u00e7ok daha keyifli ve \u00fcretken hale getirecektir. Her geli\u015ftiricinin tercihleri farkl\u0131 olsa da, modern bir IDE veya g\u00fc\u00e7l\u00fc bir metin d\u00fczenleyici, s\u00f6zdizimi vurgulama, otomatik tamamlama, kod refakt\u00f6rleme ve hata ay\u0131klama entegrasyonu gibi \u00f6zelliklerle vazge\u00e7ilmez bir yard\u0131mc\u0131d\u0131r.<\/p>\n<h3>Visual Studio Code (VS Code) Neden Tercih Edilmelidir ve Nas\u0131l Kurulur?<\/h3>\n<p>Microsoft taraf\u0131ndan geli\u015ftirilen ancak a\u00e7\u0131k kaynakl\u0131 olan Visual Studio Code, hafifli\u011fi, esnekli\u011fi ve zengin eklenti ekosistemi sayesinde C++ geli\u015ftiricileri aras\u0131nda h\u0131zla pop\u00fclerlik kazanm\u0131\u015ft\u0131r. Tam te\u015fekk\u00fcll\u00fc bir IDE olmasa da, do\u011fru eklentilerle bir IDE'nin t\u00fcm i\u015flevselli\u011fini sunabilir. Ubuntu'da VS Code kurulumu i\u00e7in birka\u00e7 farkl\u0131 y\u00f6ntem bulunmaktad\u0131r:<\/p>\n<h4>Y\u00f6ntem 1: Snap Paketi ile Kurulum (\u00d6nerilen)<\/h4>\n<p>Snap, Ubuntu'nun paket y\u00f6netim sistemidir ve uygulamalar\u0131n izole bir ortamda \u00e7al\u0131\u015fmas\u0131n\u0131 sa\u011flar. Bu en kolay ve genellikle en g\u00fcncel s\u00fcr\u00fcm\u00fc edinme y\u00f6ntemidir:<\/p>\n<pre><code>\nsudo snap install --classic code\n  <\/pre>\n<p><\/code><\/p>\n<p><code>--classic<\/code> bayra\u011f\u0131, VS Code'un sistem kaynaklar\u0131na tam eri\u015fim sa\u011flamas\u0131na olanak tan\u0131r, bu da geli\u015ftirme ortamlar\u0131 i\u00e7in genellikle gereklidir. Kurulum tamamland\u0131ktan sonra, uygulamalar men\u00fcs\u00fcnden \"Visual Studio Code\"u arayarak ba\u015flatabilirsiniz.<\/p>\n<h4>Y\u00f6ntem 2: .deb Paketi ile Kurulum<\/h4>\n<p>Alternatif olarak, VS Code'un resmi web sitesinden (.deb) paketini indirebilir ve elle kurabilirsiniz:<\/p>\n<ol>\n<li>VS Code'un resmi indirme sayfas\u0131na gidin: <a href=\"https:\/\/code.visualstudio.com\/download\" target=\"_blank\">code.visualstudio.com\/download<\/a><\/li>\n<li>\"Debian, Ubuntu\" i\u00e7in <code>.deb<\/code> dosyas\u0131n\u0131 indirin.<\/li>\n<li>\u0130ndirdi\u011finiz dizine gidin ve terminalde a\u015fa\u011f\u0131daki komutu \u00e7al\u0131\u015ft\u0131r\u0131n:<\/li>\n<\/ol>\n<pre><code>\nsudo dpkg -i code_*.deb\nsudo apt install -f # Ba\u011f\u0131ml\u0131l\u0131k sorunlar\u0131n\u0131 d\u00fczeltmek i\u00e7in\n  <\/pre>\n<p><\/code><\/p>\n<p>Bu y\u00f6ntem, <code>snap<\/code> kullanmak istemeyenler veya belirli bir s\u00fcr\u00fcm\u00fc kurmak isteyenler i\u00e7in uygundur.<\/p>\n<h3>VS Code'u C++ Geli\u015ftirme \u0130\u00e7in Nas\u0131l Yap\u0131land\u0131rabiliriz?<\/h3>\n<p>VS Code'u kurduktan sonra, C++ geli\u015ftirme deneyimini optimize etmek i\u00e7in baz\u0131 temel eklentileri y\u00fcklemeniz gerekir:<\/p>\n<ul>\n<li><strong>C\/C++ Eklentisi:<\/strong> Microsoft taraf\u0131ndan sa\u011flanan bu eklenti, s\u00f6zdizimi vurgulama, IntelliSense (kod tamamlama), hata ay\u0131klama ve kod gezinme gibi temel C++ \u00f6zelliklerini sa\u011flar. VS Code'u a\u00e7\u0131n, Sol paneldeki \"Uzant\u0131lar\" (Extensions) simgesine t\u0131klay\u0131n (veya Ctrl+Shift+X) ve \"C\/C++\" arat\u0131p kurun.<\/li>\n<li><strong>CMake Tools (\u00d6nemli):<\/strong> CMake tabanl\u0131 projelerle \u00e7al\u0131\u015f\u0131yorsan\u0131z bu eklenti vazge\u00e7ilmezdir.<\/li>\n<\/ul>\n<h4>Basit Bir C++ Projesini VS Code ile \u00c7al\u0131\u015ft\u0131rmak ve Hata Ay\u0131klamak<\/h4>\n<p>Yukar\u0131daki \"Merhaba D\u00fcnya\" projenizi VS Code i\u00e7inde a\u00e7\u0131n. <code>hello.cpp<\/code> dosyas\u0131n\u0131 i\u00e7eren klas\u00f6r\u00fc VS Code'da \"Dosya\" > \"Klas\u00f6r A\u00e7\" se\u00e7ene\u011fiyle a\u00e7\u0131n. Sol alttaki mavi \u00e7ubukta genellikle <code>g++<\/code> derleyicisinin se\u00e7ili oldu\u011funu g\u00f6receksiniz. E\u011fer de\u011filse, sa\u011f alt k\u00f6\u015fedeki di\u015fli simgesine t\u0131klayarak derleyiciyi se\u00e7ebilirsiniz. Hata ay\u0131klama i\u00e7in, sol paneldeki \"\u00c7al\u0131\u015ft\u0131r ve Hata Ay\u0131kla\" (Run and Debug) simgesine t\u0131klay\u0131n. Ard\u0131ndan \"launch.json dosyas\u0131 olu\u015ftur\" se\u00e7ene\u011fini se\u00e7in ve \"C++ (GDB\/LLDB)\" se\u00e7ene\u011fini i\u015faretleyin. VS Code sizin i\u00e7in temel bir <code>launch.json<\/code> dosyas\u0131 olu\u015fturacakt\u0131r. Basit projeler i\u00e7in bu genellikle yeterlidir. Program\u0131n\u0131z\u0131 derlemek ve \u00e7al\u0131\u015ft\u0131rmak i\u00e7in <code>tasks.json<\/code> dosyas\u0131 da kullan\u0131labilir. Bu dosyalar, derleme ve hata ay\u0131klama s\u00fcre\u00e7lerini otomatikle\u015ftirmenizi sa\u011flar.<\/p>\n<div class=\"code-example\">\n<pre><code>\n\/\/ .vscode\/tasks.json \u00f6rne\u011fi (basit bir derleme g\u00f6revi)\n{\n    \"version\": \"2.0.0\",\n    \"tasks\": [\n        {\n            \"label\": \"build hello\",\n            \"type\": \"shell\",\n            \"command\": \"g++\",\n            \"args\": [\n                \"-g\",\n                \"hello.cpp\",\n                \"-o\",\n                \"hello\"\n            ],\n            \"group\": {\n                \"kind\": \"build\",\n                \"isDefault\": true\n            },\n            \"presentation\": {\n                \"reveal\": \"always\"\n            },\n            \"problemMatcher\": \"$gcc\"\n        }\n    ]\n}\n    <\/pre>\n<p><\/code><\/p>\n<pre><code>\n\/\/ .vscode\/launch.json \u00f6rne\u011fi (hello program\u0131n\u0131 hata ay\u0131klama)\n{\n    \"version\": \"0.2.0\",\n    \"configurations\": [\n        {\n            \"name\": \"Debug hello\",\n            \"type\": \"cppdbg\",\n            \"request\": \"launch\",\n            \"program\": \"${workspaceFolder}\/hello\", \/\/ \u00c7al\u0131\u015ft\u0131r\u0131labilir dosyan\u0131z\u0131n yolu\n            \"args\": [],\n            \"stopAtEntry\": false,\n            \"cwd\": \"${workspaceFolder}\",\n            \"environment\": [],\n            \"externalConsole\": false,\n            \"MIMode\": \"gdb\",\n            \"setupCommands\": [\n                {\n                    \"description\": \"Enable pretty-printing for gdb\",\n                    \"text\": \"-enable-pretty-printing\",\n                    \"ignoreFailures\": true\n                }\n            ],\n            \"preLaunchTask\": \"build hello\" \/\/ build hello g\u00f6revinizi \u00e7al\u0131\u015ft\u0131r\u0131r\n        }\n    ]\n}\n    <\/pre>\n<p><\/code>\n  <\/div>\n<p>Bu dosyalar\u0131 olu\u015fturduktan sonra, F5 tu\u015funa basarak program\u0131n\u0131z\u0131 derleyebilir ve hata ay\u0131klama modunda \u00e7al\u0131\u015ft\u0131rabilirsiniz. Bu kurulum, k\u00fc\u00e7\u00fck ve orta \u00f6l\u00e7ekli C++ projeleri i\u00e7in olduk\u00e7a yeterlidir. Daha b\u00fcy\u00fck projelerde ise CMake gibi yap\u0131 ara\u00e7lar\u0131 devreye girecektir.<\/p>\n<h3>Di\u011fer IDE ve Edit\u00f6r Se\u00e7enekleri Nelerdir?<\/h3>\n<ul>\n<li><strong>Code::Blocks:<\/strong> Tamamen C++ odakl\u0131, a\u00e7\u0131k kaynakl\u0131 ve platformlar aras\u0131 bir IDE'dir. Yeni ba\u015flayanlar i\u00e7in kullan\u0131m\u0131 kolay bir aray\u00fcze sahiptir. <code>sudo apt install codeblocks<\/code> komutuyla kurulabilir.<\/li>\n<li><strong>CLion:<\/strong> JetBrains taraf\u0131ndan geli\u015ftirilen \u00fccretli, g\u00fc\u00e7l\u00fc bir IDE'dir. CMake ile m\u00fckemmel entegrasyona ve zengin refakt\u00f6rleme ara\u00e7lar\u0131na sahiptir. Deneyimli ve profesyonel geli\u015ftiriciler i\u00e7in idealdir.<\/li>\n<li><strong>Vim\/Emacs:<\/strong> Terminal tabanl\u0131 bu g\u00fc\u00e7l\u00fc metin d\u00fczenleyiciler, do\u011fru eklentilerle tam te\u015fekk\u00fcll\u00fc bir C++ geli\u015ftirme ortam\u0131na d\u00f6n\u00fc\u015ft\u00fcr\u00fclebilir. Ancak \u00f6\u011frenme e\u011frileri daha diktir ve genellikle deneyimli Linux kullan\u0131c\u0131lar\u0131 taraf\u0131ndan tercih edilir.<\/li>\n<\/ul>\n<p>Se\u00e7iminiz, projenizin b\u00fcy\u00fckl\u00fc\u011f\u00fcne, ki\u015fisel tercihlerinize ve deneyim seviyenize ba\u011fl\u0131 olacakt\u0131r. Ancak genel olarak, VS Code modern C++ geli\u015ftirme i\u00e7in hem esneklik hem de zengin \u00f6zellikler sunan m\u00fckemmel bir ba\u015flang\u0131\u00e7 noktas\u0131d\u0131r.<\/p>\n<h2>Proje Y\u00f6netimi ve CMake ile Daha Ak\u0131ll\u0131 Derleme Nas\u0131l Sa\u011flan\u0131r?<\/h2>\n<p>K\u00fc\u00e7\u00fck, tek dosyal\u0131 C++ programlar\u0131 i\u00e7in G++ komut sat\u0131r\u0131 yeterli olabilir. Ancak projeler b\u00fcy\u00fcd\u00fck\u00e7e, birden fazla kaynak dosyas\u0131, farkl\u0131 k\u00fct\u00fcphaneler, platformlar aras\u0131 derleme gereksinimleri ve karma\u015f\u0131k yap\u0131land\u0131rmalarla u\u011fra\u015fmak, sadece komut sat\u0131r\u0131 arac\u0131l\u0131\u011f\u0131yla y\u00f6netilemez hale gelir. \u0130\u015fte bu noktada <strong>CMake<\/strong> gibi yap\u0131 ara\u00e7lar\u0131 devreye girer. CMake, projelerinizi derlemek i\u00e7in platformdan ba\u011f\u0131ms\u0131z derleme betikleri (build scripts) olu\u015fturman\u0131za olanak tan\u0131yan g\u00fc\u00e7l\u00fc bir ara\u00e7t\u0131r. Geli\u015ftirme s\u00fcre\u00e7lerini otomatikle\u015ftirerek, hem zamandan tasarruf etmenizi sa\u011flar hem de projenizin s\u00fcrd\u00fcr\u00fclebilirli\u011fini art\u0131r\u0131r. Modern C++ projelerinin b\u00fcy\u00fck \u00e7o\u011funlu\u011fu, karma\u015f\u0131k derleme s\u00fcre\u00e7lerini y\u00f6netmek i\u00e7in CMake'i kullan\u0131r.<\/p>\n<h3>CMake Nedir ve Neden Kullan\u0131l\u0131r?<\/h3>\n<p>CMake, bir \"derleme sistemi jenerat\u00f6r\u00fc\" olarak tan\u0131mlanabilir. Yani, do\u011frudan kodunuzu derlemez; bunun yerine, se\u00e7ti\u011finiz platform ve derleyici i\u00e7in yerel derleme sistemleri (\u00f6rne\u011fin Unix Makefiles, Ninja, Visual Studio projeleri) olu\u015fturur. Bu, geli\u015ftiricilerin ayn\u0131 <code>CMakeLists.txt<\/code> dosyas\u0131n\u0131 kullanarak farkl\u0131 i\u015fletim sistemlerinde (Linux, Windows, macOS) ayn\u0131 projeyi sorunsuz bir \u015fekilde derleyebilmesi anlam\u0131na gelir. CMake'in ba\u015fl\u0131ca avantajlar\u0131 \u015funlard\u0131r:<\/p>\n<ul>\n<li><strong>Platform Ba\u011f\u0131ms\u0131zl\u0131\u011f\u0131:<\/strong> Tek bir yap\u0131land\u0131rma dosyas\u0131 ile farkl\u0131 platformlarda derleme.<\/li>\n<li><strong>Mod\u00fclerlik ve \u00d6l\u00e7eklenebilirlik:<\/strong> B\u00fcy\u00fck projeleri y\u00f6netmek ve mod\u00fcller halinde organize etmek kolayla\u015f\u0131r.<\/li>\n<li><strong>Ba\u011f\u0131ml\u0131l\u0131k Y\u00f6netimi:<\/strong> Projenizin harici k\u00fct\u00fcphanelere olan ba\u011f\u0131ml\u0131l\u0131klar\u0131n\u0131 tan\u0131mlamay\u0131 kolayla\u015ft\u0131r\u0131r.<\/li>\n<li><strong>Otomasyon:<\/strong> Derleme s\u00fcrecini otomatikle\u015ftirerek manuel hatalar\u0131 azalt\u0131r.<\/li>\n<\/ul>\n<h3>Ubuntu'da CMake Kurulumu<\/h3>\n<p>CMake'i Ubuntu'ya kurmak olduk\u00e7a basittir:<\/p>\n<pre><code>\nsudo apt install cmake\n  <\/pre>\n<p><\/code><\/p>\n<p>Kurulumu do\u011frulamak i\u00e7in:<\/p>\n<pre><code>\ncmake --version\n  <\/pre>\n<p><\/code><\/p>\n<p>komutunu \u00e7al\u0131\u015ft\u0131rabilirsiniz. Versiyon bilgisi ekrana geliyorsa, CMake haz\u0131r demektir.<\/p>\n<h3>Basit Bir CMake Projesi Nas\u0131l Olu\u015fturulur?<\/h3>\n<p>\u015eimdi, basit bir C++ projesi i\u00e7in <code>CMakeLists.txt<\/code> dosyas\u0131n\u0131n nas\u0131l yaz\u0131laca\u011f\u0131n\u0131 g\u00f6relim. Proje dizininizde (\u00f6rne\u011fin <code>my_cmake_project<\/code>), <code>main.cpp<\/code> ad\u0131nda bir dosya ve <code>CMakeLists.txt<\/code> ad\u0131nda bir dosya olmal\u0131d\u0131r.<\/p>\n<p><code>main.cpp<\/code> i\u00e7eri\u011fi:<\/p>\n<pre><code>\n#include <iostream>\n\nint main() {\n    std::cout << \"Merhaba, CMake D\u00fcnyas\u0131!\" << std::endl;\n    return 0;\n}\n  <\/pre>\n<p><\/code><\/p>\n<p><code>CMakeLists.txt<\/code> i\u00e7eri\u011fi:<\/p>\n<pre><code>\ncmake_minimum_required(VERSION 3.10) # Minimum CMake s\u00fcr\u00fcm\u00fcn\u00fc belirtin\nproject(MyCMakeProject CXX)         # Proje ad\u0131n\u0131 ve dilini belirtin\n\nadd_executable(my_app main.cpp)     # Y\u00fcr\u00fct\u00fclebilir dosya ad\u0131n\u0131 ve kaynak dosyas\u0131n\u0131 belirtin\n  <\/pre>\n<p><\/code><\/p>\n<div class=\"tip\">\n    Uzman \u0130pucu: <code>cmake_minimum_required<\/code> komutu, projenizin hangi CMake s\u00fcr\u00fcm\u00fcyle uyumlu oldu\u011funu belirtir. Bu, farkl\u0131 geli\u015ftirme ortamlar\u0131nda tutarl\u0131l\u0131k sa\u011flar. <code>project<\/code> komutu ise projenize bir isim verir ve hangi programlama dillerini kulland\u0131\u011f\u0131n\u0131z\u0131 belirtir.\n  <\/div>\n<h3>CMake ile Projeyi Derlemek<\/h3>\n<p>CMake tabanl\u0131 projeleri derlemek i\u00e7in standart bir i\u015f ak\u0131\u015f\u0131 vard\u0131r. Bu genellikle projenizin k\u00f6k dizininde bir <code>build<\/code> dizini olu\u015fturmay\u0131 ve derleme ad\u0131mlar\u0131n\u0131 bu dizinin i\u00e7inde yapmay\u0131 i\u00e7erir. Bu yakla\u015f\u0131m, kaynak dosyalar\u0131n\u0131z\u0131 derleme \u00e7\u0131kt\u0131lar\u0131n\u0131zdan ay\u0131rarak projenizi temiz tutar.<\/p>\n<ol>\n<li>Proje k\u00f6k dizininizde <code>build<\/code> dizini olu\u015fturun ve i\u00e7ine girin:<\/li>\n<pre><code>\nmkdir build\ncd build\n    <\/pre>\n<p><\/code><\/p>\n<li>CMake'i \u00e7al\u0131\u015ft\u0131rarak derleme dosyalar\u0131n\u0131 (\u00f6rne\u011fin Makefiles) olu\u015fturun:<\/li>\n<pre><code>\ncmake ..\n    <\/pre>\n<p><\/code><\/p>\n<p><code>..<\/code> ifadesi, CMake'e <code>CMakeLists.txt<\/code> dosyas\u0131n\u0131n bir \u00fcst dizinde oldu\u011funu s\u00f6yler.<\/p>\n<li>Olu\u015fturulan derleme dosyalar\u0131n\u0131 kullanarak projeyi derleyin:<\/li>\n<pre><code>\nmake\n    <\/pre>\n<p><\/code><\/p>\n<p>Bu komut, derleme s\u00fcrecini ba\u015flatacak ve <code>my_app<\/code> ad\u0131nda \u00e7al\u0131\u015ft\u0131r\u0131labilir bir dosya olu\u015fturacakt\u0131r.<\/p>\n<li>Program\u0131 \u00e7al\u0131\u015ft\u0131r\u0131n:<\/li>\n<pre><code>\n.\/my_app\n    <\/pre>\n<p><\/code>\n  <\/ol>\n<p>\u00c7\u0131kt\u0131 olarak \"Merhaba, CMake D\u00fcnyas\u0131!\" g\u00f6rmeniz gerekir. Bu s\u00fcre\u00e7, \u00f6zellikle harici k\u00fct\u00fcphaneler eklemeniz veya daha karma\u015f\u0131k proje yap\u0131lar\u0131 olu\u015fturman\u0131z gerekti\u011finde size b\u00fcy\u00fck esneklik sa\u011flar. CMake, modern C++ geli\u015ftirmesinde vazge\u00e7ilmez bir ara\u00e7t\u0131r ve onu \u00f6\u011frenmek, projelerinizi daha profesyonel bir \u015fekilde y\u00f6netmenizi sa\u011flayacakt\u0131r. VS Code gibi IDE'ler, CMake Tools eklentisi ile bu s\u00fcreci daha da kolayla\u015ft\u0131rarak CMake'i do\u011frudan IDE i\u00e7inden y\u00f6netmenize olanak tan\u0131r.<\/p>\n<h2>Hata Ay\u0131klama (Debugging) Sanat\u0131: GDB ile Sorunlar\u0131 Nas\u0131l \u00c7\u00f6zersiniz?<\/h2>\n<p>Yaz\u0131l\u0131m geli\u015ftirme s\u00fcrecinin ayr\u0131lmaz bir par\u00e7as\u0131 olan hata ay\u0131klama (debugging), programlar\u0131n\u0131zdaki mant\u0131k hatalar\u0131n\u0131, beklenmedik davran\u0131\u015flar\u0131 ve \u00e7\u00f6kmeleri bulup d\u00fczeltmek i\u00e7in kritik \u00f6neme sahiptir. Kod yazmak kadar, yazd\u0131\u011f\u0131n\u0131z kodun neden beklendi\u011fi gibi \u00e7al\u0131\u015fmad\u0131\u011f\u0131n\u0131 anlamak da bir geli\u015ftiricinin temel becerilerinden biridir. GDB (GNU Debugger), Linux tabanl\u0131 sistemlerde C++ programlar\u0131 i\u00e7in en g\u00fc\u00e7l\u00fc ve yayg\u0131n olarak kullan\u0131lan hata ay\u0131klama arac\u0131d\u0131r. GDB, program\u0131n\u0131z\u0131n y\u00fcr\u00fct\u00fclmesini kontrol etmenize, belirli noktalarda duraklatman\u0131za, de\u011fi\u015fkenlerin de\u011ferlerini incelemenize ve kodun ad\u0131m ad\u0131m nas\u0131l \u00e7al\u0131\u015ft\u0131\u011f\u0131n\u0131 g\u00f6rmenize olanak tan\u0131r. Etkili bir hata ay\u0131klay\u0131c\u0131 kullanmak, geli\u015ftirme s\u00fcrenizi k\u0131salt\u0131r ve daha g\u00fcvenilir yaz\u0131l\u0131mlar \u00fcretmenizi sa\u011flar.<\/p>\n<h3>GDB'ye Giri\u015f: Hata Ay\u0131klama \u0130\u00e7in Program\u0131n\u0131z\u0131 Nas\u0131l Haz\u0131rlars\u0131n\u0131z?<\/h3>\n<p>GDB'yi kullanabilmek i\u00e7in program\u0131n\u0131z\u0131 \u00f6zel bir \"hata ay\u0131klama bilgisi\" bayra\u011f\u0131yla derlemeniz gerekir. Bu bayrak (<code>-g<\/code>), derleyiciye kaynak kodunuzdan hata ay\u0131klama sembollerini (\u00f6rne\u011fin de\u011fi\u015fken adlar\u0131, sat\u0131r numaralar\u0131) ikili dosyaya dahil etmesini s\u00f6yler. Bu bilgiler olmadan GDB, kodunuzla anlaml\u0131 bir \u015fekilde etkile\u015fim kuramaz.<\/p>\n<p>\u00d6nceki <code>hello.cpp<\/code> \u00f6rne\u011fimizi kullanarak hata ay\u0131klama i\u00e7in derleyelim:<\/p>\n<pre><code>\ng++ -g hello.cpp -o hello_debug\n  <\/pre>\n<p><\/code><\/p>\n<p>Burada <code>-g<\/code> bayra\u011f\u0131 hata ay\u0131klama bilgilerini eklerken, <code>-o hello_debug<\/code> bayra\u011f\u0131 da \u00e7al\u0131\u015ft\u0131r\u0131labilir dosyan\u0131n ad\u0131n\u0131 belirtir.<\/p>\n<h3>Temel GDB Komutlar\u0131 ve Kullan\u0131m\u0131<\/h3>\n<p>\u015eimdi GDB'yi ba\u015flatal\u0131m ve temel komutlar\u0131 kullanarak program\u0131m\u0131z\u0131 inceleyelim:<\/p>\n<pre><code>\ngdb hello_debug\n  <\/pre>\n<p><\/code><\/p>\n<p>GDB aray\u00fcz\u00fcne girdikten sonra a\u015fa\u011f\u0131daki komutlar\u0131 kullanabilirsiniz:<\/p>\n<ul>\n<li><code>run<\/code> (veya <code>r<\/code>): Program\u0131 ba\u015flat\u0131r.<\/li>\n<li><code>break <sat\u0131r_numaras\u0131><\/code> (veya <code>b<\/code>): Belirli bir sat\u0131rda program\u0131n durmas\u0131n\u0131 sa\u011flayan bir kesme noktas\u0131 (breakpoint) ayarlar. \u00d6rne\u011fin: <code>break main.cpp:5<\/code><\/li>\n<li><code>break <fonksiyon_ad\u0131><\/code>: Bir fonksiyonun ba\u015f\u0131nda kesme noktas\u0131 ayarlar. \u00d6rne\u011fin: <code>break main<\/code><\/li>\n<li><code>next<\/code> (veya <code>n<\/code>): Bir sonraki kod sat\u0131r\u0131na ge\u00e7er (fonksiyon \u00e7a\u011fr\u0131lar\u0131na girmez).<\/li>\n<li><code>step<\/code> (veya <code>s<\/code>): Bir sonraki kod sat\u0131r\u0131na ge\u00e7er ve fonksiyon \u00e7a\u011fr\u0131lar\u0131n\u0131n i\u00e7ine girer.<\/li>\n<li><code>print <de\u011fi\u015fken_ad\u0131><\/code> (veya <code>p<\/code>): Bir de\u011fi\u015fkenin o anki de\u011ferini g\u00f6sterir.<\/li>\n<li><code>info locals<\/code>: Ge\u00e7erli kapsamdaki t\u00fcm yerel de\u011fi\u015fkenleri g\u00f6sterir.<\/li>\n<li><code>continue<\/code> (veya <code>c<\/code>): Program\u0131 bir sonraki kesme noktas\u0131na kadar \u00e7al\u0131\u015ft\u0131rmaya devam eder.<\/li>\n<li><code>list<\/code> (veya <code>l<\/code>): Kaynak kodun etraf\u0131ndaki sat\u0131rlar\u0131 g\u00f6sterir.<\/li>\n<li><code>quit<\/code> (veya <code>q<\/code>): GDB'den \u00e7\u0131kar.<\/li>\n<\/ul>\n<h4>Vaka Analizi: Basit Bir D\u00f6ng\u00fc Hatas\u0131n\u0131 GDB ile Bulma<\/h4>\n<p>\u015eimdi, k\u00fc\u00e7\u00fck bir hata i\u00e7eren bir program yazal\u0131m ve GDB ile nas\u0131l ay\u0131klayaca\u011f\u0131m\u0131z\u0131 g\u00f6relim. <code>buggy_program.cpp<\/code> ad\u0131nda bir dosya olu\u015ftural\u0131m:<\/p>\n<pre><code>\n#include <iostream>\n#include <vector>\n\nint main() {\n    std::vector<int> numbers = {10, 20, 30};\n    int sum = 0;\n    for (size_t i = 0; i <= numbers.size(); ++i) { \/\/ Hata burada: <= yerine < olmal\u0131\n        sum += numbers[i];\n    }\n    std::cout << \"Toplam: \" << sum << std::endl;\n    return 0;\n}\n  <\/pre>\n<p><\/code><\/p>\n<p>Bu kodu derleyelim ve GDB ile hata ay\u0131klama modunda ba\u015flatal\u0131m:<\/p>\n<pre><code>\ng++ -g buggy_program.cpp -o buggy_program\ngdb buggy_program\n  <\/pre>\n<p><\/code><\/p>\n<p>GDB i\u00e7inde:<\/p>\n<pre><code>\n(gdb) break buggy_program.cpp:8 \/\/ D\u00f6ng\u00fcn\u00fcn ba\u015flad\u0131\u011f\u0131 sat\u0131r\n(gdb) run\n  <\/pre>\n<p><\/code><\/p>\n<p>Program kesme noktas\u0131nda duracakt\u0131r. \u015eimdi <code>next<\/code> komutunu kullanarak ad\u0131m ad\u0131m ilerleyelim ve de\u011fi\u015fkenlerin de\u011ferlerini <code>print<\/code> ile inceleyelim:<\/p>\n<pre><code>\n(gdb) n\n(gdb) p i\n(gdb) p sum\n(gdb) p numbers[i]\n  <\/pre>\n<p><\/code><\/p>\n<p>D\u00f6ng\u00fc her d\u00f6nd\u00fc\u011f\u00fcnde <code>i<\/code> ve <code>sum<\/code> de\u011ferlerini g\u00f6zlemleyin. <code>i<\/code> de\u011feri <code>numbers.size()<\/code> (yani 3) oldu\u011funda, <code>numbers[3]<\/code>'e eri\u015fmeye \u00e7al\u0131\u015facak ve bu bir \"segmentation fault\" (ge\u00e7ersiz bellek eri\u015fimi) hatas\u0131na yol a\u00e7acakt\u0131r \u00e7\u00fcnk\u00fc <code>std::vector<\/code>'\u0131n indeksleri 0'dan <code>size-1<\/code>'e kadard\u0131r. Bu hatay\u0131 <code>print numbers[i]<\/code> komutu ile g\u00f6rebilir veya program\u0131n \u00e7\u00f6k\u00fc\u015f an\u0131n\u0131 yakalayabilirsiniz. Bu vaka analizi, GDB'nin bir program\u0131n \u00e7al\u0131\u015fma zaman\u0131ndaki i\u00e7 durumunu nas\u0131l g\u00f6rmenizi sa\u011flad\u0131\u011f\u0131n\u0131 g\u00f6stermektedir. Kesme noktalar\u0131, ad\u0131m ad\u0131m y\u00fcr\u00fctme ve de\u011fi\u015fken denetimi sayesinde, kodunuzdaki mant\u0131ksal hatalar\u0131 \u00e7ok daha h\u0131zl\u0131 bir \u015fekilde tespit edip d\u00fczeltebilirsiniz.<\/p>\n<div class=\"tip\">\n    Uzman \u0130pucu: VS Code gibi modern IDE'ler, GDB entegrasyonu sunar. Bu, grafik aray\u00fcz \u00fczerinden kesme noktalar\u0131 ayarlaman\u0131za, de\u011fi\u015fkenleri izlemenize ve ad\u0131m ad\u0131m hata ay\u0131klama yapman\u0131za olanak tan\u0131r. Terminal tabanl\u0131 GDB'ye al\u0131\u015ft\u0131ktan sonra, bu t\u00fcr bir entegrasyonu kullanmak i\u015f ak\u0131\u015f\u0131n\u0131z\u0131 b\u00fcy\u00fck \u00f6l\u00e7\u00fcde h\u0131zland\u0131rabilir.\n  <\/div>\n<h2>\u0130leri D\u00fczey \u0130pu\u00e7lar\u0131 ve Performans Optimizasyonu: C++ Geli\u015ftirmenizi Bir \u00dcst Seviyeye Ta\u015f\u0131y\u0131n<\/h2>\n<p>C++ geli\u015ftirme yolculu\u011funuzda temel kurulum ve hata ay\u0131klama ad\u0131mlar\u0131n\u0131 ba\u015far\u0131yla tamamlad\u0131ktan sonra, projelerinizi daha verimli, daha h\u0131zl\u0131 ve daha y\u00f6netilebilir hale getirecek baz\u0131 ileri d\u00fczey konulara g\u00f6z atmak isteyebilirsiniz. Bu ipu\u00e7lar\u0131, \u00f6zellikle b\u00fcy\u00fck \u00f6l\u00e7ekli projelerde veya performans\u0131n kritik oldu\u011fu uygulamalarda fark yaratacakt\u0131r. C++'\u0131n g\u00fcc\u00fcn\u00fc tam olarak kullanmak ve kodunuzu optimize etmek, sadece do\u011fru algoritmalar\u0131 se\u00e7mekle kalmaz, ayn\u0131 zamanda derleyici optimizasyonlar\u0131 ve bellek y\u00f6netimi gibi teknik konular\u0131 da i\u00e7erir. Bu b\u00f6l\u00fcmde, geli\u015ftirme ortam\u0131n\u0131z\u0131 daha da geli\u015ftirecek ve kodunuzun performans\u0131n\u0131 art\u0131racak baz\u0131 p\u00fcf noktalar\u0131n\u0131 ele alaca\u011f\u0131z.<\/p>\n<h3>Derleyici Optimizasyonlar\u0131 ile Kodunuzu H\u0131zland\u0131r\u0131n<\/h3>\n<p>GCC\/G++ derleyicisi, kodunuzu derlerken \u00e7e\u015fitli optimizasyon seviyeleri uygulayabilir. Bu optimizasyonlar, program\u0131n\u0131z\u0131n daha h\u0131zl\u0131 \u00e7al\u0131\u015fmas\u0131n\u0131, daha az bellek kullanmas\u0131n\u0131 veya daha k\u00fc\u00e7\u00fck bir dosya boyutuna sahip olmas\u0131n\u0131 sa\u011flayabilir. Optimizasyon bayraklar\u0131 genellikle <code>-O<\/code> ile ba\u015flar:<\/p>\n<ul>\n<li><code>-O0<\/code>: Optimizasyon yok (varsay\u0131lan). Hata ay\u0131klama i\u00e7in idealdir, \u00e7\u00fcnk\u00fc kodunuz kaynak koda en yak\u0131n haliyle derlenir.<\/li>\n<li><code>-O1<\/code>: Temel optimizasyonlar. Kod boyutu ve derleme s\u00fcresi \u00fczerinde orta d\u00fczeyde etki.<\/li>\n<li><code>-O2<\/code>: Daha fazla optimizasyon. \u00c7o\u011fu \u00fcretim ortam\u0131 i\u00e7in iyi bir denge sunar.<\/li>\n<li><code>-O3<\/code>: Agresif optimizasyonlar. Performans\u0131 en \u00fcst d\u00fczeye \u00e7\u0131karmay\u0131 hedefler, ancak baz\u0131 durumlarda kod boyutu artabilir ve hata ay\u0131klama zorla\u015fabilir.<\/li>\n<li><code>-Os<\/code>: Kod boyutunu optimize eder. \u00d6zellikle g\u00f6m\u00fcl\u00fc sistemler gibi kaynak k\u0131s\u0131tl\u0131 ortamlar i\u00e7in kullan\u0131\u015fl\u0131d\u0131r.<\/li>\n<\/ul>\n<p>\u00d6rnek kullan\u0131m:<\/p>\n<pre><code>\ng++ -O2 my_program.cpp -o my_program_optimized\n  <\/pre>\n<p><\/code><\/p>\n<div class=\"tip\">\n    Uzman \u0130pucu: Optimizasyon seviyeleri aras\u0131nda dikkatli bir se\u00e7im yapmal\u0131s\u0131n\u0131z. Y\u00fcksek optimizasyon seviyeleri program\u0131n\u0131z\u0131n h\u0131z\u0131n\u0131 art\u0131rabilirken, hata ay\u0131klamay\u0131 zorla\u015ft\u0131rabilir ve bazen beklenmedik davran\u0131\u015flara yol a\u00e7abilir. Genellikle, geli\u015ftirme a\u015famas\u0131nda <code>-O0<\/code> veya <code>-O1<\/code> kullan\u0131p, yay\u0131n \u00f6ncesi testlerde <code>-O2<\/code> veya <code>-O3<\/code>'e ge\u00e7mek iyi bir stratejidir.\n  <\/div>\n<h3>Statik ve Dinamik K\u00fct\u00fcphaneler: Projelerinizi Nas\u0131l Mod\u00fclerle\u015ftirirsiniz?<\/h3>\n<p>B\u00fcy\u00fck projelerde kod tekrar\u0131n\u0131 \u00f6nlemek ve mod\u00fclerli\u011fi art\u0131rmak i\u00e7in k\u00fct\u00fcphaneler kullan\u0131r\u0131z. C++'ta iki ana k\u00fct\u00fcphane t\u00fcr\u00fc vard\u0131r:<\/p>\n<ul>\n<li><strong>Statik K\u00fct\u00fcphaneler (.a veya .lib):<\/strong> Program\u0131n\u0131z derlenirken do\u011frudan y\u00fcr\u00fct\u00fclebilir dosyaya ba\u011flan\u0131r. Bu, program\u0131n ba\u011f\u0131ms\u0131z olmas\u0131n\u0131 sa\u011flar ancak dosya boyutunu art\u0131r\u0131r.<\/li>\n<li><strong>Dinamik K\u00fct\u00fcphaneler (.so veya .dll):<\/strong> \u00c7al\u0131\u015fma zaman\u0131nda (runtime) programa y\u00fcklenir. Bu, dosya boyutunu k\u00fc\u00e7\u00fclt\u00fcr ve birden fazla program\u0131n ayn\u0131 k\u00fct\u00fcphaneyi payla\u015fmas\u0131na olanak tan\u0131r. Ancak, program\u0131n \u00e7al\u0131\u015fmas\u0131 i\u00e7in bu k\u00fct\u00fcphanelerin sistemde bulunmas\u0131 gerekir.<\/li>\n<\/ul>\n<p>K\u00fct\u00fcphane olu\u015fturma ve kullanma, CMake gibi yap\u0131 ara\u00e7lar\u0131 ile daha kolay hale gelir. \u00d6rne\u011fin, <code>add_library<\/code> komutu ile k\u00fct\u00fcphaneler tan\u0131mlanabilir ve <code>target_link_libraries<\/code> ile projelere ba\u011flanabilir.<\/p>\n<h3>Paket Y\u00f6neticileri ile Ba\u011f\u0131ml\u0131l\u0131klar\u0131 Kolayca Y\u00f6netin<\/h3>\n<p>C++ projelerinde harici k\u00fct\u00fcphaneler kullanmak yayg\u0131nd\u0131r (\u00f6rne\u011fin Boost, poco, Qt). Bu k\u00fct\u00fcphanelerin manuel olarak indirilmesi, derlenmesi ve projeye ba\u011flanmas\u0131 zahmetli ve hataya a\u00e7\u0131k bir s\u00fcre\u00e7 olabilir. C++ i\u00e7in modern paket y\u00f6neticileri bu s\u00fcreci otomatize eder:<\/p>\n<ul>\n<li><strong>Conan:<\/strong> C++ i\u00e7in platform ba\u011f\u0131ms\u0131z ve dil ba\u011f\u0131ms\u0131z bir paket y\u00f6neticisidir. Projenizin ba\u011f\u0131ml\u0131l\u0131klar\u0131n\u0131 y\u00f6netmek ve bunlar\u0131 farkl\u0131 derleyiciler ve platformlar aras\u0131nda ta\u015f\u0131mak i\u00e7in g\u00fc\u00e7l\u00fc bir \u00e7\u00f6z\u00fcmd\u00fcr.<\/li>\n<li><strong>vcpkg:<\/strong> Microsoft taraf\u0131ndan geli\u015ftirilen bir ba\u015fka paket y\u00f6neticisidir. \u00d6zellikle Windows ve Linux'ta geni\u015f bir k\u00fct\u00fcphane yelpazesini destekler ve Visual Studio ile iyi entegre olur.<\/li>\n<\/ul>\n<p>Bu ara\u00e7lar, projenizin ba\u011f\u0131ml\u0131l\u0131klar\u0131n\u0131 otomatik olarak indirmenize, derlemenize ve projenize ba\u011flaman\u0131za olanak tan\u0131r, b\u00f6ylece geli\u015ftirme s\u00fcrecinizi b\u00fcy\u00fck \u00f6l\u00e7\u00fcde h\u0131zland\u0131r\u0131r.<\/p>\n<h3>Bellek Analiz Ara\u00e7lar\u0131: Valgrind ile Bellek S\u0131z\u0131nt\u0131lar\u0131n\u0131 Tespit Edin<\/h3>\n<p>C++'ta bellek y\u00f6netimi geli\u015ftiricinin sorumlulu\u011fundad\u0131r ve bu durum bellek s\u0131z\u0131nt\u0131lar\u0131na (memory leaks) veya ge\u00e7ersiz bellek eri\u015fimlerine yol a\u00e7abilir. Valgrind, bu t\u00fcr sorunlar\u0131 tespit etmek i\u00e7in kullan\u0131lan g\u00fc\u00e7l\u00fc bir ara\u00e7t\u0131r. Bir program\u0131 Valgrind alt\u0131nda \u00e7al\u0131\u015ft\u0131rd\u0131\u011f\u0131n\u0131zda, bellek kullan\u0131m\u0131n\u0131 izler ve potansiyel hatalar\u0131 raporlar:<\/p>\n<pre><code>\nsudo apt install valgrind\nvalgrind --leak-check=yes .\/my_program\n  <\/pre>\n<p><\/code><\/p>\n<p>Valgrind \u00e7\u0131kt\u0131s\u0131, program\u0131n\u0131zdaki bellek s\u0131z\u0131nt\u0131lar\u0131 veya di\u011fer bellek hatalar\u0131 hakk\u0131nda de\u011ferli bilgiler sa\u011flar. Bu t\u00fcr ara\u00e7lar\u0131 d\u00fczenli olarak kullanmak, daha kararl\u0131 ve g\u00fcvenilir C++ uygulamalar\u0131 geli\u015ftirmenize yard\u0131mc\u0131 olacakt\u0131r.<\/p>\n<p>Bu ileri d\u00fczey konular, C++ geli\u015ftirme becerilerinizi derinle\u015ftirmenize ve projelerinizi daha profesyonel bir d\u00fczeye ta\u015f\u0131man\u0131za yard\u0131mc\u0131 olacakt\u0131r. Her bir konu ba\u015fl\u0131 ba\u015f\u0131na ayr\u0131 bir rehber gerektirse de, genel bir fikir edinmek ve ke\u015fif yolculu\u011funuza devam etmek i\u00e7in sa\u011flam bir ba\u015flang\u0131\u00e7 noktas\u0131 sunmaktad\u0131rlar.<\/p>\n<h2>Sonu\u00e7: C++ Yolculu\u011funuz \u0130\u00e7in Sa\u011flam Bir Ba\u015flang\u0131\u00e7<\/h2>\n<p>Bu kapsaml\u0131 rehber boyunca, Ubuntu'da C++ geli\u015ftirme ortam\u0131n\u0131z\u0131 s\u0131f\u0131rdan kurmak ve yap\u0131land\u0131rmak i\u00e7in gereken t\u00fcm temel ad\u0131mlar\u0131 ve ileri d\u00fczey ipu\u00e7lar\u0131n\u0131 ayr\u0131nt\u0131l\u0131 bir \u015fekilde inceledik. \u0130lk olarak, C++'\u0131n ve Ubuntu'nun geli\u015ftiriciler i\u00e7in neden bu kadar g\u00fc\u00e7l\u00fc bir kombinasyon oldu\u011funu anlayarak yolculu\u011fumuza ba\u015flad\u0131k. Ard\u0131ndan, bir C++ geli\u015ftirme ortam\u0131n\u0131n temel bile\u015fenleri olan derleyiciler, ba\u011flay\u0131c\u0131lar ve hata ay\u0131klay\u0131c\u0131lar gibi kavramlar\u0131 derinlemesine ele ald\u0131k.<\/p>\n<p>Pratik kurulum ad\u0131mlar\u0131yla, <code>build-essential<\/code> paketi sayesinde GCC\/G++ derleyicisini ve GDB hata ay\u0131klay\u0131c\u0131s\u0131n\u0131 Ubuntu'nuza kolayca nas\u0131l kuraca\u011f\u0131n\u0131z\u0131 \u00f6\u011frendiniz. \u0130lk \"Merhaba D\u00fcnya\" program\u0131n\u0131z\u0131 derleyip \u00e7al\u0131\u015ft\u0131rarak kurulumunuzu ba\u015far\u0131yla do\u011frulad\u0131n\u0131z. Visual Studio Code gibi modern bir IDE'yi kurmay\u0131 ve C++ geli\u015ftirme i\u00e7in optimize etmeyi, hatta CMake ile daha b\u00fcy\u00fck projeleri nas\u0131l y\u00f6netebilece\u011finizi de ke\u015ffettiniz. Son olarak, GDB ile etkili hata ay\u0131klama tekniklerini ve performans optimizasyonu i\u00e7in derleyici bayraklar\u0131 ile k\u00fct\u00fcphane y\u00f6netimi gibi ileri d\u00fczey konular\u0131 ele alarak geli\u015ftirme becerilerinizi bir \u00fcst seviyeye ta\u015f\u0131d\u0131n\u0131z.<\/p>\n<p>Art\u0131k Ubuntu sisteminizde g\u00fc\u00e7l\u00fc ve esnek bir C++ geli\u015ftirme ortam\u0131na sahipsiniz. Bu rehber, C++ d\u00fcnyas\u0131na att\u0131\u011f\u0131n\u0131z ilk ad\u0131m olabilir veya mevcut bilginizi peki\u015ftirmenize yard\u0131mc\u0131 olabilir. Unutmay\u0131n ki yaz\u0131l\u0131m geli\u015ftirme s\u00fcrekli bir \u00f6\u011frenme s\u00fcrecidir. Bu ortam\u0131 kullanarak kendi projelerinizi olu\u015fturmaya, farkl\u0131 k\u00fct\u00fcphaneleri ke\u015ffetmeye ve C++'\u0131n derinliklerine inmeye devam etmelisiniz. Pratik yapmak, becerilerinizi geli\u015ftirmenin en iyi yoludur. Ba\u015far\u0131lar dileriz!<\/p>\n<h3>S\u0131k\u00e7a Sorulan Sorular<\/h3>\n<dl>\n<dt>C++ neden hala pop\u00fcler ve g\u00fcncel bir programlama dili?<\/dt>\n<dd>C++, performans\u0131, donan\u0131ma yak\u0131n kontrol yetene\u011fi ve geni\u015f uygulama alanlar\u0131 (oyun geli\u015ftirme, i\u015fletim sistemleri, finansal uygulamalar, g\u00f6m\u00fcl\u00fc sistemler) nedeniyle hala son derece pop\u00fclerdir. Modern C++ (C++11, C++14, C++17, C++20 ve sonras\u0131), dilin g\u00fcvenli\u011fini, okunabilirli\u011fini ve geli\u015ftirici verimlili\u011fini art\u0131ran bir\u00e7ok yeni \u00f6zellik sunarak g\u00fcncelli\u011fini korumaktad\u0131r.<\/dd>\n<dt>Ubuntu yerine ba\u015fka bir Linux da\u011f\u0131t\u0131m\u0131 kullansam C++ kurulumu farkl\u0131 m\u0131 olur?<\/dt>\n<dd>Temel C++ ara\u00e7lar\u0131n\u0131n (GCC, GDB) kurulumu \u00e7o\u011fu Linux da\u011f\u0131t\u0131m\u0131nda benzerdir. Ancak paket y\u00f6neticileri farkl\u0131l\u0131k g\u00f6sterir. \u00d6rne\u011fin, Debian\/Ubuntu tabanl\u0131 sistemler <code>apt<\/code> kullan\u0131rken, Fedora\/CentOS <code>dnf<\/code> (\u00f6nceki ad\u0131yla <code>yum<\/code>), Arch Linux <code>pacman<\/code> kullan\u0131r. Paket adlar\u0131 da k\u00fc\u00e7\u00fck farkl\u0131l\u0131klar g\u00f6sterebilir (\u00f6rne\u011fin <code>build-essential<\/code> yerine <code>base-devel<\/code>). Ancak derleyici, hata ay\u0131klay\u0131c\u0131 ve di\u011fer ara\u00e7lar\u0131n kullan\u0131m\u0131 ayn\u0131 kal\u0131r.<\/dd>\n<dt>Birden fazla C++ derleyicisi kurabilir miyim (\u00f6rn. GCC ve Clang)?<\/dt>\n<dd>Evet, birden fazla derleyiciyi ayn\u0131 sisteme kurabilirsiniz. Ubuntu'da Clang'\u0131 kurmak i\u00e7in <code>sudo apt install clang<\/code> komutunu kullanabilirsiniz. Ard\u0131ndan, derleme yaparken hangi derleyiciyi kullanaca\u011f\u0131n\u0131z\u0131 <code>g++<\/code> veya <code>clang++<\/code> komutlar\u0131n\u0131 kullanarak belirtebilirsiniz. Proje baz\u0131nda derleyici se\u00e7imi genellikle CMake gibi yap\u0131 ara\u00e7lar\u0131 ile y\u00f6netilir.<\/dd>\n<dt><code>build-essential<\/code> paketi tam olarak ne yapar?<\/dt>\n<dd><code>build-essential<\/code> paketi, Ubuntu'da derleme (compile) i\u00e7in gerekli temel ara\u00e7lar\u0131 i\u00e7eren bir meta pakettir. Kendisi bir program de\u011fildir, ancak <code>gcc<\/code>, <code>g++<\/code>, <code>make<\/code> gibi \u00f6nemli geli\u015ftirme ara\u00e7lar\u0131n\u0131 ve bunlar\u0131n ba\u011f\u0131ml\u0131l\u0131klar\u0131n\u0131 otomatik olarak kurar. Bu, C veya C++ programlar\u0131n\u0131 derlemek i\u00e7in minimal ancak eksiksiz bir ortam sa\u011flar.<\/dd>\n<dt>C++ \u00f6\u011frenmek i\u00e7in en iyi kaynaklar nelerdir?<\/dt>\n<dd>C++ \u00f6\u011frenmek i\u00e7in bir\u00e7ok harika kaynak bulunmaktad\u0131r. Ba\u015flang\u0131\u00e7 seviyesi i\u00e7in \"C++ Primer\" (Lippman, Lajoie, Moo) veya \"Programming: Principles and Practice Using C++\" (Bjarne Stroustrup) gibi kitaplar klasikle\u015fmi\u015ftir. Online platformlarda Coursera, Udemy gibi sitelerde C++ kurslar\u0131 bulabilirsiniz. Ayr\u0131ca, cppreference.com ve learncpp.com gibi web siteleri, dilin referans materyalleri ve \u00f6\u011freticileri i\u00e7in m\u00fckemmel kaynaklard\u0131r. Pratik yapmak ve k\u00fc\u00e7\u00fck projeler geli\u015ftirmek, \u00f6\u011frenme s\u00fcrecini h\u0131zland\u0131rman\u0131n anahtar\u0131d\u0131r.<\/dd>\n<\/dl>\n<p><\/body><\/p>\n","protected":false},"excerpt":{"rendered":"Ubuntu \u00fczerinde C++ geli\u015ftirme ortam\u0131n\u0131z\u0131 kurmak ve yap\u0131land\u0131rmak, performansl\u0131 ve g\u00fc\u00e7l\u00fc uygulamalar yaratman\u0131n ilk ad\u0131m\u0131d\u0131r. Bu rehberde, derleyici&hellip;","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"csco_page_header_type":"","csco_page_load_nextpost":"","csco_page_subscribe_form":"","csco_page_contact_form":"","footnotes":""},"categories":[1468],"tags":[],"class_list":{"0":"post-35356","1":"post","2":"type-post","3":"status-publish","4":"format-standard","6":"category-ubuntu","7":"cs-entry","8":"cs-video-wrap"},"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v20.5 (Yoast SEO v25.3.1) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Ubuntu&#039;da C++ Kurulumu ve Geli\u015ftirme Ortam\u0131 Ayarlar\u0131<\/title>\n<meta name=\"description\" content=\"Ubuntu \u00fczerinde C++ geli\u015ftirme ortam\u0131n\u0131z\u0131 kurmak ve yap\u0131land\u0131rmak, performansl\u0131 ve g\u00fc\u00e7l\u00fc uygulamalar yaratman\u0131n ilk ad\u0131m\u0131d\u0131r. Bu rehberde, derleyici kurulumundan modern IDE entegrasyonuna, hata ay\u0131klama tekniklerinden proje y\u00f6netimine kadar t\u00fcm s\u00fcreci ad\u0131m ad\u0131m ke\u015ffedeceksiniz. G\u00fcn\u00fcm\u00fczde yaz\u0131l\u0131m d\u00fcnyas\u0131nda performans, g\u00fcvenlik ve kaynak y\u00f6netimi gibi kritik fakt\u00f6rler, C++&#039;\u0131 vazge\u00e7ilmez bir dil haline getirmektedir. Oyun motorlar\u0131ndan i\u015fletim sistemlerine, finansal uygulamalardan g\u00f6m\u00fcl\u00fc sistemlere kadar geni\u015f bir yelpazede kullan\u0131lan C++, donan\u0131ma yak\u0131n seviyede kontrol sa\u011flayarak uygulamalar\u0131n tam potansiyeline ula\u015fmas\u0131na olanak tan\u0131r.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/fatihsoysal.com\/blog\/ubuntuda-c-kurulumu-ve-gelistirme-ortami-ayarlari\/\" \/>\n<meta property=\"og:locale\" content=\"tr_TR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Ubuntu&#039;da C++ Kurulumu ve Geli\u015ftirme Ortam\u0131 Ayarlar\u0131\" \/>\n<meta property=\"og:description\" content=\"Ubuntu \u00fczerinde C++ geli\u015ftirme ortam\u0131n\u0131z\u0131 kurmak ve yap\u0131land\u0131rmak, performansl\u0131 ve g\u00fc\u00e7l\u00fc uygulamalar yaratman\u0131n ilk ad\u0131m\u0131d\u0131r. Bu rehberde, derleyici kurulumundan modern IDE entegrasyonuna, hata ay\u0131klama tekniklerinden proje y\u00f6netimine kadar t\u00fcm s\u00fcreci ad\u0131m ad\u0131m ke\u015ffedeceksiniz. G\u00fcn\u00fcm\u00fczde yaz\u0131l\u0131m d\u00fcnyas\u0131nda performans, g\u00fcvenlik ve kaynak y\u00f6netimi gibi kritik fakt\u00f6rler, C++&#039;\u0131 vazge\u00e7ilmez bir dil haline getirmektedir. Oyun motorlar\u0131ndan i\u015fletim sistemlerine, finansal uygulamalardan g\u00f6m\u00fcl\u00fc sistemlere kadar geni\u015f bir yelpazede kullan\u0131lan C++, donan\u0131ma yak\u0131n seviyede kontrol sa\u011flayarak uygulamalar\u0131n tam potansiyeline ula\u015fmas\u0131na olanak tan\u0131r.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/fatihsoysal.com\/blog\/ubuntuda-c-kurulumu-ve-gelistirme-ortami-ayarlari\/\" \/>\n<meta property=\"og:site_name\" content=\"Kodlar\u0131n Gizemli D\u00fcnyas\u0131\" \/>\n<meta property=\"article:published_time\" content=\"2025-11-28T16:01:59+00:00\" \/>\n<meta name=\"author\" content=\"Fatih Soysal\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Yazan:\" \/>\n\t<meta name=\"twitter:data1\" content=\"Fatih Soysal\" \/>\n\t<meta name=\"twitter:label2\" content=\"Tahmini okuma s\u00fcresi\" \/>\n\t<meta name=\"twitter:data2\" content=\"12 dakika\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/ubuntuda-c-kurulumu-ve-gelistirme-ortami-ayarlari\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/ubuntuda-c-kurulumu-ve-gelistirme-ortami-ayarlari\/\"},\"author\":{\"name\":\"Fatih Soysal\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"headline\":\"Ubuntu&#8217;da C++ Kurulumu ve Geli\u015ftirme Ortam\u0131 Ayarlar\u0131\",\"datePublished\":\"2025-11-28T16:01:59+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/ubuntuda-c-kurulumu-ve-gelistirme-ortami-ayarlari\/\"},\"wordCount\":5273,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"articleSection\":[\"Ubuntu\"],\"inLanguage\":\"tr\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/fatihsoysal.com\/blog\/ubuntuda-c-kurulumu-ve-gelistirme-ortami-ayarlari\/#respond\"]}],\"copyrightYear\":\"2025\",\"copyrightHolder\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/ubuntuda-c-kurulumu-ve-gelistirme-ortami-ayarlari\/\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/ubuntuda-c-kurulumu-ve-gelistirme-ortami-ayarlari\/\",\"name\":\"Ubuntu'da C++ Kurulumu ve Geli\u015ftirme Ortam\u0131 Ayarlar\u0131\",\"isPartOf\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#website\"},\"datePublished\":\"2025-11-28T16:01:59+00:00\",\"description\":\"Ubuntu \u00fczerinde C++ geli\u015ftirme ortam\u0131n\u0131z\u0131 kurmak ve yap\u0131land\u0131rmak, performansl\u0131 ve g\u00fc\u00e7l\u00fc uygulamalar yaratman\u0131n ilk ad\u0131m\u0131d\u0131r. Bu rehberde, derleyici kurulumundan modern IDE entegrasyonuna, hata ay\u0131klama tekniklerinden proje y\u00f6netimine kadar t\u00fcm s\u00fcreci ad\u0131m ad\u0131m ke\u015ffedeceksiniz. G\u00fcn\u00fcm\u00fczde yaz\u0131l\u0131m d\u00fcnyas\u0131nda performans, g\u00fcvenlik ve kaynak y\u00f6netimi gibi kritik fakt\u00f6rler, C++'\u0131 vazge\u00e7ilmez bir dil haline getirmektedir. Oyun motorlar\u0131ndan i\u015fletim sistemlerine, finansal uygulamalardan g\u00f6m\u00fcl\u00fc sistemlere kadar geni\u015f bir yelpazede kullan\u0131lan C++, donan\u0131ma yak\u0131n seviyede kontrol sa\u011flayarak uygulamalar\u0131n tam potansiyeline ula\u015fmas\u0131na olanak tan\u0131r.\",\"breadcrumb\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/ubuntuda-c-kurulumu-ve-gelistirme-ortami-ayarlari\/#breadcrumb\"},\"inLanguage\":\"tr\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/fatihsoysal.com\/blog\/ubuntuda-c-kurulumu-ve-gelistirme-ortami-ayarlari\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/ubuntuda-c-kurulumu-ve-gelistirme-ortami-ayarlari\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Anasayfa\",\"item\":\"https:\/\/fatihsoysal.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Ubuntu&#8217;da C++ Kurulumu ve Geli\u015ftirme Ortam\u0131 Ayarlar\u0131\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#website\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/\",\"name\":\"Fatihsoysal.com\",\"description\":\"Blog - Yaz\u0131l\u0131m D\u00fcnyas\u0131 Tecr\u00fcbelerim\",\"publisher\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/fatihsoysal.com\/blog\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"tr\"},{\"@type\":[\"Person\",\"Organization\"],\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\",\"name\":\"Fatih Soysal\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"tr\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png\",\"contentUrl\":\"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png\",\"width\":512,\"height\":512,\"caption\":\"Fatih Soysal\"},\"logo\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/\"},\"description\":\"Kullan\u0131m ve kodlama m\u00fckemmeliyetini odak alan uygulamalar olu\u015fturma deneyimine sahip, profesyonel olarak 15+ y\u0131l \u00fczeri deneyime sahip bir yaz\u0131l\u0131m m\u00fchendisi.\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/author\/fatihsoysal\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Ubuntu'da C++ Kurulumu ve Geli\u015ftirme Ortam\u0131 Ayarlar\u0131","description":"Ubuntu \u00fczerinde C++ geli\u015ftirme ortam\u0131n\u0131z\u0131 kurmak ve yap\u0131land\u0131rmak, performansl\u0131 ve g\u00fc\u00e7l\u00fc uygulamalar yaratman\u0131n ilk ad\u0131m\u0131d\u0131r. Bu rehberde, derleyici kurulumundan modern IDE entegrasyonuna, hata ay\u0131klama tekniklerinden proje y\u00f6netimine kadar t\u00fcm s\u00fcreci ad\u0131m ad\u0131m ke\u015ffedeceksiniz. G\u00fcn\u00fcm\u00fczde yaz\u0131l\u0131m d\u00fcnyas\u0131nda performans, g\u00fcvenlik ve kaynak y\u00f6netimi gibi kritik fakt\u00f6rler, C++'\u0131 vazge\u00e7ilmez bir dil haline getirmektedir. Oyun motorlar\u0131ndan i\u015fletim sistemlerine, finansal uygulamalardan g\u00f6m\u00fcl\u00fc sistemlere kadar geni\u015f bir yelpazede kullan\u0131lan C++, donan\u0131ma yak\u0131n seviyede kontrol sa\u011flayarak uygulamalar\u0131n tam potansiyeline ula\u015fmas\u0131na olanak tan\u0131r.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/fatihsoysal.com\/blog\/ubuntuda-c-kurulumu-ve-gelistirme-ortami-ayarlari\/","og_locale":"tr_TR","og_type":"article","og_title":"Ubuntu'da C++ Kurulumu ve Geli\u015ftirme Ortam\u0131 Ayarlar\u0131","og_description":"Ubuntu \u00fczerinde C++ geli\u015ftirme ortam\u0131n\u0131z\u0131 kurmak ve yap\u0131land\u0131rmak, performansl\u0131 ve g\u00fc\u00e7l\u00fc uygulamalar yaratman\u0131n ilk ad\u0131m\u0131d\u0131r. Bu rehberde, derleyici kurulumundan modern IDE entegrasyonuna, hata ay\u0131klama tekniklerinden proje y\u00f6netimine kadar t\u00fcm s\u00fcreci ad\u0131m ad\u0131m ke\u015ffedeceksiniz. G\u00fcn\u00fcm\u00fczde yaz\u0131l\u0131m d\u00fcnyas\u0131nda performans, g\u00fcvenlik ve kaynak y\u00f6netimi gibi kritik fakt\u00f6rler, C++'\u0131 vazge\u00e7ilmez bir dil haline getirmektedir. Oyun motorlar\u0131ndan i\u015fletim sistemlerine, finansal uygulamalardan g\u00f6m\u00fcl\u00fc sistemlere kadar geni\u015f bir yelpazede kullan\u0131lan C++, donan\u0131ma yak\u0131n seviyede kontrol sa\u011flayarak uygulamalar\u0131n tam potansiyeline ula\u015fmas\u0131na olanak tan\u0131r.","og_url":"https:\/\/fatihsoysal.com\/blog\/ubuntuda-c-kurulumu-ve-gelistirme-ortami-ayarlari\/","og_site_name":"Kodlar\u0131n Gizemli D\u00fcnyas\u0131","article_published_time":"2025-11-28T16:01:59+00:00","author":"Fatih Soysal","twitter_card":"summary_large_image","twitter_misc":{"Yazan:":"Fatih Soysal","Tahmini okuma s\u00fcresi":"12 dakika"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/fatihsoysal.com\/blog\/ubuntuda-c-kurulumu-ve-gelistirme-ortami-ayarlari\/#article","isPartOf":{"@id":"https:\/\/fatihsoysal.com\/blog\/ubuntuda-c-kurulumu-ve-gelistirme-ortami-ayarlari\/"},"author":{"name":"Fatih Soysal","@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"headline":"Ubuntu&#8217;da C++ Kurulumu ve Geli\u015ftirme Ortam\u0131 Ayarlar\u0131","datePublished":"2025-11-28T16:01:59+00:00","mainEntityOfPage":{"@id":"https:\/\/fatihsoysal.com\/blog\/ubuntuda-c-kurulumu-ve-gelistirme-ortami-ayarlari\/"},"wordCount":5273,"commentCount":0,"publisher":{"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"articleSection":["Ubuntu"],"inLanguage":"tr","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/fatihsoysal.com\/blog\/ubuntuda-c-kurulumu-ve-gelistirme-ortami-ayarlari\/#respond"]}],"copyrightYear":"2025","copyrightHolder":{"@id":"https:\/\/fatihsoysal.com\/blog\/#organization"}},{"@type":"WebPage","@id":"https:\/\/fatihsoysal.com\/blog\/ubuntuda-c-kurulumu-ve-gelistirme-ortami-ayarlari\/","url":"https:\/\/fatihsoysal.com\/blog\/ubuntuda-c-kurulumu-ve-gelistirme-ortami-ayarlari\/","name":"Ubuntu'da C++ Kurulumu ve Geli\u015ftirme Ortam\u0131 Ayarlar\u0131","isPartOf":{"@id":"https:\/\/fatihsoysal.com\/blog\/#website"},"datePublished":"2025-11-28T16:01:59+00:00","description":"Ubuntu \u00fczerinde C++ geli\u015ftirme ortam\u0131n\u0131z\u0131 kurmak ve yap\u0131land\u0131rmak, performansl\u0131 ve g\u00fc\u00e7l\u00fc uygulamalar yaratman\u0131n ilk ad\u0131m\u0131d\u0131r. Bu rehberde, derleyici kurulumundan modern IDE entegrasyonuna, hata ay\u0131klama tekniklerinden proje y\u00f6netimine kadar t\u00fcm s\u00fcreci ad\u0131m ad\u0131m ke\u015ffedeceksiniz. G\u00fcn\u00fcm\u00fczde yaz\u0131l\u0131m d\u00fcnyas\u0131nda performans, g\u00fcvenlik ve kaynak y\u00f6netimi gibi kritik fakt\u00f6rler, C++'\u0131 vazge\u00e7ilmez bir dil haline getirmektedir. Oyun motorlar\u0131ndan i\u015fletim sistemlerine, finansal uygulamalardan g\u00f6m\u00fcl\u00fc sistemlere kadar geni\u015f bir yelpazede kullan\u0131lan C++, donan\u0131ma yak\u0131n seviyede kontrol sa\u011flayarak uygulamalar\u0131n tam potansiyeline ula\u015fmas\u0131na olanak tan\u0131r.","breadcrumb":{"@id":"https:\/\/fatihsoysal.com\/blog\/ubuntuda-c-kurulumu-ve-gelistirme-ortami-ayarlari\/#breadcrumb"},"inLanguage":"tr","potentialAction":[{"@type":"ReadAction","target":["https:\/\/fatihsoysal.com\/blog\/ubuntuda-c-kurulumu-ve-gelistirme-ortami-ayarlari\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/fatihsoysal.com\/blog\/ubuntuda-c-kurulumu-ve-gelistirme-ortami-ayarlari\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Anasayfa","item":"https:\/\/fatihsoysal.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Ubuntu&#8217;da C++ Kurulumu ve Geli\u015ftirme Ortam\u0131 Ayarlar\u0131"}]},{"@type":"WebSite","@id":"https:\/\/fatihsoysal.com\/blog\/#website","url":"https:\/\/fatihsoysal.com\/blog\/","name":"Fatihsoysal.com","description":"Blog - Yaz\u0131l\u0131m D\u00fcnyas\u0131 Tecr\u00fcbelerim","publisher":{"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/fatihsoysal.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"tr"},{"@type":["Person","Organization"],"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1","name":"Fatih Soysal","image":{"@type":"ImageObject","inLanguage":"tr","@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/","url":"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png","contentUrl":"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png","width":512,"height":512,"caption":"Fatih Soysal"},"logo":{"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/"},"description":"Kullan\u0131m ve kodlama m\u00fckemmeliyetini odak alan uygulamalar olu\u015fturma deneyimine sahip, profesyonel olarak 15+ y\u0131l \u00fczeri deneyime sahip bir yaz\u0131l\u0131m m\u00fchendisi.","url":"https:\/\/fatihsoysal.com\/blog\/author\/fatihsoysal\/"}]}},"yoast_meta":{"yoast_wpseo_title":"","yoast_wpseo_metadesc":"","yoast_wpseo_canonical":""},"amp_enabled":true,"_links":{"self":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts\/35356","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/comments?post=35356"}],"version-history":[{"count":0,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts\/35356\/revisions"}],"wp:attachment":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/media?parent=35356"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/categories?post=35356"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/tags?post=35356"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}