页次: 1
嗯,作为一个长期arch用户,我知道最好是能用新版本的就用新版本的,但实在找不到替代软件了。
故事是这样的:有一个软件musly,它依赖libav 0.8版本。而arch标准情况下用的是ffmpeg,它和libav两者有点历史渊源/冲突,于是ffmpeg里面包含了libav的相关内容(比如头文件)。然而官方仓库中的ffmpeg的版本和libav 0.8不相兼容(废话),且由于文件冲突又不能专门装个libav 0.8到系统中(这也是为什么AUR上有libav-no-libs但没有libav)。
我在docker容器中测试了一下,libav 0.8和musly都可以正常编译和运行。于是现在的问题就是如何将它带到系统中——我本身计划的是基于musly(或libmusly)开发一个播放器包装/播放列表前台,所以放在容器中是很奇怪的做法。
所以我想到也许可以静态链接——将libav 0.8的相关部分静态链接到libmusly中,这样就不需要考虑libav的冲突问题了。但我对此没有什么经验,所以希望可以得到一些建议——包括/尤其是这样是否可行。
其中libav通过autotools(./configure)(及make)进行编译,而musly通过cmake进行编译。不知道这两者会否影响复杂性之类的。我从来没编写过autotools的配置,对cmake也只有很简单的经验。
知識很重要,而相當的運用能力更重要。
离线
当我发现Java有些鸡肋的时候, 不想安装在系统里, 只把需要的版本解压到自定义的目录下, 然后在PATH里指向这个目录 PATH=/usr/local/pgsql/bin:/usr/local/jre1.8.0_251/bin, 这样只在启动eclipse时才会用到Java, 如果是库文件可以定义LD_LIBRARY_PATH=/usr/local/pgsql/lib, 不知到是不是适合你的这种情况。
最近编辑记录 twobooks (2021-01-30 02:09:45)
离线
我先来,用docker或containerd或cri-o或什么的,依赖版本的最终解决方案(迫真
啊你不能这么做啊。。。。
Musly说自己是music similarity库,你开发播放列表为啥要用到它
最近编辑记录 yw662 (2021-01-30 10:38:13)
ecmascript是世界上最好的语言
离线
你可以把这个旧版本放到A的某个目录中,并且在启动时设置LD_LIBRARY_PATH以便它可以找到库文件。
更好的办法是像那堆 lua 那样,把头文件放到带版本号的子目录中,库文件因为 soname 不同的原因应该不需要动?
离线
页次: 1