{"id":34661,"date":"2025-11-20T10:01:06","date_gmt":"2025-11-20T07:01:06","guid":{"rendered":"https:\/\/fatihsoysal.com\/blog\/openwrt-libgcc_s-so-1-hatasi-elf-sinifi-sorunlari-ve-cozumleri\/"},"modified":"2025-11-20T10:01:06","modified_gmt":"2025-11-20T07:01:06","slug":"openwrt-libgcc_s-so-1-hatasi-elf-sinifi-sorunlari-ve-cozumleri","status":"publish","type":"post","link":"https:\/\/fatihsoysal.com\/blog\/openwrt-libgcc_s-so-1-hatasi-elf-sinifi-sorunlari-ve-cozumleri\/","title":{"rendered":"OpenWrt libgcc_s.so.1 Hatas\u0131: ELF S\u0131n\u0131f\u0131 Sorunlar\u0131 ve \u00c7\u00f6z\u00fcmleri"},"content":{"rendered":"<p><body><\/p>\n<p>OpenWrt tabanl\u0131 cihaz\u0131n\u0131zda bir uygulama \u00e7al\u0131\u015ft\u0131rmak isterken aniden <b>&#8220;error while loading shared libraries: libgcc_s.so.1: wrong ELF class: ELFCLASS32&#8221;<\/b> hatas\u0131yla kar\u015f\u0131la\u015ft\u0131n\u0131z m\u0131? Bu hata mesaj\u0131, \u00f6zellikle g\u00f6m\u00fcl\u00fc sistemler ve cross-compilation d\u00fcnyas\u0131na yeni ad\u0131m atanlar i\u00e7in olduk\u00e7a kafa kar\u0131\u015ft\u0131r\u0131c\u0131 olabilir. Ne yapaca\u011f\u0131n\u0131z\u0131 bilmedi\u011finizde, bu t\u00fcr bir uyumsuzluk sadece projenizi yava\u015flatmakla kalmaz, ayn\u0131 zamanda ciddi bir moral bozuklu\u011funa da yol a\u00e7abilir. Ancak endi\u015felenmeyin, bu makale size bu sorunun k\u00f6kenlerini anlaman\u0131z ve kal\u0131c\u0131 \u00e7\u00f6z\u00fcmler bulman\u0131z i\u00e7in ad\u0131m ad\u0131m rehberlik edecek.<\/p>\n<p>Bu makalede, \u00f6ncelikle hatan\u0131n ne anlama geldi\u011fini, OpenWrt ba\u011flam\u0131nda neden ortaya \u00e7\u0131kt\u0131\u011f\u0131n\u0131 ve sonras\u0131nda bu teknik bilmecenin nas\u0131l \u00e7\u00f6z\u00fclece\u011fini detayl\u0131 bir \u015fekilde inceleyece\u011fiz. Ayr\u0131ca, ger\u00e7ek d\u00fcnya senaryolar\u0131yla konuyu peki\u015ftirecek, ileri d\u00fczey ipu\u00e7lar\u0131yla gelecekte benzer sorunlarla kar\u015f\u0131la\u015fmaman\u0131z\u0131 sa\u011flayacak bilgiler sunaca\u011f\u0131z. Haz\u0131rsan\u0131z, OpenWrt&#8217;deki payla\u015f\u0131ml\u0131 k\u00fct\u00fcphane uyumsuzluklar\u0131n\u0131n gizemini \u00e7\u00f6zmeye ba\u015flayal\u0131m!<\/p>\n<p>Bu karma\u015f\u0131k hatay\u0131 anlamak i\u00e7in, \u00f6ncelikle baz\u0131 temel kavramlar\u0131 derinlemesine kavramak gereklidir. OpenWrt, y\u00f6nlendiriciler ve di\u011fer g\u00f6m\u00fcl\u00fc cihazlar i\u00e7in \u00f6zel olarak tasarlanm\u0131\u015f, Linux tabanl\u0131 a\u00e7\u0131k kaynakl\u0131 bir i\u015fletim sistemidir. K\u00fc\u00e7\u00fck boyutuna ra\u011fmen, tam \u00f6zellikli bir Linux \u00e7ekirde\u011fi sunar ve bu da onu IoT cihazlar\u0131ndan a\u011f cihazlar\u0131na kadar geni\u015f bir yelpazede kullan\u0131labilir k\u0131lar. Ancak, bu k\u00fc\u00e7\u00fck cihazlarda uygulama geli\u015ftirmek, standart masa\u00fcst\u00fc Linux da\u011f\u0131t\u0131mlar\u0131na g\u00f6re baz\u0131 \u00f6zel zorluklar bar\u0131nd\u0131r\u0131r.<\/p>\n<p>Payla\u015f\u0131ml\u0131 k\u00fct\u00fcphaneler (shared libraries), modern i\u015fletim sistemlerinin vazge\u00e7ilmez bir par\u00e7as\u0131d\u0131r. Uygulamalar\u0131n ihtiya\u00e7 duydu\u011fu ortak fonksiyonlar\u0131 (\u00f6rne\u011fin, bir dosyay\u0131 okuma, a\u011f ba\u011flant\u0131s\u0131 kurma gibi) ayr\u0131 dosyalar halinde bar\u0131nd\u0131r\u0131rlar. Bu k\u00fct\u00fcphaneler, bir uygulama \u00e7al\u0131\u015ft\u0131\u011f\u0131nda dinamik olarak y\u00fcklenir ve b\u00f6ylece her uygulaman\u0131n kendi kopyas\u0131n\u0131 ta\u015f\u0131mas\u0131 yerine bellekte tek bir kopyan\u0131n payla\u015f\u0131lmas\u0131 sa\u011flan\u0131r. Bu yakla\u015f\u0131m, hem disk alan\u0131ndan tasarruf edilmesini hem de bellek kullan\u0131m\u0131n\u0131n optimize edilmesini sa\u011flar. Linux sistemlerinde bu k\u00fct\u00fcphaneler genellikle <code>.so<\/code> (shared object) uzant\u0131s\u0131na sahiptir ve hata mesaj\u0131m\u0131zda g\u00f6rd\u00fc\u011f\u00fcm\u00fcz <code>libgcc_s.so.1<\/code> de bunlardan biridir.<\/p>\n<p>Peki, <code>libgcc_s.so.1<\/code> tam olarak nedir? Bu, GCC (GNU Compiler Collection) taraf\u0131ndan derlenen programlar\u0131n \u00e7al\u0131\u015fma zaman\u0131 deste\u011fi i\u00e7in kritik \u00f6neme sahip bir k\u00fct\u00fcphanedir. \u00d6zellikle, d\u00fc\u015f\u00fck seviyeli aritmetik i\u015flemler, istisna y\u00f6netimi ve \u00e7e\u015fitli di\u011fer C\/C++ \u00e7al\u0131\u015fma zaman\u0131 i\u015flevlerini i\u00e7erir. Bir program\u0131n bu k\u00fct\u00fcphaneyi bulamamas\u0131 veya uyumsuz bir s\u00fcr\u00fcm\u00fcn\u00fc bulmas\u0131, program\u0131n ba\u015flamamas\u0131na neden olur. \u0130\u015fte bu noktada <b>ELF format\u0131<\/b> devreye girer. ELF (Executable and Linkable Format), Linux ve di\u011fer Unix benzeri sistemlerde y\u00fcr\u00fct\u00fclebilir dosyalar\u0131n, payla\u015f\u0131ml\u0131 k\u00fct\u00fcphanelerin ve \u00e7ekirdek mod\u00fcllerinin standart dosya bi\u00e7imidir. Bir ELF dosyas\u0131, dosyan\u0131n mimarisi (\u00f6rn. ARM, MIPS, x86), bit boyutu (32-bit veya 64-bit) ve di\u011fer \u00f6nemli meta veriler hakk\u0131nda bilgiler i\u00e7eren bir ba\u015fl\u0131k (header) ta\u015f\u0131r. \u0130\u015fletim sistemi, bir program\u0131 veya k\u00fct\u00fcphaneyi y\u00fcklemeye \u00e7al\u0131\u015ft\u0131\u011f\u0131nda, bu ba\u015fl\u0131\u011f\u0131 okur ve sistemin mimarisiyle uyumlu olup olmad\u0131\u011f\u0131n\u0131 kontrol eder.<\/p>\n<p>Hata mesaj\u0131ndaki <b>&#8220;wrong ELF class: ELFCLASS32&#8221;<\/b> ifadesi tam olarak bu uyumsuzlu\u011fu i\u015faret eder. Bu ifade, sistemin bekledi\u011fi ELF s\u0131n\u0131f\u0131ndan (\u00f6rne\u011fin, 64-bit bir sistemde 64-bit bir k\u00fct\u00fcphane) farkl\u0131 olarak 32-bit bir ELF s\u0131n\u0131f\u0131na sahip bir k\u00fct\u00fcphane (<code>ELFCLASS32<\/code>) buldu\u011funu belirtir. Bu durum, genellikle 64-bit bir i\u015flemci mimarisine sahip bir OpenWrt cihaz\u0131nda, yanl\u0131\u015fl\u0131kla 32-bit bir mimariye g\u00f6re derlenmi\u015f bir k\u00fct\u00fcphaneyi kullanmaya \u00e7al\u0131\u015ft\u0131\u011f\u0131n\u0131zda ortaya \u00e7\u0131kar. Ya da tam tersi, 32-bit bir cihazda 64-bit bir k\u00fct\u00fcphane kullanmaya \u00e7al\u0131\u015f\u0131yorsunuzdur. G\u00f6m\u00fcl\u00fc sistemlerde, i\u015flemci mimarileri (MIPS, ARM, PowerPC vb.) ve bunlar\u0131n bit boyutlar\u0131 (32-bit veya 64-bit) b\u00fcy\u00fck farkl\u0131l\u0131klar g\u00f6sterir, bu da cross-compilation s\u0131ras\u0131nda dikkatli olmay\u0131 zorunlu k\u0131lar.<\/p>\n<h2>&#8220;wrong ELF class&#8221; Hatas\u0131n\u0131n Temel Nedenleri Nelerdir?<\/h2>\n<p>OpenWrt ortam\u0131nda <b>&#8220;error while loading shared libraries: libgcc_s.so.1: wrong ELF class: ELFCLASS32&#8221;<\/b> hatas\u0131n\u0131n temelinde yatan nedenleri anlamak, do\u011fru \u00e7\u00f6z\u00fcme ula\u015fman\u0131n ilk ad\u0131m\u0131d\u0131r. Bu hata genellikle \u00fc\u00e7 ana senaryo etraf\u0131nda \u015fekillenir:<\/p>\n<ol>\n<li><b>Cross-Compilation (\u00c7apraz Derleme) Uyumsuzluklar\u0131:<\/b> En yayg\u0131n nedenlerden biri, uygulamay\u0131 veya k\u00fct\u00fcphaneyi yanl\u0131\u015f hedef mimari i\u00e7in derlemektir. OpenWrt cihaz\u0131n\u0131z\u0131n i\u015flemcisi (\u00f6rne\u011fin, MIPS32, ARMv7, ARMv8\/AArch64) kendi geli\u015ftirme ortam\u0131n\u0131z\u0131n i\u015flemcisinden (genellikle x86_64) farkl\u0131d\u0131r. Bir uygulamay\u0131 kendi bilgisayar\u0131n\u0131zda derledi\u011finizde, bu genellikle bilgisayar\u0131n\u0131z\u0131n mimarisi i\u00e7in (native) derlenir. Ancak bu uygulamay\u0131 veya onun ba\u011f\u0131ml\u0131 k\u00fct\u00fcphanelerini do\u011frudan OpenWrt cihaz\u0131na kopyalad\u0131\u011f\u0131n\u0131zda, hedef cihaz\u0131n mimarisiyle uyumsuzluk nedeniyle bu hatay\u0131 al\u0131rs\u0131n\u0131z. \u00d6rne\u011fin, 64-bit bir ARM i\u015flemciye sahip bir OpenWrt router&#8217;a, 32-bit MIPS mimarisi i\u00e7in derlenmi\u015f bir <code>libgcc_s.so.1<\/code> kopyalamak, bu hatay\u0131 tetikleyecektir.<\/li>\n<li><b>Yanl\u0131\u015f Toolchain veya SDK Kullan\u0131m\u0131:<\/b> OpenWrt i\u00e7in uygulama geli\u015ftirmenin do\u011fru yolu, o cihaza ve OpenWrt s\u00fcr\u00fcm\u00fcne \u00f6zel olarak haz\u0131rlanm\u0131\u015f bir Software Development Kit (SDK) veya Buildroot kullanmakt\u0131r. Bu SDK&#8217;lar, hedef mimariye uygun derleyiciler (cross-compilers), k\u00fct\u00fcphaneler ve ba\u015fl\u0131k dosyalar\u0131 (header files) i\u00e7erir. E\u011fer yanl\u0131\u015f bir SDK (\u00f6rne\u011fin, farkl\u0131 bir mimariye ait veya farkl\u0131 bir OpenWrt s\u00fcr\u00fcm\u00fcne ait) kullan\u0131l\u0131rsa veya manuel olarak y\u00fcklenen k\u00fct\u00fcphaneler yanl\u0131\u015f kaynaktan gelirse, k\u00fct\u00fcphanelerin ELF s\u0131n\u0131flar\u0131 hedef cihaz\u0131n bekledi\u011fiyle uyu\u015fmayabilir. \u00d6zellikle, 32-bit ve 64-bit uyumsuzluklar\u0131 bu durumda s\u0131k\u00e7a g\u00f6r\u00fcl\u00fcr.<\/li>\n<li><b>Manuel K\u00fct\u00fcphane Y\u00fcklemelerinde Yap\u0131lan Hatalar:<\/b> Bazen kullan\u0131c\u0131lar, eksik k\u00fct\u00fcphaneleri manuel olarak internetten indirip cihaz\u0131n <code>\/usr\/lib<\/code> veya <code>\/lib<\/code> dizinine kopyalamaya \u00e7al\u0131\u015f\u0131r. \u0130nternetten rastgele bulunan bir k\u00fct\u00fcphanenin, cihaz\u0131n\u0131z\u0131n mimarisi ve bit boyutuyla birebir uyumlu olmas\u0131 \u00e7ok d\u00fc\u015f\u00fckt\u00fcr. Bu t\u00fcr manuel m\u00fcdahaleler, \u00e7al\u0131\u015fan bir sistemde bile uyumsuz k\u00fct\u00fcphanelerin \u00fczerine yaz\u0131lmas\u0131na ve daha geni\u015f sistem karars\u0131zl\u0131klar\u0131na yol a\u00e7abilir. Bu senaryo, hatan\u0131n en s\u0131k kar\u015f\u0131la\u015f\u0131ld\u0131\u011f\u0131 durumlardan biridir, \u00e7\u00fcnk\u00fc kullan\u0131c\u0131lar genellikle sorunu \u00e7\u00f6zmek i\u00e7in en h\u0131zl\u0131 yolu ararlar ve bu da \u00e7o\u011fu zaman yanl\u0131\u015f k\u00fct\u00fcphane se\u00e7imine yol a\u00e7ar.<\/li>\n<\/ol>\n<h3>Vaka Analizi: Ahmet&#8217;in Ak\u0131ll\u0131 Ev Sens\u00f6r\u00fc Projesi<\/h3>\n<p>Ahmet, evindeki s\u0131cakl\u0131k ve nem verilerini okuyan k\u00fc\u00e7\u00fck bir C program\u0131 yazd\u0131. Program\u0131, g\u00fc\u00e7l\u00fc Intel Core i7 i\u015flemcisine sahip 64-bit Linux geli\u015ftirme bilgisayar\u0131nda sorunsuz bir \u015fekilde derledi ve test etti. Amac\u0131, bu program\u0131 OpenWrt kurulu 32-bit MIPS mimarisine sahip TP-Link router&#8217;\u0131nda \u00e7al\u0131\u015ft\u0131rmakt\u0131. Program\u0131 <code>scp<\/code> ile router&#8217;a kopyalad\u0131ktan sonra \u00e7al\u0131\u015ft\u0131rmaya \u00e7al\u0131\u015ft\u0131\u011f\u0131nda, an\u0131nda <b>&#8220;error while loading shared libraries: libgcc_s.so.1: wrong ELF class: ELFCLASS32&#8221;<\/b> hatas\u0131yla kar\u015f\u0131la\u015ft\u0131. Ahmet&#8217;in program\u0131 elbette kendi 64-bit x86_64 mimarisi i\u00e7in derlenmi\u015fti ve OpenWrt router&#8217;\u0131, bu program\u0131n ihtiya\u00e7 duydu\u011fu <code>libgcc_s.so.1<\/code> k\u00fct\u00fcphanesini kendi \u00fczerinde (32-bit MIPS i\u00e7in) bulam\u0131yordu. Hata mesaj\u0131ndaki <code>ELFCLASS32<\/code> k\u0131sm\u0131, asl\u0131nda Ahmet&#8217;in program\u0131n\u0131n (ve dolay\u0131s\u0131yla dolayl\u0131 yoldan bekledi\u011fi k\u00fct\u00fcphanenin) 32-bit ELF format\u0131nda olmas\u0131 gerekti\u011fini, ancak kendisinin 64-bit bir sistemde \u00e7al\u0131\u015ft\u0131\u011f\u0131 yan\u0131lg\u0131s\u0131na d\u00fc\u015ft\u00fc\u011f\u00fcn\u00fc veya 32-bit bir sisteme 64-bit bir binary ta\u015f\u0131maya \u00e7al\u0131\u015ft\u0131\u011f\u0131n\u0131 g\u00f6stermiyordu. Daha ziyade, OpenWrt sistemindeki mevcut <code>libgcc_s.so.1<\/code>&#8216;in 32-bit oldu\u011funu, ancak Ahmet&#8217;in program\u0131n\u0131n beklentisinin farkl\u0131 oldu\u011funu belirtiyordu. Asl\u0131nda, Ahmet&#8217;in kendi bilgisayar\u0131nda derledi\u011fi uygulama 64-bit x86_64 ELF s\u0131n\u0131f\u0131ndayd\u0131. Router&#8217;da \u00e7al\u0131\u015ft\u0131rmaya \u00e7al\u0131\u015ft\u0131\u011f\u0131nda ise, router&#8217;\u0131n 32-bit MIPS mimarisiyle uyu\u015fmayan bir 64-bit x86_64 uygulamas\u0131n\u0131 \u00e7al\u0131\u015ft\u0131rmaya \u00e7al\u0131\u015ft\u0131 ve bu uygulama da router&#8217;\u0131n 32-bit MIPS <code>libgcc_s.so.1<\/code>&#8216;ini y\u00fckleyemedi\u011fi i\u00e7in hata verdi. K\u0131sacas\u0131, Ahmet&#8217;in uygulamas\u0131 router&#8217;\u0131n bekledi\u011fi t\u00fcrden (32-bit MIPS) de\u011fildi ve bu y\u00fczden onunla birlikte gelen k\u00fct\u00fcphaneleri kullanamad\u0131. Bu vaka, cross-compilation&#8217;\u0131n \u00f6nemini ve do\u011fru toolchain kullan\u0131m\u0131n\u0131n kritikli\u011fini a\u00e7\u0131k\u00e7a ortaya koymaktad\u0131r.<\/p>\n<h2>Sorunu Nas\u0131l Te\u015fhis Edebiliriz? Ad\u0131m Ad\u0131m \u0130nceleme<\/h2>\n<p>Hatan\u0131n temel nedenlerini anlad\u0131\u011f\u0131m\u0131za g\u00f6re, \u015fimdi bu sorunu nas\u0131l te\u015fhis edece\u011fimize odaklanal\u0131m. Do\u011fru te\u015fhis, do\u011fru \u00e7\u00f6z\u00fcme ula\u015fman\u0131n anahtar\u0131d\u0131r. A\u015fa\u011f\u0131daki ad\u0131mlar\u0131 uygulayarak OpenWrt cihaz\u0131n\u0131zdaki ve problem yaratan dosyalardaki uyumsuzluklar\u0131 belirleyebilirsiniz.<\/p>\n<h3>1. Problemli Dosyan\u0131n ELF S\u0131n\u0131f\u0131n\u0131 ve Mimarini Kontrol Etme<\/h3>\n<p>Hata mesaj\u0131, <code>libgcc_s.so.1<\/code> dosyas\u0131n\u0131n <code>ELFCLASS32<\/code> oldu\u011funu belirtiyor. Bu, k\u00fct\u00fcphanenin 32-bit bir mimari i\u00e7in derlendi\u011fi anlam\u0131na gelir. Ancak as\u0131l soru \u015fudur: Cihaz\u0131n\u0131z bu k\u00fct\u00fcphanenin 32-bit versiyonunu mu bekliyor, yoksa 64-bit mi? Ve daha da \u00f6nemlisi, cihaz\u0131n\u0131z\u0131n i\u015flemci mimarisi nedir? Bu bilgileri edinmek i\u00e7in <code>file<\/code> komutunu kullanaca\u011f\u0131z.<\/p>\n<p><b>Ad\u0131m 1.1: OpenWrt cihaz\u0131n\u0131zdaki <code>libgcc_s.so.1<\/code> dosyas\u0131n\u0131 kontrol edin.<\/b><\/p>\n<pre><code>\nfile \/usr\/lib\/libgcc_s.so.1\n<\/pre>\n<p><\/code><\/p>\n<p>Bu komutun \u00e7\u0131kt\u0131s\u0131 \u015f\u00f6yle bir \u015fey olabilir:<\/p>\n<pre><code>\n\/usr\/lib\/libgcc_s.so.1: ELF 32-bit LSB shared object, MIPS, MIPS32 rel2 version 1 (SYSV), dynamically linked, stripped\n<\/pre>\n<p><\/code><\/p>\n<p>Bu \u00e7\u0131kt\u0131dan anlad\u0131\u011f\u0131m\u0131z: <code>libgcc_s.so.1<\/code> bir <b>32-bit<\/b>, <b>MIPS<\/b> mimarisi i\u00e7in derlenmi\u015f payla\u015f\u0131ml\u0131 k\u00fct\u00fcphanedir. E\u011fer bu \u00e7\u0131kt\u0131 sizin router'\u0131n\u0131z\u0131n ger\u00e7ek mimarisi ve bit boyutuyla uyu\u015fmuyorsa, sorun buradad\u0131r. \u00d6rne\u011fin, e\u011fer router'\u0131n\u0131z 64-bit ARM mimarisine sahipse, bu 32-bit MIPS k\u00fct\u00fcphanesi yanl\u0131\u015f olacakt\u0131r.<\/p>\n<p><b>Ad\u0131m 1.2: \u00c7al\u0131\u015ft\u0131rmaya \u00e7al\u0131\u015ft\u0131\u011f\u0131n\u0131z uygulaman\u0131n (veya di\u011fer ba\u011f\u0131ml\u0131 k\u00fct\u00fcphanelerin) ELF s\u0131n\u0131f\u0131n\u0131 kontrol edin.<\/b><\/p>\n<p>E\u011fer hatay\u0131 kendi derledi\u011finiz bir uygulama y\u00fcz\u00fcnden al\u0131yorsan\u0131z, o uygulaman\u0131n da mimarisini kontrol etmelisiniz:<\/p>\n<pre><code>\nfile \/path\/to\/your\/application\n<\/pre>\n<p><\/code><\/p>\n<p>\u00d6rne\u011fin, \u00e7\u0131kt\u0131n\u0131n \u015f\u00f6yle oldu\u011funu varsayal\u0131m:<\/p>\n<pre><code>\n\/path\/to\/your\/application: ELF 64-bit LSB executable, ARM aarch64, version 1 (SYSV), dynamically linked, interpreter \/lib\/ld-musl-aarch64.so.1, stripped\n<\/pre>\n<p><\/code><\/p>\n<p>Bu durumda, uygulaman\u0131z <b>64-bit ARM (aarch64)<\/b> mimarisi i\u00e7in derlenmi\u015fken, yukar\u0131daki <code>libgcc_s.so.1<\/code> \u00e7\u0131kt\u0131s\u0131 <b>32-bit MIPS<\/b> idi. \u0130\u015fte bu tam olarak bir uyumsuzluk durumudur! 64-bit ARM uygulamas\u0131, kendisiyle uyumlu 64-bit ARM <code>libgcc_s.so.1<\/code> beklerken, sistemde 32-bit MIPS versiyonunu buluyor ve bu da <b>\"wrong ELF class\"<\/b> hatas\u0131na yol a\u00e7\u0131yor.<\/p>\n<h3>2. OpenWrt Cihaz\u0131n\u0131z\u0131n Ger\u00e7ek Mimarisini Belirleme<\/h3>\n<p>Hatan\u0131n kayna\u011f\u0131n\u0131 anlamak i\u00e7in OpenWrt cihaz\u0131n\u0131z\u0131n i\u015flemci mimarisini kesin olarak bilmeniz gerekir. Bunu \u00f6\u011frenmenin birka\u00e7 yolu vard\u0131r:<\/p>\n<ul>\n<li><b><code>uname -m<\/code> komutu ile:<\/b> Bu komut, \u00e7ekirde\u011fin mimarisini verir.\n<pre><code>\nuname -m\n        <\/pre>\n<p><\/code><\/p>\n<p>\u00c7\u0131kt\u0131lar genellikle \u015f\u00f6yle olur: <code>mips<\/code>, <code>armv7l<\/code>, <code>aarch64<\/code>, <code>i386<\/code> vb.<\/p>\n<\/li>\n<li><b><code>cat \/proc\/cpuinfo<\/code> komutu ile:<\/b> Bu, i\u015flemci hakk\u0131nda daha detayl\u0131 bilgi verir. \"Hardware\" veya \"Processor\" sat\u0131rlar\u0131 mimari hakk\u0131nda ipu\u00e7lar\u0131 sunar.\n<pre><code>\ncat \/proc\/cpuinfo\n        <\/pre>\n<p><\/code>\n    <\/li>\n<li><b>Cihaz\u0131n\u0131z\u0131n \u00dcretici Sayfas\u0131ndan:<\/b> En g\u00fcvenilir yol, router'\u0131n\u0131z\u0131n model numaras\u0131n\u0131 al\u0131p OpenWrt'nin resmi cihaz taban\u0131nda veya \u00fcreticinin teknik \u00f6zellikler sayfas\u0131nda i\u015flemci bilgilerini kontrol etmektir.<\/li>\n<\/ul>\n<p>Bu kontroller sayesinde, hedef cihaz\u0131n bekledi\u011fi k\u00fct\u00fcphane t\u00fcr\u00fc ile mevcut k\u00fct\u00fcphane veya \u00e7al\u0131\u015ft\u0131rmaya \u00e7al\u0131\u015ft\u0131\u011f\u0131n\u0131z uygulaman\u0131n t\u00fcr\u00fc aras\u0131ndaki fark\u0131 net bir \u015fekilde ortaya \u00e7\u0131karabilirsiniz. Bu, \u00e7\u00f6z\u00fcme giden yolda at\u0131lm\u0131\u015f en \u00f6nemli ad\u0131md\u0131r.<\/p>\n<blockquote>\n<p> Uzman \u0130pucu: Mimari tespiti yaparken sadece <code>uname -m<\/code> \u00e7\u0131kt\u0131s\u0131na g\u00fcvenmeyin. \u00d6zellikle ARM mimarilerinde <code>armv7l<\/code> 32-bit ARM anlam\u0131na gelirken, <code>aarch64<\/code> 64-bit ARM'\u0131 temsil eder. Bunlar farkl\u0131 toolchain'ler gerektirir ve uyumsuzluklara yol a\u00e7abilir. <code>\/proc\/cpuinfo<\/code> \u00e7\u0131kt\u0131s\u0131n\u0131 ve cihaz\u0131n\u0131z\u0131n OpenWrt sayfas\u0131n\u0131 da mutlaka kontrol edin.\n<\/p>\n<\/blockquote>\n<h2>Sorunu \u00c7\u00f6zme Yollar\u0131: Ad\u0131m Ad\u0131m Rehber<\/h2>\n<p>Te\u015fhis ad\u0131mlar\u0131n\u0131 tamamlay\u0131p sorunun k\u00f6kenini belirledi\u011fimize g\u00f6re, \u015fimdi kal\u0131c\u0131 \u00e7\u00f6z\u00fcmlere odaklanabiliriz. Unutmay\u0131n ki, <b>\"wrong ELF class\"<\/b> hatas\u0131 genellikle uyumsuz bir derleme veya k\u00fct\u00fcphane kopyalama i\u015fleminden kaynakland\u0131\u011f\u0131 i\u00e7in, \u00e7\u00f6z\u00fcm\u00fc de genellikle do\u011fru derleme ortam\u0131n\u0131n kurulmas\u0131 ve kullan\u0131lmas\u0131yla ilgilidir.<\/p>\n<h3>1. Do\u011fru OpenWrt SDK ve Toolchain Kullan\u0131m\u0131<\/h3>\n<p>Bu, hatay\u0131 \u00e7\u00f6zmenin en g\u00fcvenilir ve \u00f6nerilen yoludur. Kendi uygulaman\u0131z\u0131 veya k\u00fct\u00fcphanenizi OpenWrt cihaz\u0131n\u0131z i\u00e7in derlemek istiyorsan\u0131z, bunu do\u011fru <b>OpenWrt SDK (Software Development Kit)<\/b> kullanarak yapmal\u0131s\u0131n\u0131z. SDK, hedef cihaz\u0131n\u0131z\u0131n mimarisine ve OpenWrt s\u00fcr\u00fcm\u00fcne \u00f6zel olarak derlenmi\u015f bir \u00e7apraz derleyici (cross-compiler), gerekli k\u00fct\u00fcphaneler ve ba\u015fl\u0131k dosyalar\u0131 i\u00e7erir.<\/p>\n<h4>Nas\u0131l Yap\u0131l\u0131r?<\/h4>\n<ol>\n<li><b>Do\u011fru SDK'y\u0131 \u0130ndirin:<\/b> OpenWrt'nin <a href=\"https:\/\/downloads.openwrt.org\/\" target=\"_blank\">resmi indirme sayfas\u0131ndan<\/a>, cihaz\u0131n\u0131z\u0131n modeli ve OpenWrt s\u00fcr\u00fcm\u00fc i\u00e7in uygun SDK'y\u0131 bulun ve indirin. \u00d6rne\u011fin, <code>openwrt-sdk-[VERSION]-[TARGET]-[SUBTARGET]_gcc-8.4.0_musl.Linux-x86_64.tar.xz<\/code> gibi bir isimle kar\u015f\u0131la\u015facaks\u0131n\u0131z. Buradaki <code>[TARGET]<\/code> ve <code>[SUBTARGET]<\/code> k\u0131s\u0131mlar\u0131, cihaz\u0131n\u0131z\u0131n mimarisini belirtir (\u00f6rn. <code>mips_24kc<\/code>, <code>arm_cortex-a7<\/code>, <code>aarch64_cortex-a53<\/code>).<\/li>\n<li><b>SDK'y\u0131 Kurun:<\/b> \u0130ndirdi\u011finiz <code>.tar.xz<\/code> dosyas\u0131n\u0131 geli\u015ftirme ortam\u0131n\u0131zda (Linux tabanl\u0131 bir sistem \u00f6nerilir) istedi\u011finiz bir dizine a\u00e7\u0131n.\n<pre><code>\ntar -xf openwrt-sdk-*.tar.xz\ncd openwrt-sdk-*\n        <\/pre>\n<p><\/code>\n    <\/li>\n<li><b>Ortam\u0131 Ayarlay\u0131n ve Derleyin:<\/b> SDK dizinine girdikten sonra, PATH de\u011fi\u015fkeninizi ayarlayarak cross-compiler'\u0131 kullan\u0131ma haz\u0131r hale getirebilirsiniz. Ard\u0131ndan uygulaman\u0131z\u0131 derleyin.\n<pre><code>\n# PATH de\u011fi\u015fkenini ayarlay\u0131n (bu genellikle SDK'n\u0131n i\u00e7inde otomatik yap\u0131l\u0131r, ancak manuel de yap\u0131labilir)\n# export PATH=\"$(pwd)\/staging_dir\/toolchain-<arch>\/bin:$(pwd)\/staging_dir\/host\/bin:$PATH\"\n\n# \u00d6rnek bir C kodu (hello.c)\n# include <stdio.h>\n# int main() {\n#     printf(\"Merhaba OpenWrt!\\n\");\n#     return 0;\n# }\n\n# Uygulamay\u0131 derleyin (cross-compiler'\u0131n ad\u0131n\u0131 SDK'n\u0131n bin dizininden bulabilirsiniz)\n# \u00d6rne\u011fin: mips-openwrt-linux-gcc, arm-openwrt-linux-gcc, aarch64-openwrt-linux-gcc\nexport STAGING_DIR=$(pwd)\/staging_dir\nmake V=s\n<TARGET_ARCH>-openwrt-linux-gcc hello.c -o hello\n        <\/pre>\n<p><\/code><\/p>\n<p>Burada <code><TARGET_ARCH>-openwrt-linux-gcc<\/code> k\u0131sm\u0131, SDK'n\u0131z\u0131n sa\u011flad\u0131\u011f\u0131 do\u011fru cross-compiler'\u0131n ad\u0131d\u0131r. Bunu SDK'n\u0131n <code>staging_dir\/toolchain-<arch>\/bin<\/code> dizininde bulabilirsiniz.<\/p>\n<\/li>\n<li><b>Uygulamay\u0131 Cihaza Kopyalay\u0131n:<\/b> Derledi\u011finiz <code>hello<\/code> uygulamas\u0131n\u0131 <code>scp<\/code> veya benzeri bir ara\u00e7la OpenWrt cihaz\u0131n\u0131za kopyalay\u0131n ve \u00e7al\u0131\u015ft\u0131r\u0131n. Bu sefer sorunsuz \u00e7al\u0131\u015fmas\u0131 beklenir \u00e7\u00fcnk\u00fc uygulama, cihaz\u0131n mimarisine uygun olarak derlenmi\u015ftir ve cihazdaki mevcut <code>libgcc_s.so.1<\/code> ile uyumludur.<\/li>\n<\/ol>\n<h3>2. OpenWrt Buildroot Kullanarak Paket Olu\u015fturma<\/h3>\n<p>Daha karma\u015f\u0131k uygulamalar veya birden fazla ba\u011f\u0131ml\u0131l\u0131\u011f\u0131 olan projeler i\u00e7in OpenWrt SDK yerine <b>OpenWrt Buildroot<\/b> kullanmak daha uygun olabilir. Buildroot, OpenWrt i\u00e7in tam bir i\u015fletim sistemi g\u00f6r\u00fcnt\u00fcs\u00fc ve istedi\u011finiz t\u00fcm uygulamalar\u0131 ve k\u00fct\u00fcphaneleri i\u00e7eren \u00f6zel bir firmware derlemenizi sa\u011flar. Bu y\u00f6ntem, ba\u011f\u0131ml\u0131l\u0131k y\u00f6netimini otomatikle\u015ftirir ve t\u00fcm bile\u015fenlerin tutarl\u0131 bir mimari i\u00e7in derlenmesini garanti eder.<\/p>\n<h4>Nas\u0131l Yap\u0131l\u0131r?<\/h4>\n<ol>\n<li><b>OpenWrt Kaynak Kodlar\u0131n\u0131 \u0130ndirin:<\/b>\n<pre><code>\ngit clone https:\/\/git.openwrt.org\/openwrt\/openwrt.git\ncd openwrt\n        <\/pre>\n<p><\/code>\n    <\/li>\n<li><b>Beslemeleri G\u00fcncelleyin ve Yap\u0131land\u0131rma Men\u00fcs\u00fcn\u00fc A\u00e7\u0131n:<\/b>\n<pre><code>\n.\/scripts\/feeds update -a\n.\/scripts\/feeds install -a\nmake menuconfig\n        <\/pre>\n<p><\/code><\/p>\n<p><code>make menuconfig<\/code> i\u00e7inde, hedef sistem mimarisini (Target System, Target Profile) do\u011fru se\u00e7ti\u011finizden emin olun. Ayr\u0131ca, \"Base system\" alt\u0131nda ve \"Languages\" k\u0131sm\u0131nda ihtiya\u00e7 duydu\u011funuz t\u00fcm k\u00fct\u00fcphanelerin (\u00f6rne\u011fin <code>libgcc_s.so.1<\/code> ve di\u011ferleri) se\u00e7ili oldu\u011fundan emin olun. Kendi uygulaman\u0131z i\u00e7in de yeni bir paket tan\u0131m\u0131 (Makefile) olu\u015fturarak onu da bu Buildroot'a dahil edebilirsiniz.<\/p>\n<\/li>\n<li><b>Firmware ve Uygulaman\u0131z\u0131 Derleyin:<\/b>\n<pre><code>\nmake V=s\n        <\/pre>\n<p><\/code><\/p>\n<p>Bu i\u015flem, se\u00e7ti\u011finiz t\u00fcm paketler ve temel sistem ile birlikte tam bir OpenWrt firmware g\u00f6r\u00fcnt\u00fcs\u00fc olu\u015fturacakt\u0131r. Bu g\u00f6r\u00fcnt\u00fcy\u00fc cihaz\u0131n\u0131za flashlad\u0131\u011f\u0131n\u0131zda, t\u00fcm k\u00fct\u00fcphaneler ve uygulamalar mimari olarak uyumlu olacakt\u0131r.<\/p>\n<\/li>\n<\/ol>\n<h3>3. Mevcut Payla\u015f\u0131ml\u0131 K\u00fct\u00fcphaneleri Opkg ile Y\u00f6netme<\/h3>\n<p>E\u011fer hata, sistemde eksik veya uyumsuz bir payla\u015f\u0131ml\u0131 k\u00fct\u00fcphaneden kaynaklan\u0131yorsa ve bu sizin \u00f6zel derledi\u011finiz bir uygulama de\u011fil, mevcut bir paketin ba\u011f\u0131ml\u0131l\u0131\u011f\u0131 ise, OpenWrt'nin paket y\u00f6neticisi <code>opkg<\/code>'yi kullanmal\u0131s\u0131n\u0131z. <code>opkg<\/code>, sisteminiz i\u00e7in do\u011fru mimariye sahip k\u00fct\u00fcphaneleri otomatik olarak indirip kuracakt\u0131r.<\/p>\n<h4>Nas\u0131l Yap\u0131l\u0131r?<\/h4>\n<ol>\n<li><b>Paket Listesini G\u00fcncelleyin:<\/b>\n<pre><code>\nopkg update\n        <\/pre>\n<p><\/code>\n    <\/li>\n<li><b>Eksik K\u00fct\u00fcphaneyi Kurun (veya Yeniden Kurun):<\/b>\n<p>E\u011fer <code>libgcc_s.so.1<\/code> eksikse, onu kurmaya \u00e7al\u0131\u015f\u0131n. Genellikle bu k\u00fct\u00fcphane <code>libgcc<\/code> paketi i\u00e7inde bulunur.<\/p>\n<pre><code>\nopkg install libgcc\n        <\/pre>\n<p><\/code><\/p>\n<p>E\u011fer zaten kuruluysa ancak bozuk veya uyumsuz oldu\u011fundan \u015f\u00fcpheleniyorsan\u0131z, yeniden kurmay\u0131 deneyebilirsiniz:<\/p>\n<pre><code>\nopkg remove libgcc\nopkg install libgcc\n        <\/pre>\n<p><\/code><\/p>\n<p><code>opkg<\/code>, sisteminizin mimarisine uygun s\u00fcr\u00fcm\u00fc otomatik olarak se\u00e7ece\u011fi i\u00e7in manuel kopyalama hatalar\u0131n\u0131n \u00f6n\u00fcne ge\u00e7er.<\/p>\n<\/li>\n<\/ol>\n<p>Bu \u00fc\u00e7 y\u00f6ntem, <b>\"wrong ELF class\"<\/b> hatas\u0131n\u0131n \u00e7\u00f6z\u00fcm\u00fcne y\u00f6nelik en etkili yakla\u015f\u0131mlard\u0131r. Her zaman i\u00e7in OpenWrt'nin kendi ara\u00e7lar\u0131n\u0131 ve ekosistemini kullanmak, uyumsuzluk sorunlar\u0131n\u0131 en aza indirmenin anahtar\u0131d\u0131r. \u00d6zellikle cross-compilation ve k\u00fct\u00fcphane y\u00f6netimi konular\u0131nda OpenWrt'nin sundu\u011fu bu resmi y\u00f6ntemler, uzun vadede size zaman ve emek kazand\u0131racakt\u0131r.<\/p>\n<p style=\"text-align: center;\">\n<img decoding=\"async\" src=\"https:\/\/via.placeholder.com\/600x300?text=OpenWrt+Cross-Compilation+Flow\" alt=\"OpenWrt Cross-Compilation Ak\u0131\u015f\u0131\">\n<\/p>\n<h2>\u0130leri D\u00fczey \u0130pu\u00e7lar\u0131 ve En \u0130yi Uygulamalar<\/h2>\n<p>Yukar\u0131daki \u00e7\u00f6z\u00fcmler genellikle hatay\u0131 gidermek i\u00e7in yeterli olacakt\u0131r. Ancak, daha karma\u015f\u0131k senaryolar veya geli\u015ftirme s\u00fcre\u00e7lerinizi optimize etmek istedi\u011finiz durumlarda baz\u0131 ileri d\u00fczey ipu\u00e7lar\u0131 ve en iyi uygulamalar mevcuttur. Bu b\u00f6l\u00fcmde, deneyimli kullan\u0131c\u0131lar\u0131n OpenWrt ortam\u0131nda daha verimli ve sorunsuz \u00e7al\u0131\u015fmas\u0131na yard\u0131mc\u0131 olacak tekniklere odaklanaca\u011f\u0131z.<\/p>\n<h3>1. ABI Uyumlulu\u011funu Anlamak<\/h3>\n<p>Sadece ELF s\u0131n\u0131f\u0131 (32-bit\/64-bit) ve mimari (ARM\/MIPS) de\u011fil, <b>Application Binary Interface (ABI) uyumlulu\u011fu<\/b> da payla\u015f\u0131ml\u0131 k\u00fct\u00fcphaneler i\u00e7in kritik \u00f6neme sahiptir. ABI, programlar\u0131n ve k\u00fct\u00fcphanelerin ikili d\u00fczeyde birbiriyle nas\u0131l etkile\u015fime girdi\u011fini tan\u0131mlar. Bu, fonksiyon \u00e7a\u011fr\u0131lar\u0131n\u0131n nas\u0131l yap\u0131ld\u0131\u011f\u0131, parametrelerin nas\u0131l aktar\u0131ld\u0131\u011f\u0131, bellek d\u00fczeni ve veri t\u00fcrlerinin temsili gibi detaylar\u0131 i\u00e7erir. GCC s\u00fcr\u00fcm\u00fc, libc (genellikle glibc veya musl) s\u00fcr\u00fcm\u00fc ve derleyici bayraklar\u0131 gibi fakt\u00f6rler ABI'yi etkileyebilir. OpenWrt genellikle <b>musl libc<\/b> kullan\u0131rken, baz\u0131 masa\u00fcst\u00fc da\u011f\u0131t\u0131mlar\u0131 <b>glibc<\/b> kullan\u0131r. Bu farkl\u0131l\u0131klar, ayn\u0131 mimari ve bit boyutu i\u00e7in derlenmi\u015f olsalar bile k\u00fct\u00fcphaneler aras\u0131nda uyumsuzluklara yol a\u00e7abilir. Bu nedenle, OpenWrt SDK's\u0131n\u0131 kullanmak, t\u00fcm sistem bile\u015fenlerinin ayn\u0131 ABI'ye g\u00f6re derlenmesini sa\u011flayarak bu t\u00fcr sorunlar\u0131 ortadan kald\u0131r\u0131r.<\/p>\n<h3>2. LD_LIBRARY_PATH Kullan\u0131m\u0131nda Dikkat<\/h3>\n<p>Bazen, \u00f6zellikle test ama\u00e7l\u0131 veya ge\u00e7ici \u00e7\u00f6z\u00fcmler i\u00e7in, uygulamalar\u0131n\u0131z\u0131n arayaca\u011f\u0131 k\u00fct\u00fcphane yollar\u0131n\u0131 <code>LD_LIBRARY_PATH<\/code> ortam de\u011fi\u015fkenini kullanarak de\u011fi\u015ftirebilirsiniz. Bu, sistem genelindeki k\u00fct\u00fcphane aramalar\u0131n\u0131 de\u011fi\u015ftirmeden, belirli bir uygulama i\u00e7in alternatif bir k\u00fct\u00fcphane yolu belirtmenizi sa\u011flar. Ancak bu y\u00f6ntemi dikkatli kullanmal\u0131s\u0131n\u0131z:<\/p>\n<pre><code>\nexport LD_LIBRARY_PATH=\/path\/to\/your\/custom\/libs:$LD_LIBRARY_PATH\n.\/your_application\n<\/pre>\n<p><\/code><\/p>\n<p><b>Uyar\u0131:<\/b> <code>LD_LIBRARY_PATH<\/code>'i kal\u0131c\u0131 olarak ayarlamak veya sistem geneline yaymak (\u00f6rne\u011fin <code>\/etc\/profile<\/code> gibi dosyalarda), sistem karars\u0131zl\u0131klar\u0131na ve g\u00fcvenlik a\u00e7\u0131klar\u0131na neden olabilir. Sadece ihtiyac\u0131n\u0131z oldu\u011funda ve test ortamlar\u0131nda kullanman\u0131z \u00f6nerilir.<\/p>\n<h3>3. Debugging Ara\u00e7lar\u0131 ile Sorun Giderme<\/h3>\n<p>E\u011fer yukar\u0131daki y\u00f6ntemlere ra\u011fmen hala sorun ya\u015f\u0131yorsan\u0131z, daha detayl\u0131 hata ay\u0131klama ara\u00e7lar\u0131n\u0131 kullanabilirsiniz:<\/p>\n<ul>\n<li><b><code>strace<\/code>:<\/b> Bir uygulaman\u0131n hangi sistem \u00e7a\u011fr\u0131lar\u0131n\u0131 yapt\u0131\u011f\u0131n\u0131 ve hangi dosyalar\u0131 a\u00e7maya \u00e7al\u0131\u015ft\u0131\u011f\u0131n\u0131 g\u00f6rmek i\u00e7in <code>strace<\/code> kullanabilirsiniz. Bu, uygulaman\u0131n hangi k\u00fct\u00fcphaneleri nerede arad\u0131\u011f\u0131n\u0131 anlaman\u0131za yard\u0131mc\u0131 olabilir.\n<pre><code>\nstrace .\/your_application\n        <\/pre>\n<p><\/code><\/p>\n<p><code>strace<\/code> \u00e7\u0131kt\u0131s\u0131nda \"openat\" veya \"access\" gibi \u00e7a\u011fr\u0131lar\u0131 inceleyerek k\u00fct\u00fcphane arama yollar\u0131n\u0131 takip edebilirsiniz.<\/p>\n<\/li>\n<li><b><code>gdbserver<\/code>:<\/b> E\u011fer OpenWrt cihaz\u0131n\u0131zda <code>gdbserver<\/code> kuruluysa, uygulaman\u0131z\u0131 uzaktan hata ay\u0131klayabilirsiniz. Bu, \u00f6zellikle karma\u015f\u0131k runtime hatalar\u0131n\u0131 ve bellek eri\u015fim sorunlar\u0131n\u0131 gidermek i\u00e7in \u00e7ok g\u00fc\u00e7l\u00fc bir y\u00f6ntemdir.\n<pre><code>\n# Cihazda:\ngdbserver :1234 .\/your_application\n\n# Geli\u015ftirme bilgisayar\u0131n\u0131zda:\n<TARGET_ARCH>-openwrt-linux-gdb\n(gdb) target remote <ROUTER_IP>:1234\n(gdb) file \/path\/to\/your\/compiled\/application\n(gdb) continue\n        <\/pre>\n<p><\/code>\n    <\/li>\n<\/ul>\n<h3>4. \u00d6zel OpenWrt Paketleri Olu\u015fturma<\/h3>\n<p>Tek bir uygulamadan daha fazlas\u0131n\u0131 OpenWrt'ye entegre etmek istiyorsan\u0131z, kendi OpenWrt paketlerinizi olu\u015fturmay\u0131 \u00f6\u011frenmelisiniz. OpenWrt Buildroot, bunun i\u00e7in bir yap\u0131 sunar. Her paket, kaynak kodunun nereden indirilece\u011fini, nas\u0131l derlenece\u011fini ve sisteme nas\u0131l kurulaca\u011f\u0131n\u0131 a\u00e7\u0131klayan bir <code>Makefile<\/code>'a sahiptir. Bu sayede, t\u00fcm ba\u011f\u0131ml\u0131l\u0131klar do\u011fru bir \u015fekilde derlenir ve paket sistemiyle entegre olur.<\/p>\n<h4>\u00d6rnek Makefile Yap\u0131s\u0131 (basitle\u015ftirilmi\u015f)<\/h4>\n<pre><code>\n#include $(TOPDIR)\/rules.mk\n\nPKG_NAME:=my_custom_app\nPKG_VERSION:=1.0\nPKG_RELEASE:=1\n\nPKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz\nPKG_SOURCE_URL:=https:\/\/example.com\/downloads\nPKG_HASH:=abcdef...\n\ninclude $(INCLUDE_DIR)\/package.mk\n\ndefine Package\/my_custom_app\n  SECTION:=utils\n  CATEGORY:=Utilities\n  TITLE:=My Custom Application\n  DEPENDS:=+libgcc\nendef\n\ndefine Package\/my_custom_app\/description\n This is a custom application for OpenWrt.\nendef\n\ndefine Build\/Prepare\n  $(call Build\/Prepare\/Default)\nendef\n\ndefine Build\/Compile\n  $(MAKE) -C $(PKG_BUILD_DIR) \\\n    $(TARGET_CONFIGURE_OPTS) \\\n    CFLAGS=\"$(TARGET_CFLAGS)\" \\\n    LDFLAGS=\"$(TARGET_LDFLAGS)\"\nendef\n\ndefine Package\/my_custom_app\/install\n  $(INSTALL_DIR) $(1)\/usr\/bin\n  $(INSTALL_BIN) $(PKG_BUILD_DIR)\/my_custom_app $(1)\/usr\/bin\/\nendef\n\n$(eval $(call BuildPackage,my_custom_app))\n<\/pre>\n<p><\/code><\/p>\n<p>Bu <code>Makefile<\/code> yap\u0131s\u0131, uygulaman\u0131z\u0131n ba\u011f\u0131ml\u0131l\u0131klar\u0131n\u0131 (<code>DEPENDS:=+libgcc<\/code> gibi) do\u011fru bir \u015fekilde belirtmenizi ve derleme s\u00fcrecini OpenWrt'nin kendi mekanizmalar\u0131na b\u0131rakman\u0131z\u0131 sa\u011flar. Bu sayede <code>libgcc_s.so.1<\/code> gibi temel k\u00fct\u00fcphaneler de dahil olmak \u00fczere t\u00fcm ba\u011f\u0131ml\u0131l\u0131klar, hedef mimari ve ABI ile uyumlu olarak derlenir ve kurulur.<\/p>\n<blockquote>\n<p> Uzman \u0130pucu: Otomatik testler, geli\u015ftirme d\u00f6ng\u00fcs\u00fcn\u00fcn ayr\u0131lmaz bir par\u00e7as\u0131 olmal\u0131d\u0131r. \u00d6zellikle cross-compilation ortamlar\u0131nda, uygulaman\u0131z\u0131n hedef cihazda do\u011fru \u00e7al\u0131\u015ft\u0131\u011f\u0131ndan emin olmak i\u00e7in k\u00fc\u00e7\u00fck bir test paketi olu\u015fturun ve derleme sonras\u0131 cihazda bu testleri otomatik olarak \u00e7al\u0131\u015ft\u0131r\u0131n. Bu, erken a\u015famada uyumsuzluklar\u0131 yakalaman\u0131za yard\u0131mc\u0131 olur.\n<\/p>\n<\/blockquote>\n<p>Bu ileri d\u00fczey teknikler, OpenWrt projelerinizde kar\u015f\u0131la\u015fabilece\u011finiz karma\u015f\u0131k sorunlar\u0131 \u00e7\u00f6zmek ve geli\u015ftirme s\u00fcrecinizi daha sa\u011flam hale getirmek i\u00e7in size daha fazla kontrol ve esneklik sa\u011flayacakt\u0131r. Unutmay\u0131n, g\u00f6m\u00fcl\u00fc sistemlerde \"bir kereden bir \u015fey olmaz\" yakla\u015f\u0131m\u0131 \u00e7o\u011fu zaman ba\u015f a\u011fr\u0131s\u0131na yol a\u00e7ar; tutarl\u0131 ve metodik bir yakla\u015f\u0131m her zaman en iyisidir.<\/p>\n<h2>Sonu\u00e7 ve S\u0131k\u00e7a Sorulan Sorular<\/h2>\n<p>OpenWrt ortam\u0131nda kar\u015f\u0131la\u015f\u0131lan <b>\"error while loading shared libraries: libgcc_s.so.1: wrong ELF class: ELFCLASS32\"<\/b> hatas\u0131, ilk bak\u0131\u015fta karma\u015f\u0131k g\u00f6r\u00fcnse de, temelde cross-compilation (\u00e7apraz derleme) s\u00fcre\u00e7lerindeki mimari ve bit boyutu uyumsuzluklar\u0131ndan kaynaklanan yayg\u0131n bir problemdir. Bu makale boyunca, hatan\u0131n ne anlama geldi\u011fini, neden ortaya \u00e7\u0131kt\u0131\u011f\u0131n\u0131 ve bu t\u00fcr sorunlar\u0131 nas\u0131l te\u015fhis edip \u00e7\u00f6zebilece\u011finizi detayl\u0131ca ele ald\u0131k. Temel kavramlardan ba\u015flayarak, do\u011fru OpenWrt SDK ve toolchain kullan\u0131m\u0131n\u0131n \u00f6nemini vurgulad\u0131k, manuel k\u00fct\u00fcphane kopyalama hatalar\u0131ndan ka\u00e7\u0131nma gereklili\u011fini a\u00e7\u0131klad\u0131k ve karma\u015f\u0131k projeler i\u00e7in Buildroot kullan\u0131m\u0131n\u0131 \u00f6nerdik. Ayr\u0131ca, <code>file<\/code> komutu ile dosya analizi yapmaktan, <code>strace<\/code> ve <code>gdbserver<\/code> gibi ileri d\u00fczey hata ay\u0131klama ara\u00e7lar\u0131n\u0131 kullanmaya kadar \u00e7e\u015fitli te\u015fhis ve \u00e7\u00f6z\u00fcm y\u00f6ntemlerini payla\u015ft\u0131k. Unutmay\u0131n ki, g\u00f6m\u00fcl\u00fc sistemlerde geli\u015ftirme yaparken en iyi uygulama, her zaman hedef platformun kendi ara\u00e7lar\u0131n\u0131 ve ekosistemini (SDK, Buildroot, opkg) kullanmakt\u0131r. Bu yakla\u015f\u0131m, sadece mevcut hatalar\u0131 \u00e7\u00f6zmekle kalmaz, ayn\u0131 zamanda gelecekte benzer uyumsuzluklar\u0131n \u00f6n\u00fcne ge\u00e7erek geli\u015ftirme s\u00fcrecinizi daha verimli ve sorunsuz hale getirir.<\/p>\n<h3>S\u0131k\u00e7a Sorulan Sorular<\/h3>\n<dl>\n<dt><b>1. <code>libgcc_s.so.1<\/code> hatas\u0131 neden sadece OpenWrt'de s\u0131k g\u00f6r\u00fcl\u00fcr?<\/b><\/dt>\n<dd>Bu hata, \u00f6zellikle OpenWrt gibi g\u00f6m\u00fcl\u00fc Linux sistemlerinde s\u0131k g\u00f6r\u00fcl\u00fcr \u00e7\u00fcnk\u00fc bu cihazlar genellikle masa\u00fcst\u00fc bilgisayarlardan farkl\u0131 i\u015flemci mimarilerine (MIPS, ARM gibi) ve bit boyutlar\u0131na (32-bit veya 64-bit) sahiptir. Geli\u015ftiriciler, kendi masa\u00fcst\u00fc bilgisayarlar\u0131nda (genellikle x86_64) derledikleri uygulamalar\u0131 do\u011frudan OpenWrt cihazlar\u0131na kopyalad\u0131klar\u0131nda mimari uyumsuzluklar ortaya \u00e7\u0131kar. Masa\u00fcst\u00fc Linux da\u011f\u0131t\u0131mlar\u0131nda ise genellikle ayn\u0131 mimari \u00fczerinde derleme ve \u00e7al\u0131\u015ft\u0131rma yap\u0131ld\u0131\u011f\u0131 i\u00e7in bu t\u00fcr \"cross-compilation\" kaynakl\u0131 hatalar daha az ya\u015fan\u0131r.<\/dd>\n<dt><b>2. Kendi derledi\u011fim bir k\u00fct\u00fcphanede benzer bir hata al\u0131rsam ne yapmal\u0131y\u0131m?<\/b><\/dt>\n<dd>Kendi derledi\u011finiz bir k\u00fct\u00fcphanede benzer bir hata al\u0131yorsan\u0131z, \u00f6ncelikle o k\u00fct\u00fcphanenin OpenWrt cihaz\u0131n\u0131z\u0131n i\u015flemci mimarisine ve bit boyutuna (\u00f6rne\u011fin, 32-bit ARM veya 64-bit MIPS) uygun \u015fekilde derlendi\u011finden emin olun. Bunu OpenWrt SDK's\u0131n\u0131 veya Buildroot'u kullanarak yapmal\u0131s\u0131n\u0131z. K\u00fct\u00fcphanenizin kaynak kodunu SDK ortam\u0131nda derleyerek veya bir OpenWrt paketi olarak Buildroot'a ekleyerek, do\u011fru ELF s\u0131n\u0131f\u0131na ve ABI'ye sahip bir ikili dosya elde edebilirsiniz.<\/dd>\n<dt><b>3. Bu hata <code>ldd<\/code> \u00e7\u0131kt\u0131s\u0131nda neden g\u00f6r\u00fcnmeyebilir?<\/b><\/dt>\n<dd><code>ldd<\/code> komutu, bir uygulaman\u0131n ba\u011f\u0131ml\u0131 oldu\u011fu payla\u015f\u0131ml\u0131 k\u00fct\u00fcphaneleri ve bu k\u00fct\u00fcphanelerin hangi yollardan y\u00fcklendi\u011fini g\u00f6sterir. Ancak <code>ldd<\/code>, k\u00fct\u00fcphanelerin ELF s\u0131n\u0131f\u0131 uyumsuzluklar\u0131n\u0131 her zaman a\u00e7\u0131k\u00e7a belirtmeyebilir. <code>ldd<\/code> genellikle bir k\u00fct\u00fcphanenin var olup olmad\u0131\u011f\u0131n\u0131 ve \u00e7\u00f6z\u00fcmlenip \u00e7\u00f6z\u00fcmlenemeyece\u011fini kontrol eder. \"wrong ELF class\" hatas\u0131, k\u00fct\u00fcphane bulunsa bile y\u00fckleyicinin (dynamic linker) k\u00fct\u00fcphanenin ba\u015fl\u0131k bilgilerinin (ELF header) sistem mimarisiyle uyumsuz oldu\u011funu fark etmesiyle ortaya \u00e7\u0131kar. Bu y\u00fczden, <code>file<\/code> komutu ile k\u00fct\u00fcphanenin ve uygulaman\u0131n ELF \u00f6zelliklerini do\u011frudan kontrol etmek daha do\u011fru bir te\u015fhis sa\u011flar.<\/dd>\n<dt><b>4. OpenWrt s\u00fcr\u00fcm\u00fc bu hatay\u0131 etkiler mi?<\/b><\/dt>\n<dd>Evet, OpenWrt s\u00fcr\u00fcm\u00fc bu hatay\u0131 dolayl\u0131 olarak etkileyebilir. Her OpenWrt s\u00fcr\u00fcm\u00fc genellikle belirli bir toolchain (derleyici s\u00fcr\u00fcm\u00fc, libc s\u00fcr\u00fcm\u00fc vb.) setiyle gelir. Eski veya yeni bir OpenWrt s\u00fcr\u00fcm\u00fc i\u00e7in derlenmi\u015f bir k\u00fct\u00fcphane, ba\u015fka bir OpenWrt s\u00fcr\u00fcm\u00fcnde \u00e7al\u0131\u015ft\u0131r\u0131ld\u0131\u011f\u0131nda ABI uyumsuzluklar\u0131 ya\u015fayabilir. Bu nedenle, uygulaman\u0131z\u0131 veya k\u00fct\u00fcphanenizi derlerken her zaman hedef OpenWrt cihaz\u0131n\u0131zda kurulu olan s\u00fcr\u00fcmle e\u015fle\u015fen bir SDK kullanman\u0131z \u00f6nemlidir.<\/dd>\n<dt><b>5. <code>ELFCLASS32<\/code> yerine <code>ELFCLASS64<\/code> hatas\u0131 al\u0131rsam ne anlama gelir?<\/b><\/dt>\n<dd>E\u011fer <code>\"wrong ELF class: ELFCLASS64\"<\/code> hatas\u0131 al\u0131yorsan\u0131z, bu durum, 32-bit bir OpenWrt cihaz\u0131nda veya uygulaman\u0131n 32-bit bir k\u00fct\u00fcphane bekledi\u011fi bir senaryoda, yanl\u0131\u015fl\u0131kla 64-bit bir k\u00fct\u00fcphane (<code>ELFCLASS64<\/code>) kullanmaya \u00e7al\u0131\u015ft\u0131\u011f\u0131n\u0131z anlam\u0131na gelir. \u00c7\u00f6z\u00fcm yollar\u0131 benzerdir: hedef cihaz\u0131n\u0131z\u0131n mimarisiyle ve bit boyutuyla uyumlu 32-bit k\u00fct\u00fcphaneleri kulland\u0131\u011f\u0131n\u0131zdan emin olmal\u0131s\u0131n\u0131z, yani do\u011fru SDK veya Buildroot ayarlar\u0131n\u0131 kullanarak 32-bit hedefe y\u00f6nelik derleme yapmal\u0131s\u0131n\u0131z.<\/dd>\n<\/dl>\n<div class=\"mobile-optimization-tip\">\n<h3>Mobil Uyumlu HTML \u0130pu\u00e7lar\u0131<\/h3>\n<p>Web i\u00e7eri\u011finizin farkl\u0131 cihazlarda (masa\u00fcst\u00fc, tablet, mobil) d\u00fczg\u00fcn g\u00f6r\u00fcnmesini sa\u011flamak i\u00e7in mobil uyumlu HTML ve CSS kullanmak \u00f6nemlidir. \u0130\u015fte basit bir \u00f6rnek:<\/p>\n<pre><code>\n\/* styles.css *\/\n@media screen and (max-width: 768px) {\n  body {\n    font-size: 16px;\n  }\n  h2 {\n    font-size: 1.5em;\n  }\n  .container {\n    width: 95%;\n    padding: 10px;\n  }\n}\n    <\/pre>\n<p><\/code><\/p>\n<p>Bu CSS kodu, ekran geni\u015fli\u011fi 768 pikselin alt\u0131na d\u00fc\u015ft\u00fc\u011f\u00fcnde (tipik tablet ve mobil cihazlar i\u00e7in), yaz\u0131 tiplerini ve kapsay\u0131c\u0131 geni\u015fli\u011fini otomatik olarak ayarlar. HTML yap\u0131n\u0131z\u0131 da daha esnek (fluid layout) olacak \u015fekilde tasarlayarak mobil uyumlulu\u011fu art\u0131rabilirsiniz.<\/p>\n<\/div>\n<p><\/body><\/p>\n","protected":false},"excerpt":{"rendered":"OpenWrt tabanl\u0131 cihaz\u0131n\u0131zda bir uygulama \u00e7al\u0131\u015ft\u0131rmak isterken aniden &#8220;error while loading shared libraries: libgcc_s.so.1: wrong ELF class: ELFCLASS32&#8221;&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":[1],"tags":[],"class_list":{"0":"post-34661","1":"post","2":"type-post","3":"status-publish","4":"format-standard","6":"category-genel","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>OpenWrt libgcc_s.so.1 Hatas\u0131: ELF S\u0131n\u0131f\u0131 Sorunlar\u0131 ve \u00c7\u00f6z\u00fcmleri<\/title>\n<meta name=\"description\" content=\"OpenWrt tabanl\u0131 cihaz\u0131n\u0131zda bir uygulama \u00e7al\u0131\u015ft\u0131rmak isterken aniden &quot;error while loading shared libraries: libgcc_s.so.1: wrong ELF class: ELFCLASS32&quot; hatas\u0131yla kar\u015f\u0131la\u015ft\u0131n\u0131z m\u0131? Bu hata mesaj\u0131, \u00f6zellikle g\u00f6m\u00fcl\u00fc sistemler ve cross-compilation d\u00fcnyas\u0131na yeni ad\u0131m atanlar i\u00e7in olduk\u00e7a kafa kar\u0131\u015ft\u0131r\u0131c\u0131 olabilir. Ne yapaca\u011f\u0131n\u0131z\u0131 bilmedi\u011finizde, bu t\u00fcr bir uyumsuzluk sadece projenizi yava\u015flatmakla kalmaz, ayn\u0131 zamanda ciddi bir moral bozuklu\u011funa da yol a\u00e7abilir. Ancak endi\u015felenmeyin, bu makale size bu sorunun k\u00f6kenlerini anlaman\u0131z ve kal\u0131c\u0131 \u00e7\u00f6z\u00fcmler bulman\u0131z i\u00e7in ad\u0131m ad\u0131m rehberlik edecek.\" \/>\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\/openwrt-libgcc_s-so-1-hatasi-elf-sinifi-sorunlari-ve-cozumleri\/\" \/>\n<meta property=\"og:locale\" content=\"tr_TR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"OpenWrt libgcc_s.so.1 Hatas\u0131: ELF S\u0131n\u0131f\u0131 Sorunlar\u0131 ve \u00c7\u00f6z\u00fcmleri\" \/>\n<meta property=\"og:description\" content=\"OpenWrt tabanl\u0131 cihaz\u0131n\u0131zda bir uygulama \u00e7al\u0131\u015ft\u0131rmak isterken aniden &quot;error while loading shared libraries: libgcc_s.so.1: wrong ELF class: ELFCLASS32&quot; hatas\u0131yla kar\u015f\u0131la\u015ft\u0131n\u0131z m\u0131? Bu hata mesaj\u0131, \u00f6zellikle g\u00f6m\u00fcl\u00fc sistemler ve cross-compilation d\u00fcnyas\u0131na yeni ad\u0131m atanlar i\u00e7in olduk\u00e7a kafa kar\u0131\u015ft\u0131r\u0131c\u0131 olabilir. Ne yapaca\u011f\u0131n\u0131z\u0131 bilmedi\u011finizde, bu t\u00fcr bir uyumsuzluk sadece projenizi yava\u015flatmakla kalmaz, ayn\u0131 zamanda ciddi bir moral bozuklu\u011funa da yol a\u00e7abilir. Ancak endi\u015felenmeyin, bu makale size bu sorunun k\u00f6kenlerini anlaman\u0131z ve kal\u0131c\u0131 \u00e7\u00f6z\u00fcmler bulman\u0131z i\u00e7in ad\u0131m ad\u0131m rehberlik edecek.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/fatihsoysal.com\/blog\/openwrt-libgcc_s-so-1-hatasi-elf-sinifi-sorunlari-ve-cozumleri\/\" \/>\n<meta property=\"og:site_name\" content=\"Kodlar\u0131n Gizemli D\u00fcnyas\u0131\" \/>\n<meta property=\"article:published_time\" content=\"2025-11-20T07:01:06+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/via.placeholder.com\/600x300?text=OpenWrt+Cross-Compilation+Flow\" \/>\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=\"24 dakika\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/openwrt-libgcc_s-so-1-hatasi-elf-sinifi-sorunlari-ve-cozumleri\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/openwrt-libgcc_s-so-1-hatasi-elf-sinifi-sorunlari-ve-cozumleri\/\"},\"author\":{\"name\":\"Fatih Soysal\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"headline\":\"OpenWrt libgcc_s.so.1 Hatas\u0131: ELF S\u0131n\u0131f\u0131 Sorunlar\u0131 ve \u00c7\u00f6z\u00fcmleri\",\"datePublished\":\"2025-11-20T07:01:06+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/openwrt-libgcc_s-so-1-hatasi-elf-sinifi-sorunlari-ve-cozumleri\/\"},\"wordCount\":4286,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"image\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/openwrt-libgcc_s-so-1-hatasi-elf-sinifi-sorunlari-ve-cozumleri\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/via.placeholder.com\/600x300?text=OpenWrt+Cross-Compilation+Flow\",\"inLanguage\":\"tr\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/fatihsoysal.com\/blog\/openwrt-libgcc_s-so-1-hatasi-elf-sinifi-sorunlari-ve-cozumleri\/#respond\"]}],\"copyrightYear\":\"2025\",\"copyrightHolder\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/openwrt-libgcc_s-so-1-hatasi-elf-sinifi-sorunlari-ve-cozumleri\/\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/openwrt-libgcc_s-so-1-hatasi-elf-sinifi-sorunlari-ve-cozumleri\/\",\"name\":\"OpenWrt libgcc_s.so.1 Hatas\u0131: ELF S\u0131n\u0131f\u0131 Sorunlar\u0131 ve \u00c7\u00f6z\u00fcmleri\",\"isPartOf\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/openwrt-libgcc_s-so-1-hatasi-elf-sinifi-sorunlari-ve-cozumleri\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/openwrt-libgcc_s-so-1-hatasi-elf-sinifi-sorunlari-ve-cozumleri\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/via.placeholder.com\/600x300?text=OpenWrt+Cross-Compilation+Flow\",\"datePublished\":\"2025-11-20T07:01:06+00:00\",\"description\":\"OpenWrt tabanl\u0131 cihaz\u0131n\u0131zda bir uygulama \u00e7al\u0131\u015ft\u0131rmak isterken aniden \\\"error while loading shared libraries: libgcc_s.so.1: wrong ELF class: ELFCLASS32\\\" hatas\u0131yla kar\u015f\u0131la\u015ft\u0131n\u0131z m\u0131? Bu hata mesaj\u0131, \u00f6zellikle g\u00f6m\u00fcl\u00fc sistemler ve cross-compilation d\u00fcnyas\u0131na yeni ad\u0131m atanlar i\u00e7in olduk\u00e7a kafa kar\u0131\u015ft\u0131r\u0131c\u0131 olabilir. Ne yapaca\u011f\u0131n\u0131z\u0131 bilmedi\u011finizde, bu t\u00fcr bir uyumsuzluk sadece projenizi yava\u015flatmakla kalmaz, ayn\u0131 zamanda ciddi bir moral bozuklu\u011funa da yol a\u00e7abilir. Ancak endi\u015felenmeyin, bu makale size bu sorunun k\u00f6kenlerini anlaman\u0131z ve kal\u0131c\u0131 \u00e7\u00f6z\u00fcmler bulman\u0131z i\u00e7in ad\u0131m ad\u0131m rehberlik edecek.\",\"breadcrumb\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/openwrt-libgcc_s-so-1-hatasi-elf-sinifi-sorunlari-ve-cozumleri\/#breadcrumb\"},\"inLanguage\":\"tr\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/fatihsoysal.com\/blog\/openwrt-libgcc_s-so-1-hatasi-elf-sinifi-sorunlari-ve-cozumleri\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"tr\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/openwrt-libgcc_s-so-1-hatasi-elf-sinifi-sorunlari-ve-cozumleri\/#primaryimage\",\"url\":\"https:\/\/via.placeholder.com\/600x300?text=OpenWrt+Cross-Compilation+Flow\",\"contentUrl\":\"https:\/\/via.placeholder.com\/600x300?text=OpenWrt+Cross-Compilation+Flow\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/openwrt-libgcc_s-so-1-hatasi-elf-sinifi-sorunlari-ve-cozumleri\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Anasayfa\",\"item\":\"https:\/\/fatihsoysal.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"OpenWrt libgcc_s.so.1 Hatas\u0131: ELF S\u0131n\u0131f\u0131 Sorunlar\u0131 ve \u00c7\u00f6z\u00fcmleri\"}]},{\"@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":"OpenWrt libgcc_s.so.1 Hatas\u0131: ELF S\u0131n\u0131f\u0131 Sorunlar\u0131 ve \u00c7\u00f6z\u00fcmleri","description":"OpenWrt tabanl\u0131 cihaz\u0131n\u0131zda bir uygulama \u00e7al\u0131\u015ft\u0131rmak isterken aniden \"error while loading shared libraries: libgcc_s.so.1: wrong ELF class: ELFCLASS32\" hatas\u0131yla kar\u015f\u0131la\u015ft\u0131n\u0131z m\u0131? Bu hata mesaj\u0131, \u00f6zellikle g\u00f6m\u00fcl\u00fc sistemler ve cross-compilation d\u00fcnyas\u0131na yeni ad\u0131m atanlar i\u00e7in olduk\u00e7a kafa kar\u0131\u015ft\u0131r\u0131c\u0131 olabilir. Ne yapaca\u011f\u0131n\u0131z\u0131 bilmedi\u011finizde, bu t\u00fcr bir uyumsuzluk sadece projenizi yava\u015flatmakla kalmaz, ayn\u0131 zamanda ciddi bir moral bozuklu\u011funa da yol a\u00e7abilir. Ancak endi\u015felenmeyin, bu makale size bu sorunun k\u00f6kenlerini anlaman\u0131z ve kal\u0131c\u0131 \u00e7\u00f6z\u00fcmler bulman\u0131z i\u00e7in ad\u0131m ad\u0131m rehberlik edecek.","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\/openwrt-libgcc_s-so-1-hatasi-elf-sinifi-sorunlari-ve-cozumleri\/","og_locale":"tr_TR","og_type":"article","og_title":"OpenWrt libgcc_s.so.1 Hatas\u0131: ELF S\u0131n\u0131f\u0131 Sorunlar\u0131 ve \u00c7\u00f6z\u00fcmleri","og_description":"OpenWrt tabanl\u0131 cihaz\u0131n\u0131zda bir uygulama \u00e7al\u0131\u015ft\u0131rmak isterken aniden \"error while loading shared libraries: libgcc_s.so.1: wrong ELF class: ELFCLASS32\" hatas\u0131yla kar\u015f\u0131la\u015ft\u0131n\u0131z m\u0131? Bu hata mesaj\u0131, \u00f6zellikle g\u00f6m\u00fcl\u00fc sistemler ve cross-compilation d\u00fcnyas\u0131na yeni ad\u0131m atanlar i\u00e7in olduk\u00e7a kafa kar\u0131\u015ft\u0131r\u0131c\u0131 olabilir. Ne yapaca\u011f\u0131n\u0131z\u0131 bilmedi\u011finizde, bu t\u00fcr bir uyumsuzluk sadece projenizi yava\u015flatmakla kalmaz, ayn\u0131 zamanda ciddi bir moral bozuklu\u011funa da yol a\u00e7abilir. Ancak endi\u015felenmeyin, bu makale size bu sorunun k\u00f6kenlerini anlaman\u0131z ve kal\u0131c\u0131 \u00e7\u00f6z\u00fcmler bulman\u0131z i\u00e7in ad\u0131m ad\u0131m rehberlik edecek.","og_url":"https:\/\/fatihsoysal.com\/blog\/openwrt-libgcc_s-so-1-hatasi-elf-sinifi-sorunlari-ve-cozumleri\/","og_site_name":"Kodlar\u0131n Gizemli D\u00fcnyas\u0131","article_published_time":"2025-11-20T07:01:06+00:00","og_image":[{"url":"https:\/\/via.placeholder.com\/600x300?text=OpenWrt+Cross-Compilation+Flow","type":"","width":"","height":""}],"author":"Fatih Soysal","twitter_card":"summary_large_image","twitter_misc":{"Yazan:":"Fatih Soysal","Tahmini okuma s\u00fcresi":"24 dakika"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/fatihsoysal.com\/blog\/openwrt-libgcc_s-so-1-hatasi-elf-sinifi-sorunlari-ve-cozumleri\/#article","isPartOf":{"@id":"https:\/\/fatihsoysal.com\/blog\/openwrt-libgcc_s-so-1-hatasi-elf-sinifi-sorunlari-ve-cozumleri\/"},"author":{"name":"Fatih Soysal","@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"headline":"OpenWrt libgcc_s.so.1 Hatas\u0131: ELF S\u0131n\u0131f\u0131 Sorunlar\u0131 ve \u00c7\u00f6z\u00fcmleri","datePublished":"2025-11-20T07:01:06+00:00","mainEntityOfPage":{"@id":"https:\/\/fatihsoysal.com\/blog\/openwrt-libgcc_s-so-1-hatasi-elf-sinifi-sorunlari-ve-cozumleri\/"},"wordCount":4286,"commentCount":0,"publisher":{"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"image":{"@id":"https:\/\/fatihsoysal.com\/blog\/openwrt-libgcc_s-so-1-hatasi-elf-sinifi-sorunlari-ve-cozumleri\/#primaryimage"},"thumbnailUrl":"https:\/\/via.placeholder.com\/600x300?text=OpenWrt+Cross-Compilation+Flow","inLanguage":"tr","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/fatihsoysal.com\/blog\/openwrt-libgcc_s-so-1-hatasi-elf-sinifi-sorunlari-ve-cozumleri\/#respond"]}],"copyrightYear":"2025","copyrightHolder":{"@id":"https:\/\/fatihsoysal.com\/blog\/#organization"}},{"@type":"WebPage","@id":"https:\/\/fatihsoysal.com\/blog\/openwrt-libgcc_s-so-1-hatasi-elf-sinifi-sorunlari-ve-cozumleri\/","url":"https:\/\/fatihsoysal.com\/blog\/openwrt-libgcc_s-so-1-hatasi-elf-sinifi-sorunlari-ve-cozumleri\/","name":"OpenWrt libgcc_s.so.1 Hatas\u0131: ELF S\u0131n\u0131f\u0131 Sorunlar\u0131 ve \u00c7\u00f6z\u00fcmleri","isPartOf":{"@id":"https:\/\/fatihsoysal.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/fatihsoysal.com\/blog\/openwrt-libgcc_s-so-1-hatasi-elf-sinifi-sorunlari-ve-cozumleri\/#primaryimage"},"image":{"@id":"https:\/\/fatihsoysal.com\/blog\/openwrt-libgcc_s-so-1-hatasi-elf-sinifi-sorunlari-ve-cozumleri\/#primaryimage"},"thumbnailUrl":"https:\/\/via.placeholder.com\/600x300?text=OpenWrt+Cross-Compilation+Flow","datePublished":"2025-11-20T07:01:06+00:00","description":"OpenWrt tabanl\u0131 cihaz\u0131n\u0131zda bir uygulama \u00e7al\u0131\u015ft\u0131rmak isterken aniden \"error while loading shared libraries: libgcc_s.so.1: wrong ELF class: ELFCLASS32\" hatas\u0131yla kar\u015f\u0131la\u015ft\u0131n\u0131z m\u0131? Bu hata mesaj\u0131, \u00f6zellikle g\u00f6m\u00fcl\u00fc sistemler ve cross-compilation d\u00fcnyas\u0131na yeni ad\u0131m atanlar i\u00e7in olduk\u00e7a kafa kar\u0131\u015ft\u0131r\u0131c\u0131 olabilir. Ne yapaca\u011f\u0131n\u0131z\u0131 bilmedi\u011finizde, bu t\u00fcr bir uyumsuzluk sadece projenizi yava\u015flatmakla kalmaz, ayn\u0131 zamanda ciddi bir moral bozuklu\u011funa da yol a\u00e7abilir. Ancak endi\u015felenmeyin, bu makale size bu sorunun k\u00f6kenlerini anlaman\u0131z ve kal\u0131c\u0131 \u00e7\u00f6z\u00fcmler bulman\u0131z i\u00e7in ad\u0131m ad\u0131m rehberlik edecek.","breadcrumb":{"@id":"https:\/\/fatihsoysal.com\/blog\/openwrt-libgcc_s-so-1-hatasi-elf-sinifi-sorunlari-ve-cozumleri\/#breadcrumb"},"inLanguage":"tr","potentialAction":[{"@type":"ReadAction","target":["https:\/\/fatihsoysal.com\/blog\/openwrt-libgcc_s-so-1-hatasi-elf-sinifi-sorunlari-ve-cozumleri\/"]}]},{"@type":"ImageObject","inLanguage":"tr","@id":"https:\/\/fatihsoysal.com\/blog\/openwrt-libgcc_s-so-1-hatasi-elf-sinifi-sorunlari-ve-cozumleri\/#primaryimage","url":"https:\/\/via.placeholder.com\/600x300?text=OpenWrt+Cross-Compilation+Flow","contentUrl":"https:\/\/via.placeholder.com\/600x300?text=OpenWrt+Cross-Compilation+Flow"},{"@type":"BreadcrumbList","@id":"https:\/\/fatihsoysal.com\/blog\/openwrt-libgcc_s-so-1-hatasi-elf-sinifi-sorunlari-ve-cozumleri\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Anasayfa","item":"https:\/\/fatihsoysal.com\/blog\/"},{"@type":"ListItem","position":2,"name":"OpenWrt libgcc_s.so.1 Hatas\u0131: ELF S\u0131n\u0131f\u0131 Sorunlar\u0131 ve \u00c7\u00f6z\u00fcmleri"}]},{"@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\/34661","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=34661"}],"version-history":[{"count":0,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts\/34661\/revisions"}],"wp:attachment":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/media?parent=34661"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/categories?post=34661"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/tags?post=34661"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}