c++ - 迷之source ~/.bash_profile需要多次执行

浏览:32日期:2023-04-10

问题描述

问题是这样的

1.我写的C++程序,包含C++和Python混合编程,涉及用C++创建Python解释器并执行Python逻辑代码,回避了Python多线程,在redhat6.5的服务器上编译通过,编译环境:Python 2.7.11,g++ 4.x.x2.login上去服务器之后,启动程序时dump,报内存泄漏;c++ - 迷之source ~/.bash_profile需要多次执行3.于是source ~/.bash_profile十几遍,(不确定的一个数字,可能十遍,也可能二十遍,在这之间)然后再启动,正常运行了。杀掉程序,再启动,没问题,不需要再source ~/.bash_profile;4.bahsh_profile里确实写了程序运行所需要的消息引擎的库路径,如果重新编译了引擎,是可能要重新source的;5.如果退出登录,重新登录,又返回到2所描述的情形;6.同样的代码、程序,在centos6.5上运行没有出现这样的问题;7.服务器无法联网,内部私密服务器,安装包都需要离线安装,很麻烦。

问题解答

回答1:

bash_profile包含了环境变量,执行之后环境变量被写入,后续此账号下的程序运行可见这些环境变量。当你重新登录或者重新编译引擎,可能导致环境变量失效。

回答2:

不要把库路径写在bash_profile等脚本里,bash_profile是依赖于用户的交互式登录这个行为的,不靠谱。估计是你反复执行导致某些环境变量不断追加,反而误打误撞能够运行了。在/etc/ld.so.conf.d/建立一个文本文件比如msgeng.conf,里面内容是你的库的所在目录的绝对路径。然后sudo ldconfig,一劳永逸。

相关文章: