Çözüldü Header dosyaları nasıl koda ekleniyor?

Bu konu çözüldü olarak işaretlenmiştir. Çözülmediğini düşünüyorsanız konuyu rapor edebilirsiniz.

TerabyteForever

Megapat
Katılım
5 Mart 2017
Mesajlar
6.710
Makaleler
7
Çözümler
59
Daha fazla  
Cinsiyet
Erkek
Merhabalar, selamlar.


Öncelikle bu kod bir işletim sistemi kodu. Ve bu kod cross compiler ile derleniyor.

Visual Studio Code, bu header dosyalarının bulunamadığını iddia ederken, cross compiler, hiç bir şekilde hata vermiyor.

Kod bu repo'ya ait olan "kernel_main.c" dosyası.

headers.png


Gördüğünüz gibi, VS Code, altına kırmızı çizgi atıyor, fakat Makefile'ı kullanarak derleme yapınca bir sıkıntı yok. Cross compiler uyarı da vermiyor.


Cross compiler olduğu için mi bir sıkıntı yapmıyor sizce?


Teşekkürler.

Edit: Başlık çok yanlış yerlere gitmiş düzenlenince. :D Sormak istediğim soru kısacası şöyle; bu header dosyalarının hangi klasörde olduğu vs. belirtilmemiş ve "include edilince" VS Code bulamıyor ama cross compiler sesini çıkartmıyor ve sistem olması gerektiği gibi çalışıyor.
 
Son düzenleme:
Çözüm
Compiler'a farkli bir directory'i dahil etmek icin parametre girmemissen kullandigin derleyiciye bagli olarak dahili library'de arar. Cogu dilde STL olarak gecer (Standary Library).

Bu kisi include path'ini dahil etmis, VSCode ise bunu STL icerisinde ariyor, sorun yok VSCode ile alakali, Gedit'te hicbir sey yazmiyor :d

EXT filesystem'i kullaniyorsaniz, ST Library headerlari suradadir (Genellikle):
/usr/include

Library file'lar ise:
/usr/lib icerisinde olur genelde.
OS gelistirirken asla diger isletim sistemleriyle gelen library'ler kullanilmamali, genelde kendileri yazmalilar. Zor mu degil, bircok projede de ozellestirilen library'ler kullaniliyor.

Direk olarak C'nin core'unu kullanmis.

LibC (Kendisi kucuk bir sekilde yapmis zaten) jupiteer/JupiteerOS
Tahmin ediyorum, VS kütüphaneyi elle ekliyorsun diye " " içerisinde girmeni bekliyor olabilir. Opengl'i elle eklerken öyle bir şey yapmıştım diye hatırlıyorum.
Çok teşekkürler hocam. Peki cross compiler nasıl buluyor? Neye göre arıyor? Belirli bir proje klasörü mü atanabiliyor parametre olarak? Ayrıca makefile'da böyle bir satır var, sizce sorumun cevabı bu mu?

Makefile:
# -nostdinc: Do not search the standard system directories for header files.
 
Compiler'a farkli bir directory'i dahil etmek icin parametre girmemissen kullandigin derleyiciye bagli olarak dahili library'de arar. Cogu dilde STL olarak gecer (Standary Library).

Bu kisi include path'ini dahil etmis, VSCode ise bunu STL icerisinde ariyor, sorun yok VSCode ile alakali, Gedit'te hicbir sey yazmiyor :d

EXT filesystem'i kullaniyorsaniz, ST Library headerlari suradadir (Genellikle):
/usr/include

Library file'lar ise:
/usr/lib icerisinde olur genelde.
OS gelistirirken asla diger isletim sistemleriyle gelen library'ler kullanilmamali, genelde kendileri yazmalilar. Zor mu degil, bircok projede de ozellestirilen library'ler kullaniliyor.

Direk olarak C'nin core'unu kullanmis.

LibC (Kendisi kucuk bir sekilde yapmis zaten) jupiteer/JupiteerOS
 
Çözüm
Visual Studio standart kütüphanede bulunan header dosyalarını bir yerde tutuyor. Oradan alıyor. Seninki orada olmadığı için hata veriyor. Tırnak içinde eklemek ya da direkt eklemek istediğin header dosyasının tam adresini yazmak (C:\Users... şeklinde) işe yarayabilir. Projenin konumuna koymak da işe yarar muhtemelen. Kendi oluşturduğum header dosyaları oraya konuluyor çünkü.

Visual Studio üzerinden bir yerlere tıklayarak şu tip bilgilere ulaşabiliyorsun. Benim bilgisayarımda iostream kütüphanesi C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.26.28801\include konumunda bulunuyor. Standart hütüphanedeki şeylerin hepsi burada.
 
Visual Studio standart kütüphanede bulunan header dosyalarını bir yerde tutuyor. Oradan alıyor. Seninki orada olmadığı için hata veriyor. Tırnak içinde eklemek ya da direkt eklemek istediğin header dosyasının tam adresini yazmak (C:\Users... şeklinde) işe yarayabilir. Projenin konumuna koymak da işe yarar muhtemelen. Kendi oluşturduğum header dosyaları oraya konuluyor çünkü.

Visual Studio üzerinden bir yerlere tıklayarak şu tip bilgilere ulaşabiliyorsun. Benim bilgisayarımda iostream kütüphanesi C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.26.28801\include konumunda bulunuyor. Standart hütüphanedeki şeylerin hepsi burada.
VisualC++ kullanmaya gerek duymuyorum, Cross-Platform compiler'lar varken VC++'a gerek yok, zaten Windows da kullanmiyorum, GitHub birazcik. :)
 
Compiler'a farkli bir directory'i dahil etmek icin parametre girmemissen kullandigin derleyiciye bagli olarak dahili library'de arar. Cogu dilde STL olarak gecer (Standary Library).

Bu kisi include path'ini dahil etmis, VSCode ise bunu STL icerisinde ariyor, sorun yok VSCode ile alakali, Gedit'te hicbir sey yazmiyor :d

EXT filesystem'i kullaniyorsaniz, ST Library headerlari suradadir (Genellikle):
/usr/include

Library file'lar ise:
/usr/lib icerisinde olur genelde.
OS gelistirirken asla diger isletim sistemleriyle gelen library'ler kullanilmamali, genelde kendileri yazmalilar. Zor mu degil, bircok projede de ozellestirilen library'ler kullaniliyor.

Direk olarak C'nin core'unu kullanmis.

LibC (Kendisi kucuk bir sekilde yapmis zaten) jupiteer/JupiteerOS
Çok teşekkür ederim. Aradığım cevap buydu.

Diğer arkadaşlara da çok teşekkür ederim cevapladıkları için.
 

Yeni konular

Geri
Yukarı