在具有符号 link 的可执行文件中使用相对路径

Using a relative path in executable with symbolic link

我正在尝试弄清楚如何将我的应用程序与 link in ubuntu 一起使用。我编译了代码,它包含某些文件的相对路径。当我在不同目录中为可执行文件创建 link 时,我无法使用这些路径。有没有办法(在我的代码中或在 link 的创建中)使其与相对路径一起工作?

谢谢

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
$

在linux中:

ln -sr <source relative path> <destination relative path>

您可以通过导航到该目录并键入以下命令来验证在目标中创建的符号 link:

ls -l

已接受的答案是如果它是可执行文件则应该使用的答案,这就是您的问题所在。如果在可执行文件之外,这是一个快速简单的解决方案。