2017-06-11 51 views
4

我想弄清楚如何在Ubuntu中使用我的應用程序與鏈接。我編譯了代碼,它包含了某些文件的相對路徑。當我在不同目錄中創建可執行文件的鏈接時,我無法使用這些路徑。有沒有一種方法(在我的代碼或創建鏈接)使其與相對路徑一起工作?在可執行文件中使用符號鏈接的相對路徑

感謝

+0

鏈接是使用到其上的完整或相對路徑調用應用程序沒有什麼不同。當前的工作目錄與應用程序的位置不同。在Unix操作系統中,通常將用戶目錄下的某個文件或已知的完整路徑下的文件放在Unix(如)文件系統文檔中以獲取詳細信息。大寫:http://refspecs.linuxfoundation.org/FHS_3.0/fhs/index.html –

+0

當編寫shell腳本時,從另一個目錄調用shell腳本時存在類似的問題。 此問題是通過在運行任何命令之前先更改爲腳本目錄來解決的。在bash中,參數0是腳本的名稱。 由於您使用的是已編譯的程序,因此我並不熟悉這將如何完成。 或許,這將有助於 https://stackoverflow.com/questions/59895/getting-the-source-directory-of-a-bash-script-from-within – yosefrow

回答

0

難道你realpath後是?像這樣(在下面的例子源test):

#include <iostream> 
#include <cstdlib> 

int main(int argc, char *argv[]) 
{ 
     char *path = realpath(argv[0], NULL); 
     std::cout << path << '\n'; 
     free(path); 
     return 0; 
} 

實施例執行:

$ ln -s tmp/test 
$ ./test 
/home/mlil/tmp/test 
$ 
相關問題