是否可以仅通过编写 debian/rules 来编译两次并构建单独的软件包?
Is it possible to compile twice and build separate packages only by writing debian/rules?
让我详细阐述我的问题,并进一步详细说明我试图完成的任务。
我的最终目标是拥有两个 debian 软件包:一个包含为 x86 构建的二进制文件,另一个包含为 ARM 构建的二进制文件。在 debian/control 中,我定义了两个不同的软件包,并且两个软件包的架构目前都设置为"any"。
我试图按照 https://wiki.debian.org/PkgSplit 的说明进行操作,并查看 debhelper (http://www.fifi.org/doc/debhelper/examples/rules.multi2) 的 rules.multi2 示例,但到目前为止没有任何运气。
源代码是一个Qt项目,将同时部署在x86和ARM上。
我使用 dpkg-buildpackage 成功构建,但无论我如何尝试,我的源代码都只编译一次。
达到我的目标的理想方式是什么,在 debian/rules 中输入正确的信息是否"简单",还是我必须采取另一种方法?我真的不确定这是否可能;我只是一开始就走错了路(我是 debian 打包世界的新手)。
(我故意在这个阶段不包括我的 debian/control 和 debian/rules,如果需要,我会提供进一步的细节,因为它们在这个阶段有点混乱)。
编辑: 我被这个评论带到了 PkgSplit https://askubuntu.com/questions/246718/change-environment-variables-in-debian-rules-according-to-debian-control-targets/908351#908351 但对我来说,答案有点神秘,所以帮助将不胜感激。
no.
单次运行dpkg-buildpackage
将为单个体系结构(amd64
或i386
,或armhf
或s390x
或其他)创建二进制包。
只需多次调用dpkg-buildpackage
即可(交叉)构建多个体系结构:
dpkg-buildpackage -rfakeroot
dpkg-buildpackage -rfakeroot --host-arch i386
dpkg-buildpackage -rfakeroot --host-arch armhf
这将(最多)创建 3 个包:一个原生架构(最有可能:amd64
),一个用于x86_32
(又名i386
),一个用于树莓(armhf
)。
顺便说一句,PkgSplit文档讨论了为同一架构创建多个包。 例如,当您有一个库时,您通常希望将其拆分为库部分(安装libfoo.so.1
)和开发部分(安装头文件)。
- g++的分段错误(在NaN上使用to_string两次时)
- 蛇在C++不会连续转两次
- 检查一个数组是否包含在另一个数组中,以相反的顺序,至少两次
- 从具有按值捕获的 lambda 移动构造 std::函数时,移动构造函数调用两次
- 我应该如何去缓解两次出现的cin?
- Realloc 两次无法在 Visual Studio 上运行
- 使用 getline(cin, var) 两次在进行字符串比较时会产生错误 (==)
- 为什么映射插入和 map.find() 的单次迭代比插入和 map.find() 的两次单独迭代慢得多
- C++析构函数调用两次,堆栈分配的复合对象
- 为什么参数在构造 std::thread 时移动两次
- Qt插槽调用了两次
- 做 std::用相同的unique_ptr移动两次
- C++两次定义相同的函数会导致错误
- 为什么具有静态存储持续时间的同一内联变量在包含在 VS2017 编译的两个翻译单元中时会构造和销毁两次
- 对于优化级别为 0 的 std::vector,析构函数被调用两次
- 使用柯南打包时如何避免列出两次依赖?
- 为什么要执行两次位移((x >> 4)<< 4)?
- 对结构向量进行两次排序
- 是否可以仅通过编写 debian/rules 来编译两次并构建单独的软件包?
- Cmake并需要两次运行才能成功构建代码