1.我写的C++程序,包含C++和Python混合编程,涉及用C++创建Python解释器并执行Python逻辑代码,回避了Python多线程,在redhat6.5的服务器上编译通过,编译环境:Python 2.7.11,g++ 4.x.x
2.login上去服务器之后,启动程序时dump,报内存泄漏;
3.于是source ~/.bash_profile
十几遍,(不确定的一个数字,可能十遍,也可能二十遍,在这之间)然后再启动,正常运行了。杀掉程序,再启动,没问题,不需要再source ~/.bash_profile
;
4.bahsh_profile里确实写了程序运行所需要的消息引擎的库路径,如果重新编译了引擎,是可能要重新source的;
5.如果退出登录,重新登录,又返回到2所描述的情形;
6.同样的代码、程序,在centos6.5上运行没有出现这样的问题;
7.服务器无法联网,内部私密服务器,安装包都需要离线安装,很麻烦。
ringa_lee2017-04-17 14:51:53
bash_profile包含了環境變量,執行之後環境變數被寫入,後續此帳號下的程式執行可見這些環境變數。
當你重新登入或重新編譯引擎,可能導致環境變數失效。
伊谢尔伦2017-04-17 14:51:53
不要把庫路徑寫在bash_profile等腳本裡,bash_profile是依賴使用者的互動式登入這個行為的,不可靠。
估計是你反覆執行導致某些環境變數不斷追加,反而誤打誤撞能夠運行了。
在/etc/ld.so.conf.d/建立一個文字檔案例如msgeng.conf,裡面內容是你的函式庫的所在目錄的絕對路徑。然後sudo ldconfig,一勞永逸。