我正在尝试启动 Linux Red Eclipse 游戏附带的 32 位二进制文件reclient_linux_32
。我已经成功从源代码构建,并且还有另一个版本的可执行文件。如果我打开一个窗口并手动单击任一可执行文件,则游戏可以毫无问题地启动。如果我打开一个终端,导航到任一二进制文件所在的文件夹,然后从命令行执行它,那么两者也可以毫无问题地启动。
但是,如果我制作一个应用启动器,或者只是打开一个终端并执行命令从其他目录启动二进制文件,我就会收到一条错误消息,提示游戏无法加载纹理。我假设这些纹理文件位于二进制文件附近的本地。但是,许多可执行文件仍然需要附近的文件,但仍然可以从任何地方启动。为什么这是个问题?
请注意:两个可执行文件都具有正确的权限。
答案1
“游戏”可能具有相对于工作目录的目录的硬编码路径。例如,“../textures/blah”而不是“/usr/local/game/textures/blah”...没有 src...无法开始测试。
答案2
原因可能是程序只在当前目录中搜索纹理文件(消息是这样说的)。要更接近原因,您可以使用 运行程序strace -v /path/to/program
,它会显示它想要打开哪些文件。