LINUX.ORG.RU

История изменений

Исправление Legioner, (текущая версия) :

Тут надо различать компилятор и линкер.

Компилятор выпускает объектные файлы. Которые к операционной системе большого отношения не имеют. В них лежит просто машинный код под заданную архитектуру процессора. Да, у MSVC свой формат объектных файлов, отличный от GCC, но это всё нюансы, самое важное это сам по себе машинный код.

А линкер уже из объектных файлов компонует исполняемый файл.

Я не знаю, можно ли слинковать линукс вендовым линкером. Если Windows-ядро собирается доступными для публики инструментами, думаю, можно и это. Но вот сам компилятор использовать для сборки линукса в теории вполне можно. Машинный код, он и в Африке машинный код. Конечно придётся знатно покрасноглазить, но это уже вопрос решаемый.

Правда тут другой нюанс. Линукс вовсю использует GCC-расширения, т.е. по сути написан не на C, а на, так сказать, GNU C. И вот тут уже будет сложней. В лучшем случае придётся пофиксить некоторое число header-ов, в которых эта гнутая магия зафиксирована. В худшем случае ничего не получится, если гнутая магия используется во многих местах в обычном коде или если гнутая магия принципиально не выражается в терминах MSVC.

Исправление Legioner, :

Тут надо различать компилятор и линкер.

Компилятор выпускает объектные файлы. Которые к операционной системе большого отношения не имеют. В них лежит просто машинный код под заданную архитектуру процессора. Да, у MSVC свой формат объектных файлов, отличный от GCC, но это всё нюансы, самое важное это сам по себе машинный код.

А линкер уже из объектных файлов компонует исполняемый файл.

Я не знаю, можно ли слинковать линукс вендовым линкером. Если Windows-ядро собирается доступными для публики инструментами, думаю, можно и это. Но вот сам компилятор использовать для сборки линукса в теории вполне можно. Машинный код, он и в Африке машинный код. Конечно придётся знатно покрасноглазить, но это уже вопрос решаемый.

Правда тут другой нюанс. Линукс вовсю использует GCC-расширения, т.е. по сути написан не на C, а на, так сказать, GNU C. И вот тут уже будет сложней. В лучшем случае придётся пофиксить некоторое число header-ов, в которых эта гнутая магия зафиксирована. В худшем случае ничего не получится, если гнутая магия используется во многих местах в обычном коде.

Исходная версия Legioner, :

Тут надо различать компилятор и линкер.

Компилятор выпускает объектные файлы. Которые к операционной системе большого отношения не имеют. В них лежит просто машинный код под заданную архитектуру процессора.

А линкер уже из объектных файлов компонует исполняемый файл.

Я не знаю, можно ли слинковать линукс вендовым линкером. Если Windows-ядро собирается доступными для публики инструментами, думаю, можно и это. Но вот сам компилятор использовать для сборки линукса в теории вполне можно. Машинный код, он и в Африке машинный код. Конечно придётся знатно покрасноглазить, но это уже вопрос решаемый.

Правда тут другой нюанс. Линукс вовсю использует GCC-расширения, т.е. по сути написан не на C, а на, так сказать, GNU C. И вот тут уже будет сложней. В лучшем случае придётся пофиксить некоторое число header-ов, в которых эта гнутая магия зафиксирована. В худшем случае ничего не получится, если гнутая магия используется во многих местах в обычном коде.