for*_*idt 1 linux debian chroot cross-compiling binary-compatibility
我们有一些专门开发的C++应用程序,仅适用于Debian stable(x86).
目前,这些应用程序的开发也是使用Debian stable(x86)系统完成的,因此开发人员拥有与目标系统相同的库版本.
偶尔,我还需要处理这些组件,并且一直困扰我,因为我坚持使用非常过时的KDevelop版本(4.0.1与最新的4.4.1).我想使用更新的系统进行开发(比如最新的Ubuntu或Debian测试),但是如何创建适合目标系统的二进制文件呢?
是否有一些简单的方法可以告诉编译器/链接器只使用目标平台上可用的库版本?
我看了Emdebian和他们的交叉编译包,但我不认为这对我有用.他们似乎只有针对ARM等其他架构的软件包.
我建议使用schroot.
$ sudo apt-get install schroot debootstrap
$ sudo debootstrap squeeze /opt/squeeze
Run Code Online (Sandbox Code Playgroud)
然后在/etc/schroot/schroot.conf中添加和输入如下:
[squeeze]
type=directory
description=Debian squeeze
directory=/opt/squeeze
users=myusername
root-users=myusername
Run Code Online (Sandbox Code Playgroud)
之后,您就可以在chroot中安装软件包了:
$ schroot -c squeeze -u root
(squeeze)# aptitude
Run Code Online (Sandbox Code Playgroud)
安装所需的所有软件包后,可以以普通用户身份输入chroot(只要在schroot.conf文件中列出):
$ schroot -c squeeze
Run Code Online (Sandbox Code Playgroud)
schroot程序对于在较旧的桌面上运行较新的X11应用程序也很有用,您只需要传递环境:
$ schroot -c squeeze -p
Run Code Online (Sandbox Code Playgroud)