export的作用

EXPORT_SYMBOL使用详解
本文介绍了EXPORT_SYMBOL和EXPORT_SYMBOL_GPL的功能及使用方法,通过示例详细讲解如何在内核模块间共享函数。EXPORT_SYMBOL允许模块间共享函数而无需更改内核代码。

EXPORT_SYMBOL()的作用 
1.作用 
EXPORT_SYMBOL标签内定义的函数或者符号对全部内核代码公开,不用修改内核代码就可以在您的内核模块中直接调用,即使用EXPORT_SYMBOL可以将一个函数以符号的方式导出给其他模块使用。 
导出的符号可以被其他模块使用,不过使用之前一定要声明一下。EXPORT_SYMBOL_GPL()只适用于包含GPL许可权的模块。 
2、使用方法 
   第一、在模块函数定义之后使用EXPORT_SYMBOL(函数名) 
   第二、在掉用该函数的模块中使用extern对之声明 
   第三、首先加载定义该函数的模块,再加载调用该函数的模块
01.//hello.c文件,定义2个函数,用于导出  
02.#include   
03.#include    
04.MODULE_LICENSE("Dual BSD/GPL");   
05.int add_integar(int a,int b)   
06.{   
07.    return a + b;   
08.}   
09.int sub_integar(int a,int b)   
10.{   
11.    return a - b;   
12.}   
13.EXPORT_SYMBOL(add_integar);   
14.EXPORT_SYMBOL(sub_integar);   
15.//test.c 用于调用hello模块导出的函数  
16.#include   
17.#include    
18.MODULE_LICENSE("Dual BSD/GPL");   
19.extern int add_integar(int ,int); //声明要调用的函数   
20.extern int sub_integar(int ,int); //声明要调用的函数   
21.int result(void)   
22.{   
23.    int a,b;   
23.    int a,b;   
24.    a = add_integar(1,1);   
25.    b = sub_integar(1,1);   
26.       
27.    printk("%d\n",a);   
28.    printk("%d\n",b);   
29.       
30.    return 0;   
31.} 
<think>嗯,用户想知道在.bashrc文件中使用export命令定义环境变量的功能和作用。首先,我需要回忆一下Linux系统中.bashrc文件的作用。记得.bashrc是Bash shell的配置文件,每次启动交互式shell时都会执行这个文件里的命令。所以在这里定义的变量和设置会影响用户的工作环境。 然后,export命令的作用是将变量设为环境变量,这样子进程和其他程序可以继承这些变量。比如PATH环境变量,如果不export,可能只在当前shell有效,而子进程如新打开的终端或运行的脚本就无法获取到这个变量。 接下来,用户可能关心的是为什么要在.bashrc中使用export,而不仅仅是直接定义变量。需要解释局部变量和环境变量的区别。局部变量只能在当前shell中使用,而环境变量可以传递给子进程。在.bashrc中用export,可以确保每次登录或打开新终端时,这些变量都被正确设置,并且对所有子进程可用。 还需要提到常见的用例,比如设置PATH、JAVA_HOME等。例如,用户安装了一个新软件,需要将它的bin目录添加到PATH中,这时候在.bashrc里用export PATH=$PATH:/new/path就能让所有新打开的终端都包含这个路径。 另外,可能要注意到临时设置和永久设置的区别。如果在命令行直接export,变量只在当前会话有效,而写入.bashrc则是永久生效。需要引用之前提到的引用[3],说明局部环境变量的问题,以及如何通过.bashrc来避免。 还要考虑用户可能的错误操作,比如重复导出变量或者路径重复添加,可能会导致问题。需要提醒用户正确使用export,并注意语法,比如使用冒号分隔路径。 最后,总结一下export在.bashrc中的作用,确保用户理解其重要性和使用方法,以及如何验证设置是否生效,比如通过echo $PATH或者运行依赖这些环境变量的程序来测试。</think>在Linux系统中,`.bashrc`文件是用户专属的Bash shell配置脚本,`export`命令在其中主要用于**定义全局环境变量**,使得这些变量对所有子进程和后续启动的终端会话生效。以下是具体说明: ### 1. **作用范围扩展** - **局部变量 → 全局变量**:在`.bashrc`中直接定义变量(如`PATH=/usr/bin`)仅对当前shell有效,而使用`export PATH=/usr/bin`会将其升级为环境变量,可被当前shell启动的所有子进程(如脚本、程序)继承[^3]。 - **示例**:若在`.bashrc`中设置`export JAVA_HOME=/opt/jdk`,后续运行的Java程序才能正确读取该路径。 ### 2. **持久化配置** - **会话级生效**:通过将`export`命令写入`.bashrc`,每次用户登录或启动新的交互式shell时,这些变量会自动加载,避免重复手动设置[^2]。 - **典型应用**: ```bash export PATH="$PATH:/usr/local/custom/bin" # 添加自定义程序路径 export EDITOR=vim # 设置默认文本编辑器 ``` ### 3. **环境变量传递** - **影响系统行为**:许多程序依赖环境变量确定运行配置。例如: - `LANG`变量控制终端语言 - `PS1`变量定义命令行提示符格式(如颜色、用户名显示)[^1] - `LD_LIBRARY_PATH`指定动态链接库路径 ### 4. **验证与调试** - 修改后需执行`source ~/.bashrc`或重新打开终端使配置生效。 - 通过`echo $VARIABLE_NAME`(如`echo $PATH`)可查看当前值。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值