1

我正在使用 DebHelper 在 Debian 的最新稳定版本下创建一个 Debian 软件包。

“debian/control”文件包含以下几行:

Depends:
 ${shlibs:Depends},
 ${misc:Depends}

因此,依赖项会自动设置在创建的包中。但是,libstdc++ 要求的版本太严格了。该软件包需要 libstdc++6 ( >= 4.9 ),我希望将其设置为 libstdc++6 ( >= 4.8 )。

为此,在阅读本页本页时,我编辑了“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 软件包上进行过这种定制?

谢谢

4

1 回答 1

0

一般来说,debhelper 在检测依赖项方面做得非常好。

如果它说你的包需要libstdc++6 (>= 4.9),那么你的包很可能需要这个特定的版本并且会失败,例如libstdc++6-4.8。(如果你不相信我,试试看;在只安装了 libstdc++6-4.8 的系统上强制安装你的包,看看是否一切正常)

如果有人声称它可以用libstd++6-4.8(或者更确切地说gcc-4.8)构建,那么我看到了可能性:

  • 要么那些人错了
  • 或者二进制文件(在您的包中)会略有不同,具体取决于它是针对 libstdc++6-4.8 还是 4.9 构建的

很可能是第二点。

这可能有很多原因,例如: - 如果检测到 libstdc++6-4.9,您的包会自动启用功能 - libstdc++6 中的一些实现细节已更改,这使得生成的二进制文件不兼容(或至少:不向后兼容)

如果你想要一个可以与 libstdc++6 == 4.8 一起使用的包,那么你应该使用libstdc++6-4.8(或者很可能:整个 g++4.8 工具链)来构建包。

于 2015-05-31T18:49:39.267 回答