Çözüldü Linux Mint g++ iOStream kütüphanesini bulamıyor

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

nolonger

Hectopat
Katılım
27 Şubat 2021
Mesajlar
153
Merhabalar yazdığım C++ kodunda iOStream kütüphanesini dahil ediyorum fakat dosyası bulamıyor daha önce compiler ile uğraşmıştım bozmuştum ama sonra bir şekil tekrar düzeltmiştim.compileri silip tekrar yükle yaptım fakat bir şey değişmedi. Şimdiden yardımlarınız için teşekkürler.

[CODE lang="cpp" title="Shell"]g++ -m32 -fno-use-cxa-atexit -nostdlib -fno-builtin -fno-rtti -fno-exceptions -fno-leading-underscore -o kernel.o -c kernel.cpp
kernel.cpp:5:10: fatal error: iostream: No such file or directory
#include <iostream>
^~~~~~~~~~
compilation terminated[/CODE]
 
Çözüm
Milyon tane açık kaynaklı projelere baktım stackoverflow dan araştırdım google abime sordum ama hala bulamadım...
Önceden söylemiştim hiçbir bilgim yok diye output ihtiyacım yok onun için print fonksiyonum var ve çalışıyor sadece input almam lazım şu interrupt kütüphanesini örnek olsun diyemi yaptın yoksa öyle bir kütüphane var mı?
@TerabyteForever avr/interrupt diye bir dosya var onu kullanarak yapabilir miyim?
Bu işe girdiysen kütüphane diye bir şeyin varlığını unutacaksın. Kütüphane diye bir şey yok. Sadece örnek olarak onu oraya koydum. Pseudocode diye belirtmiştim.

Şu işletim sistemine bakabilirsin, klavye sürücüsünü düzeltmiştim ve çalışır hale getirmiştim: GitHub - TerabyteForever/JupiteerOS-Reupload: Experimental Operating System (by @furkanonder)

Bu işletim sisteminde de bu iş inb ve outb Assembly komutlarıyla yapılıyor. Hani x86 port-mapped I/O ya...

E sen de C++ kullandığını belirtmişsin ve kafamdan öyle bir pseudocode yazayım dedim. Temelinde interrupt dinlemekte olay.
Kullanmıyorum. Ayrıca bu konularda pek bir bilgim yok.

[CODE lang="c" title="C kodu"]#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <ctype.h>

#define MAX_WORD 16
#define MAX_LENGTH 32

typedef struct _Argumans
{
char **argv;
int argc;
}Argumans;

int iskey(unsigned char ch)
{
return (ch > 32 && ch != 127) ? 1 : 0;
}

char *find_double_quotes(char *str)
{
for(; *str != '\0'; str++)
{
if(*str == '\"')
{
return str;
}
}
return 0;
}

char *find_word(char *str)
{
for(; (iskey(*str) == 0); str++)
;
return str;
}

char **seperate_words(char *str, Argumans *arg)
{
static char **dizi;
char *temp, *tmp, *cift_tirnak_konumu;
int index = 0, toplam = 0, argc = 0, mindex = 0, cift_tirnak = 0;
dizi = (char **)calloc(MAX_WORD, sizeof(char*));
for(index = 0; index < MAX_WORD; index++)
{
dizi[index] = (char*)calloc(MAX_LENGTH, sizeof(char));
}
cift_tirnak = ((cift_tirnak_konumu=find_double_quotes(str)) == 0) ? 0 : 1;
for(index = 0, mindex = 0; str[index] != '\0'; mindex++)
{
temp = dizi[mindex];
str = find_word((str+index));
if(*str == '"')
{
for(index = 0; str[index+1] != '"'; index++)
{
temp[index] = str[index+1];
}
index+=2;
}
else
{
for(index = 0; (iskey(str[index]) != 0); index++)
{
temp[index] = str[index];
}
}
}
dizi[mindex] = '\0';
arg->argc = mindex;
arg->argv = dizi;
return dizi;
}

int main(void)
{
Argumans arg;
char str[50];
int index = 0;
printf("Bir metin giriniz: ");
gets(str);
seperate_words(str, &arg);
printf("Arguman sayisi: %d\n", arg.argc);
for(index = 0; arg.argv[index] != '\0'; index++)
{
printf("%d. eleman: %s\n", index+1, arg.argv[index]);
}
return 0;
}
[/CODE]

Şuna benzer bir kod var argümanlara ayırmayı sağlıyor. Kendi projene göre uyarlayabilirsin.
Bu header'ların ve fonksiyonların kernel'de varolduğunu sanmıyorum. Ayrıca free() kullanılmamış heap işlemi yapılmasına rağmen, bu da memory leak'lere yol açar. Kernel seviyesinde memory leak'ler çok büyük güvenlik açıklarıdır.

Arkadaşlar, bu işe bir şeyi tamamen bilmeden girişmeyin. Ben hala daha kendi kernel'imi yazacak kadar olgunlaştığımı zannetmiyorum eğer beni rol model olarak alıyorsanız.
IRQ1 den gelen veri hangi porttan gelmiş oluyor?
Interrupt hattı 1'den kesinti bilgisi geliyor. Klavyenin durum bilgisi 0x60 portu üzerinden, keycode bilgisi de 0x64 portu üzerinden geliyor.
 
Kullanmıyorum. Ayrıca bu konularda pek bir bilgim yok.

[CODE lang="c" title="C kodu"]#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <ctype.h>

#define MAX_WORD 16
#define MAX_LENGTH 32

typedef struct _Argumans
{
char **argv;
int argc;
}Argumans;

int iskey(unsigned char ch)
{
return (ch > 32 && ch != 127) ? 1 : 0;
}

char *find_double_quotes(char *str)
{
for(; *str != '\0'; str++)
{
if(*str == '\"')
{
return str;
}
}
return 0;
}

char *find_word(char *str)
{
for(; (iskey(*str) == 0); str++)
;
return str;
}

char **seperate_words(char *str, Argumans *arg)
{
static char **dizi;
char *temp, *tmp, *cift_tirnak_konumu;
int index = 0, toplam = 0, argc = 0, mindex = 0, cift_tirnak = 0;
dizi = (char **)calloc(MAX_WORD, sizeof(char*));
for(index = 0; index < MAX_WORD; index++)
{
dizi[index] = (char*)calloc(MAX_LENGTH, sizeof(char));
}
cift_tirnak = ((cift_tirnak_konumu=find_double_quotes(str)) == 0) ? 0 : 1;
for(index = 0, mindex = 0; str[index] != '\0'; mindex++)
{
temp = dizi[mindex];
str = find_word((str+index));
if(*str == '"')
{
for(index = 0; str[index+1] != '"'; index++)
{
temp[index] = str[index+1];
}
index+=2;
}
else
{
for(index = 0; (iskey(str[index]) != 0); index++)
{
temp[index] = str[index];
}
}
}
dizi[mindex] = '\0';
arg->argc = mindex;
arg->argv = dizi;
return dizi;
}

int main(void)
{
Argumans arg;
char str[50];
int index = 0;
printf("Bir metin giriniz: ");
gets(str);
seperate_words(str, &arg);
printf("Arguman sayisi: %d\n", arg.argc);
for(index = 0; arg.argv[index] != '\0'; index++)
{
printf("%d. eleman: %s\n", index+1, arg.argv[index]);
}
return 0;
}
[/CODE]

Şuna benzer bir kod var argümanlara ayırmayı sağlıyor. Kendi projene göre uyarlayabilirsin.
bu kodu kendin mi yazdın yoksa bir yerden mi aldın?
 
Merhabalar yazdığım C++ kodunda iOStream kütüphanesini dahil ediyorum fakat dosyası bulamıyor daha önce compiler ile uğraşmıştım bozmuştum ama sonra bir şekil tekrar düzeltmiştim.compileri silip tekrar yükle yaptım fakat bir şey değişmedi. Şimdiden yardımlarınız için teşekkürler.

[CODE lang="cpp" title="Shell"]g++ -m32 -fno-use-cxa-atexit -nostdlib -fno-builtin -fno-rtti -fno-exceptions -fno-leading-underscore -o kernel.o -c kernel.cpp
kernel.cpp:5:10: fatal error: iostream: No such file or directory
#include <iostream>
^~~~~~~~~~
compilation terminated[/CODE]
-nostdlib parametresiyle standant kütüphanelere bakmasını engellemişsin, bu yüzden bu hatayı veriyor olabilir.
 
Uyarı! Bu konu 5 yıl önce açıldı.
Muhtemelen daha fazla tartışma gerekli değildir ki bu durumda yeni bir konu başlatmayı öneririz. Eğer yine de cevabınızın gerekli olduğunu düşünüyorsanız buna rağmen cevap verebilirsiniz.

Technopat Haberler

Yeni konular

Geri
Yukarı