Действительно ли возможно скомпилировать ядро Linux с чем-то другим, чем gcc

Вы можете использовать

re.sub(r'\(([^()]*)\)', r'\1', s)

См. regex demo .

Подробности

  • \( - ( символ
  • ([^()]*) - группа 1 (\1 относится к значению этой группы из шаблон замены): 0 или более символов, кроме скобок
  • \) -

См. демонстрацию Python :

import re
s = "(NP  (NN  (Police)) (SBAR  (SC (for)) (S  (NP-SBJ  (*)) (VP  (VB (secure)) (NP  (NN      (olympic games)))))))"
print(re.sub(r'\(([^()]*)\)', r'\1', s))
# => (NP  (NN  Police) (SBAR  (SC for) (S  (NP-SBJ  *) (VP  (VB secure) (NP  (NN      olympic games))))))

19
задан Community 23 May 2017 в 10:30
поделиться

7 ответов

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

Это не "нет", так как для отдельного поставщика/разработчика компилятора, конечно, не невозможно отследить расширения gcc, просто точка данных, которая могла бы помочь Вам искать.

12
ответ дан 30 November 2019 в 02:29
поделиться

В какой-то момент tcc обработал бы и выполнил бы источник ядра Linux. Таким образом, это было бы a да, я предполагаю.

:: Благодарность за информацию к ephemient в комментариях.::

10
ответ дан 30 November 2019 в 02:29
поделиться

Были некоторые усилия (и патчи) для компиляции ранней версии 2,6 ядер с icc.

8
ответ дан 30 November 2019 в 02:29
поделиться

Многие, многие, много лет назад, было на самом деле возможно скомпилировать ядро с g ++, и насколько я помню, что часть мотивации была то, потому что C++ имел более сильную проверку типа, не обязательно, чтобы иметь g ++ для создания объектных файлов. Но как Neil Butterworth указали, Linus является не конкретный любящий C++, и существует нулевой шанс, что это когда-либо будет возможно снова.

3
ответ дан 30 November 2019 в 02:29
поделиться

Компилятор IBM смог сделать это некоторые версии Linux назад, но я не уверен в теперь, и при этом я не уверен в том, как хорошо IBM оптимизировала ядро, как проинструктировано. Все, что я знаю, они заставили это создавать.

Поскольку Linux сам размещающий (с его собственным libc) и был разработан из запуска с gcc (и gcc кросс-компиляторы), его вид глупых для использования чего-либо еще.

Я думаю главным образом, играть по правилам с макросами препроцессора и проинструктированной оптимизацией является самым большим препятствием (даже не входящий в отклонение от газа), поскольку GNU в основном записал книгу по вышеупомянутому и расширил его. Кроме того, Linux настраивает свою оптимизацию для работы с gcc, например, не получайте пойманное использование, 'энергозависимое' в ядре без чертовски серьезного основания. Используя встроенный и на самом деле имеющий компилятор соглашаются, другая проблема.

Linus является первым, который назовет GCC &*# дырой $, которая делает для лучшего компилятора.

Поэтому у нас есть большие дебаты GNU/Linux.

5
ответ дан 30 November 2019 в 02:29
поделиться

My non-technical guess: The Linux Kernel can't currently (2009) be compiled with any compiler other than the GNU compiler, gcc.

I say this on the basis that I've heard Richard Stallman, with some conviction, say Linux should be called GNU/Linux because the kernel is "only 1 part of the operating system" and I'm guessing he would not be able to say this if the kernel was non-dependant on GNU (e.g. a tonne of embedded devices run a Linux OS without any GNU software).

As I said, just a guess, let me know if I'm wrong...

-3
ответ дан 30 November 2019 в 02:29
поделиться

Разработчики LLVM пытаются скомпилировать его с помощью clang . Мета-ошибка при компиляции ядра Linux с помощью clang содержит более подробную информацию (дерево зависимостей для этой мета-ошибки показывает, как мало, кажется, осталось).

9
ответ дан 30 November 2019 в 02:29
поделиться
Другие вопросы по тегам:

Похожие вопросы: