C++ 应用程序分布

C++ 应用程序分布,c++,linux,sdl,C++,Linux,Sdl,我有一个SDL应用程序,可以很好地编译,并且图像会显示出来,但只有当它们位于正确的文件夹中,旁边有二进制文件时,如果图像被移动,它们在下次运行应用程序时才会显示出来。如何制作一个完整的二进制文件,使我能够编译图像和代码,这样我就可以分发一个二进制文件,而不是一个包含所有资产的zip文件。我已经考虑过编写一个.deb文件,这是我认为我需要的,但是这个过程看起来很复杂。我正在运行Ubuntu10.10,我只需要分发到Ubuntu10.10,您可以使用它创建可嵌入的静态数组。我建议创建一个.deb文件

我有一个SDL应用程序,可以很好地编译,并且图像会显示出来,但只有当它们位于正确的文件夹中,旁边有二进制文件时,如果图像被移动,它们在下次运行应用程序时才会显示出来。如何制作一个完整的二进制文件,使我能够编译图像和代码,这样我就可以分发一个二进制文件,而不是一个包含所有资产的zip文件。我已经考虑过编写一个.deb文件,这是我认为我需要的,但是这个过程看起来很复杂。我正在运行Ubuntu10.10,我只需要分发到Ubuntu10.10,您可以使用它创建可嵌入的静态数组。

我建议创建一个.deb文件。如果你真的想为Ubuntu发布任何东西,你迟早要适应dpkg

现在有了一种创建包的正确方法,如中所述


然后就有了。为此,您只需要(a)一个具有特定结构的目录,其中包含要分发的所有文件;(b) 具有特定格式的控制文件;和(c)产生
mydir.deb
。所有这些都不是那么难。您可以在几分钟内启动并运行。

您是希望嵌入映像(增大可执行文件的大小并可能使其无法运行),还是希望打包.deb以进行自动安装和维护?我可能有点错,但我认为通常的“Linux方式”使用应用程序分发媒体内容的目的不是将其嵌入二进制文件(我甚至不知道这是可能的),而是将其安装在/usr/share/your-application中。自动安装将是首选,除非它会给deb的创建增加更多的复杂性。我使用“脏嬉皮士方式”创建了一个deb。deb安装得很好,但它仍然只能在图像与deb一起位于文件夹中时工作,如果文件夹被移动,程序将无法运行。我怎样才能使程序不依赖用户计算机上图像的位置。@FrozenWasteland嗯。您是如何加载图像的<代码>IMG_载荷?您使用的是相对文件名还是绝对文件名?我使用IMG_Load和相对文件名加载图像。如果当前工作目录不是程序所期望的,则相对文件名将始终失败。您可以在main()中
chdir(dirname(argv[0]))
,也可以基于
dirname(argv[0])
构建绝对文件名。