Помимо использования -nostdlib
и связывания crt1.o -lc -lgcc
самостоятельно, существует ли какой-либо простой способ предотвратить gcc от ссылки crtbegin[S].o
и crtend[S].o
? Эти файлы не такие большие, но я играю с созданием небольших двоичных файлов и хотел бы удалить бесполезный код поддержки С++, который не нужен для программ на C. (Предположительно, gcc связывает их даже для программ на C, если вы используете библиотеку С++ с глобальными переменными объектов. Я пожалею всех о том, как он должен генерировать безопасные одноразовые вызовы инициализации везде, на которые ссылается глобальный объект в С++ вместо инициализации глобальных объектов до main
...)
Я не возражаю против взлома файла gcc specs
, чтобы сделать привязку файлов поддержки С++ условной к такому-то, но я не уверен, как это сделать. Возможно, там уже хороший способ?