2
我們知道,當我們想要導出符號時使用__ EXPORT_SYMBOL。 我發現存在 exort.h 宏正如你可以看到它下面:當我使用__EXPORT_SYMBOL時爲什麼只有一個部分
#ifdef CONFIG_MODVERSIONS
/* Mark the CRC weak since genksyms apparently decides not to
* generate a checksums for some symbols */
#define __CRC_SYMBOL(sym, sec) \
extern void *__crc_##sym __attribute__((weak)); \
static const unsigned long __kcrctab_##sym \
__used \
__attribute__((section("___kcrctab" sec "+" #sym), unused)) \
= (unsigned long) &__crc_##sym;
#else
#define __CRC_SYMBOL(sym, sec)
#endif
有一個行: 「屬性((部分(」 _kcrctab」秒 「+」 #sym),未使用))「 我相信這意味着這個變量(無符號long _ kcrctab ## sym)將被放置在一個特殊的部分,其名稱是(」 _kcrctab「sec」+「#sym).Doesn't這意味着最終的精靈文件中會有很多部分? 但是,我使用readelf實用程序檢查vmlinux,我發現只有一個部分。 __kcrctab_gpl。它的大小是0x3F40。 你能幫我嗎。我是一個新來的人。