vagrantnotes
@vagrantnotes
Embedded-разработчик

В чём ошибка при сборке ядра embedded Linux?

Господа, столкнулся с довольно специфичной проблемой: пытаюсь с помощью buildroot собрать линуксовое ядро для одной железки. В процессе сборки получаю следующую ошибку:
CHK     include/config/kernel.release
  CHK     include/generated/uapi/linux/version.h
  CHK     include/generated/utsrelease.h
  CALL    scripts/checksyscalls.sh
  CHK     include/generated/compile.h
  CC      mm/ksm.o
  LD      sound/built-in.o
  CC      kernel/smp.o
In file included from include/linux/linkage.h:6:0,
                 from include/linux/preempt.h:9,
                 from include/linux/spinlock.h:50,
                 from include/linux/mmzone.h:7,
                 from include/linux/gfp.h:5,
                 from include/linux/mm.h:9,
                 from mm/ksm.c:18:
include/linux/export.h:57:2: error: expected ‘,’ or ‘;’ before ‘extern’
  extern typeof(sym) sym;     \


В файле же export.h этот фрагмент используется в макросе:
/* For every exported symbol, place a struct in the __ksymtab section */
#define __EXPORT_SYMBOL(sym, sec)				\
	extern typeof(sym) sym;					\
	__CRC_SYMBOL(sym, sec)					\
	static const char __kstrtab_##sym[]			\
	__attribute__((section("__ksymtab_strings"), aligned(1))) \
	= VMLINUX_SYMBOL_STR(sym);				\
	extern const struct kernel_symbol __ksymtab_##sym;	\
	__visible const struct kernel_symbol __ksymtab_##sym	\
	__used							\
	__attribute__((section("___ksymtab" sec "+" #sym), unused))	\
	= { (unsigned long)&sym, __kstrtab_##sym }


Я не вижу в нём ничего криминального. Более того -- это стандартный макрос ядра. С чем связана ошибка при сборке?
  • Вопрос задан
  • 126 просмотров
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы