在可执行文件中使用带有符号链接的相对路径

Using a relative path in executable with symbolic link

本文关键字:符号链接 相对 路径 可执行文件      更新时间:2023-10-16

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

谢谢

这是你所追求的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>

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

ls -l

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