【IMPORT 】:
语法格式:
IMPORT 符号 {[WEAK]}
IMPORT 伪操作告诉编译器当前的符号不是在本源文件中定义的,而是在其他源文件中定义的,在本源文件中可能引用该符号,而且不论本源文件是否实际引用该符号,该符号均会被加入到本源文件的符号表中。(与下面的EXTERN的区别之处)
符号在程序中区分大小写, [WEAK] 指定这个选项后,如果符号在所有的源文件中都没有定义,编译器也不会产生任何错误信息,同时编译器也不会到当前没有被INCLUDE进来的库中去查找该符号。
使用IMPORT伪操作声明一个符号是在其他源文件中定义的。如果连接器在连接处理时不能解析该符号,而IMPORT伪操作中没有指定 [WEAK]选项,则连接器会报告错误。如果连接器在连接处理时不能解析该符号,而IMPORT伪操作中指定了[WEAK]选项,则连接器将不会报告错误,而是进行下面的操作:
1) 如果该符号被B或者BL指令引用,则该符号被设置成下一条指令的地址,该B或者BL指令相当于一条NOP指令
2) 其他情况下该符号被设置为0.
使用示例:
AREA Init , CODE , READONLY
IMPORT Main ;通知编译器当前文件要引用标号Main,但Main 在其他源文件中定义……
END
【EXTERN】:
语法格式:
EXTERN
语法格式:
IMPORT 符号 {[WEAK]}
IMPORT 伪操作告诉编译器当前的符号不是在本源文件中定义的,而是在其他源文件中定义的,在本源文件中可能引用该符号,而且不论本源文件是否实际引用该符号,该符号均会被加入到本源文件的符号表中。(与下面的EXTERN的区别之处)
符号在程序中区分大小写, [WEAK] 指定这个选项后,如果符号在所有的源文件中都没有定义,编译器也不会产生任何错误信息,同时编译器也不会到当前没有被INCLUDE进来的库中去查找该符号。
使用IMPORT伪操作声明一个符号是在其他源文件中定义的。如果连接器在连接处理时不能解析该符号,而IMPORT伪操作中没有指定 [WEAK]选项,则连接器会报告错误。如果连接器在连接处理时不能解析该符号,而IMPORT伪操作中指定了[WEAK]选项,则连接器将不会报告错误,而是进行下面的操作:
1) 如果该符号被B或者BL指令引用,则该符号被设置成下一条指令的地址,该B或者BL指令相当于一条NOP指令
2) 其他情况下该符号被设置为0.
使用示例:
AREA Init , CODE , READONLY
IMPORT Main ;通知编译器当前文件要引用标号Main,但Main 在其他源文件中定义……
END
【EXTERN】:
语法格式:
EXTERN

本文介绍了在C语言混合编程中,如何使用`EXPORT_SYMBOL`在Linux内核中创建函数入口,并在运行时由模块加载器解析。示例展示了`IMPORT`和`EXTERN`的用法,它们分别用于声明外部变量和导出本程序中的变量供其他模块调用。
订阅专栏 解锁全文
1878

被折叠的 条评论
为什么被折叠?



