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