Co to jest ffreestanding
w gcc? Do czego jest to używane ? Natknąłem się na następujące:Co to jest opcja ffestestanding w gcc?
gcc -ffreestanding -m32 -c kernel.c -o kernel.o
i nie rozumiem, co to znaczy dokładnie.
Co to jest ffreestanding
w gcc? Do czego jest to używane ? Natknąłem się na następujące:Co to jest opcja ffestestanding w gcc?
gcc -ffreestanding -m32 -c kernel.c -o kernel.o
i nie rozumiem, co to znaczy dokładnie.
A środowisko to takie, w którym standardowa biblioteka może nie istnieć, a uruchomienie programu niekoniecznie musi być w "głównym". Opcja -ffreestanding
kieruje kompilator na , a nie, zakładając, że standardowe funkcje mają swoją zwykłą definicję.
Domyślnie GCC będzie działał jako kompilator dla hostowanej implementacji, definiując __STDC_HOSTED__
jako 1 i zakładając, że gdy używane są nazwy funkcji ISO C, mają semantykę zdefiniowaną w standardzie. Aby działał jako zgodna wolnostojąca implementacja dla wolnostojącego środowiska, użyj opcji -ffreestanding
. Następnie zdefiniuje __STDC_HOSTED__
na 0 i nie będzie przyjmować założeń dotyczących znaczeń nazw funkcji z biblioteki standardowej.
Aby uzyskać więcej informacji, może pomóc link This.
proszę opracować – saplingPro
@saplingPro Proszę spojrzeć na edytowaną odpowiedź. –
@Dayalrai Użyłem opcji '-ffreestanding' z' arm-non-eabi-gcc': 'arm-non-eabi-gcc -g -O0 -ffreestanding ......', ale nadal otrzymuję główny symbol przez wywołanie polecenia 'nm'' U main', które generuje mi błąd debugowania z 'gdb':' Function "main" not defined'. jak mogę uniknąć generowania tego 'main'symbol –
Powiązane: http://stackoverflow.com/questions/2681304/compile-for-festestanding-environment-with-gcc –