Ошибка в макросе из linux / exports.h при компиляции ядра Android Linux для MT6580 SoC - PullRequest
0 голосов
/ 13 июня 2019

Я пытаюсь собрать ядро ​​Android Linux для MT6580 SoC.«.config» успешно сгенерирован из «make menuconfig».Когда я запускаю команду «make», я сталкиваюсь с этой ошибкой:

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;     \
  ^
include/linux/export.h:69:2: note: in expansion of macro '__EXPORT_SYMBOL'
  __EXPORT_SYMBOL(sym, "")
  ^
mm/ksm.c:1830:1: note: in expansion of macro 'EXPORT_SYMBOL'
 EXPORT_SYMBOL(ksm_run_change);
 ^
scripts/Makefile.build:257: recipe for target 'mm/ksm.o' failed
make[1]: *** [mm/ksm.o] Error 1
Makefile:938: recipe for target 'mm' failed
make: *** [mm] Error 2

Код, который вызывает ошибку:

#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 }

У меня очень ограниченные знания C, и операторы определения мыслей быливведите: "#define key value".Вышеприведенное, кажется, представляет собой одну сложную строку, поэтому, учитывая ошибку, в чем может заключаться проблема.Я использую версию компилятора GCC 4.9

...