make ubuntu 下给 ccache 设置的环境变量不生效问题

liufenglan3@gmail.com · 2013年11月06日 · 1 次阅读

[i=s] 本帖最后由 kilo_0115 于 2013-11-6 15:18 编辑

环境: ubuntu 12.04 ccache 3.1.9 测试 ccache 的效率,尝试编译 perl 源码 5.18.1

操作: 默认的 ccache 缓存路径是 ${HOME}/.ccache,我尝试设置 CCACHE_DIR,以改变默认的缓存路径为 ${HOME}/myccache,设置方法: CCACHE_DIR=${HOME}/myccache export CCACHE_DIR 编译 perl,make CC="ccache cc"

问题: ${HOME}/myccache 路径并没有自动生成,使用 ll 命令查看,发现 ${HOME}/.ccache 下目录及其子目录的修改日期都更新了,即 ccache 依然使用了默认路径 ${HOME}/.ccache 作为缓存目录;但是使用 ccache -s 查看统计信息,显示的 ccache directory 却是 ${HOME}/myccache,而其它的统计数据为 0

我还尝试过设置其它的环境变量,如 CCACHE_LOGFILE 等,也都没生效。没办法只能修改 ccache 的源码,将默认路径改成我想要的路径,然后重新编译安装 ccache,但这么操作毕竟太傻了啊~ 不知道是不是我设置得有问题啊?

有木有人知道哇?求指点啊!

在我折腾了一番 ccache 的源码后(其实就加了点调试打印信息,后来还都删除了,实际上什么都没动),今天它莫名其妙生效了。。。

也就是说增加相关环境变量后,没有重启服务器,也生效了 那么有没有想过在修改 cache_home 后,重新启动 cache?类似于 jenkins_home 的改变,一般情况下需要重启相关服务程序

关于路径这块,看了下源码,应该是跟服务重启没有关系的,它就是直接通过函数实时获取系统的环境变量的。

我刚刚又仔细地回想了一下我之前的操作过程,猜测可能还是我的操作问题导致的,之前 make 时可能用过 sudo 命令(这个没记录,已经记不清了),而 CCACHE_DIR 变量是在当前用户下设置的,但是使用 sudo 之后会将环境变量重置,所以这个设置实际无效。sudo 是会有这个效果的吧?

直接在编译脚本中设置环境变量比较省事

嗯,是的。已经都写在编译脚本中了。

需要 登录 后方可回复。