Поддержка C ++ в модуле ядра в 64-битной системе - PullRequest
4 голосов
/ 28 июля 2011

Я знаю, что C ++ не рекомендуется в модуле ядра, однако, у нас есть модуль, написанный в смеси файлов C и C ++, модуль хорошо работает в 32-битной системе (ядро 2.6), теперь мы пытаемся портировать модуль в 64-битную систему, C ++ вообще не поддерживается в 64-битной системе?

Ответы [ 2 ]

2 голосов
/ 28 июля 2011

Грубо говоря, чтобы использовать C ++ в ядре, вы должны избавиться от всех зависимостей библиотеки времени выполнения C ++, в первую очередь вам следует переопределить new/delete и удалить обработку исключений (скомпилировать с -fno-exceptions).На самом деле, если 32-битный код работает, эти простые случаи уже должны быть разрешены.

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

2 голосов
/ 28 июля 2011

Вопрос не в том, поддерживается ли язык в 64-битной среде, а в том, являются ли библиотеки и другой код переносимым.

...