Как мне написать код для параметров -nostartfiles или -nostdlib для gcc? - PullRequest
0 голосов
/ 06 июня 2018

Я встречал опции -nostartfiles и -nostdlib в опциях компиляции gcc.Я, однако, не понимаю, как можно написать код для вышеуказанных опций.Вам нужно написать каждую функцию запуска (например, _start, __libc_csu_init и т. Д.)?

Могу ли я получить упрощенный код для обеих этих опций, чтобы понять, как она работает?

Edit :

Также я только что обнаружил, что использование static вместе с nostartfiles приводит к segmentation fault.Простой код c для воспроизведения того же:

#include<stdio.h>
#include<stdlib.h>
void _start()
{
    int x = main();
    exit(x);
}

int main()
{
    printf("Hello world!\n");
    return 0;
}

Скомпилировано с использованием:

gcc -nostartfiles -static -o foo foo.c

Выходные данные для вышеуказанного кода - segmentation fault.Это ожидаемый результат?

1 Ответ

0 голосов
/ 06 июня 2018

Да, это ожидаемое поведение.Если вы хотите написать свой собственный код запуска или собственную стандартную библиотеку, вам нужны эти опции, иначе вы не могли бы написать свой собственный код, поскольку символы будут дублироваться.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...