搜尋

首頁  >  問答  >  主體

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

问题是这样的

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.服务器无法联网,内部私密服务器,安装包都需要离线安装,很麻烦。

PHPzPHPz2809 天前609

全部回覆(2)我來回復

  • ringa_lee

    ringa_lee2017-04-17 14:51:53

    bash_profile包含了環境變量,執行之後環境變數被寫入,後續此帳號下的程式執行可見這些環境變數。
    當你重新登入或重新編譯引擎,可能導致環境變數失效。

    回覆
    0
  • 伊谢尔伦

    伊谢尔伦2017-04-17 14:51:53

    不要把庫路徑寫在bash_profile等腳本裡,bash_profile是依賴使用者的互動式登入這個行為的,不可靠。
    估計是你反覆執行導致某些環境變數不斷追加,反而誤打誤撞能夠運行了。
    在/etc/ld.so.conf.d/建立一個文字檔案例如msgeng.conf,裡面內容是你的函式庫的所在目錄的絕對路徑。然後sudo ldconfig,一勞永逸。

    回覆
    0
  • 取消回覆