我正在使用最新的Debian稳定版本使用DebHelper创建一个Debian软件包。
“debian / control”文件包含以下行:
Depends:
${shlibs:Depends},
${misc:Depends}
因此,依赖关系会在创建的包中自动设置。但是,libstdc ++所需的版本太严格了。该软件包需要libstdc ++ 6(> = 4.9 ),我希望将其设置为libstdc ++ 6(> = 4.8 )。
为此目的,在阅读page和page时,我编辑了“debian / rules”文件,现在看起来像:
#!/usr/bin/make -f
DPKG_EXPORT_BUILDFLAGS = 1
include /usr/share/dpkg/buildflags.mk
%:
dh $@
override_dh_makeshlibs:
dh_makeshlibs -V 'libstdc++6 (>= 4.8)'
然而最后两行并没有成功。有没有人在Debian软件包上做过这种定制?
由于
答案 0 :(得分:0)
一般来说,debhelper在检测依赖关系方面做得很好。
如果它说您的软件包需要libstdc++6 (>= 4.9)
,那么您的软件包很可能需要此特定版本,并且会失败,例如libstdc++6-4.8
。 (如果您不相信我,请尝试一下;在仅安装了libstdc ++ 6-4.8的系统上强制安装软件包,并查看所有内容是否有效)
如果有人声称可以使用libstd++6-4.8
(或更确切地说gcc-4.8
)进行构建,那么我会看到可能性:
第二点很可能就是这种情况。
这可能有很多原因,例如: - 如果检测到libstdc ++ 6-4.9,您的软件包会自动启用功能 - libstdc ++ 6中的一些实现细节已经改变,这使得生成的二进制文件不兼容(或者至少:不向后兼容)
如果你想要一个可以与libstdc ++ 6 == 4.8一起使用的软件包,那么你应该使用libstdc++6-4.8
(或者很可能是:整个g ++ 4.8工具链)来构建软件包。