2017-01-05 77 views
2

我已經安裝了一個R包,但要通過library加載它,需要將LD_LIBRARY_PATH設置爲其中一個庫(稱爲libhts.so.2)所在的路徑。只有在進入R之前編輯LD_LIBRARY_PATH時,加載才起作用,不在之後。從R內部設置LD_LIBRARY_PATH

我曾試圖解決這個幾種不同的方法:

  1. 出口從位於在R包configure腳本修改LD_LIBRARY_PATH。
  2. 在同一個configure腳本中創建到共享庫的軟鏈接。

兩者都有工作,在我看來,有一次R爲啓動該存儲LD_LIBRARY_PATH結果的變量。也許解決方案正在編輯該變量。

+2

從'R'內調用'Sys.setenv(LD_LIBRARY_PATH =「/ path/to/blah」)'會改變任何未來子進程的環境,但不會改變'R'本身的環境(可以用' ps e')。儘管如此,[本文](http://r.789695.n4.nabble.com/R-seems-to-mangle-LD-LIBRARY-PATH-td4686672.html)似乎表明它有所作爲,所以你可以試試看。 –

+1

..或者更確切地說是'Sys.setenv(LD_LIBRARY_PATH = paste(「/ path/to/blah」,Sys.getenv(「LD_LIBRARY_PATH」),sep =「:」))'爲了不打破現有路徑 –

+0

Setting環境變量起作用!但是,加載的庫不起作用... – Crt

回答

2

漢斯·盧巴幫助,解決問題的方法是使用dyn.load()功能和提供的完整路徑庫:

dyn.load('path_to_library') 

,然後,通過library裝載應該工作。