我正在进行跨平台开发,我想为Linux构建一个漂亮的,自包含的(!)包.我知道这不是通常的方式,但应用程序需要一个地方的所有数据,所以我将它安装到/ opt,就像许多其他专有软件包一样.我最终将提供deb和rpm包,但现在只有.tar.gz.用户应该在某处提取它,它应该工作.我宁愿没有安装程序.
首先是我的问题,然后是细节:
现在来看一些细节:这是我的项目(为此我称之为foo)布局:
现在在包中,将有两个额外的元素:
libs将包含项目所需的所有共享库,foo.sh是一个将LD_LIBRARY_PATH设置为包含libs的脚本.因此,用户将执行foo.sh并且程序应该启动.
我有一个shell脚本,它按以下步骤打包软件:
你觉得这怎么样?这种方法存在一些问题:
你怎么做呢?
编辑: 刚出现的另一个问题:您如何确定您的软件所依赖的库?我做了一个ldd foo,但是有很多.我看了一下WorldOfGoo包的外观,它们只发送了很少的库.如何假设用户系统中存在哪个库,哪个库不存在?只需将所有目标分布安装到虚拟matine中,看看需要什么?