链接二进制文件以从其原始目录执行

问题描述 投票:0回答:1

我有一个用C编写的程序。它的目录结构是这样的:

root/
    program.sh
    textures/
        texture1.png

program.sh以如下方式导入纹理:load_textures("./textures/texture1.png")(相对路径)。因此,只有从program.sh目录执行root时,程序才有效。

我想创建一个program.sh的链接,这样,每当我执行链接时,我都能够从根目录执行program.sh。换句话说,我想从根目录外执行program.sh

现在,我更喜欢一个解决方案来做这个而不改变源代码(如果有办法),否则,在给定当前场景的情况下,你会如何建议我在C中打开文件/纹理?

有一个类似的问题here,但它没有答案。

c assets symlink
1个回答
1
投票

从注释中可以清楚地看出,目标是从不同的目录执行程序,但程序的当前工作目录指向其自己的目录。

虽然这可以在C中完成(在POSIX系统中,假设由于.sh扩展,通过chdirexecvp系统调用的组合),它在包装器shell脚本中更容易实现,如下所示:

#!/bin/sh

pushd /path/to/executable
./program.sh $@
popd
© www.soinside.com 2019 - 2024. All rights reserved.