Что такое ffreestanding
в gcc? Для чего его используют ? Я натолкнулся на следующее:Что такое ffreestanding в gcc?
gcc -ffreestanding -m32 -c kernel.c -o kernel.o
и не понимаю, что это значит.
Что такое ffreestanding
в gcc? Для чего его используют ? Я натолкнулся на следующее:Что такое ffreestanding в gcc?
gcc -ffreestanding -m32 -c kernel.c -o kernel.o
и не понимаю, что это значит.
A freestanding
Окружающая среда - это среда, в которой стандартная библиотека может отсутствовать, и запуск программы может не обязательно быть «основным». Опция -ffreestanding
направляет компилятор в , а не, предположим, что стандартные функции имеют свое обычное определение.
По умолчанию GCC будет выступать в качестве компилятора для размещенной реализации, определяя __STDC_HOSTED__
как 1 и предполагая, что, когда используются имена функций ISO C, они имеют семантику, определенную в стандарте. Чтобы сделать его действующим в качестве самостоятельной самостоятельной реализации для автономной среды, используйте опцию -ffreestanding
. Затем он определит __STDC_HOSTED__
на 0 и не будет делать предположений о значениях имен функций из стандартной библиотеки.
Для получения дополнительной информации ссылка This может помочь.
, пожалуйста, уточните – saplingPro
@saplingPro. Посмотрите на отредактированный ответ. –
@Dayalrai Я использовал опцию '-ffreestanding' с' arm-non-eabi-gcc': 'arm-non-eabi-gcc -g -O0 -ffreestanding ......', но я до сих пор получаю главный символ вызывая 'nm' команду' U main', которая генерирует мне ошибку отладки с 'gdb':' Function 'main "not defined'. как я могу избежать генерации этого 'main'ymbol –
Связанный: http://stackoverflow.com/questions/2681304/compile-for-freestanding-environment-with-gcc –