如何使用 synaptic 安装单个包的多个架构版本?

如何使用 synaptic 安装单个包的多个架构版本?

我正在尝试交叉编译一个使用 GTK3 的程序。主机是运行 Ubuntu 22.04 的 x86_64。目标机器是运行 Debian (Bookworm) 的 arm64 或 aarch64。我已经使用 crosstools-ng 设置了交叉编译工具链。

我运行了这个命令:

aarch64-unknown-linux-gnu-gcc `pkg-config --cflags gtk+-3.0` test_window.c -o test_window_cross `pkg-config --libs gtk+-3.0`

但我收到了这样的回复:

在包含的文件中/home/user/x-tools/aarch64-unknown-linux-gnu/aarch64-unknown-linux-gnu/sysroot/usr/include/features.h:527/usr/include/x86_64-linux-gnu/bits/libc-header-start.h:33/home/user/x-tools/aarch64-unknown-linux-gnu/aarch64-unknown-linux-gnu/sysroot/usr/include/limits.h:26/home/user/x-tools/aarch64-unknown-linux-gnu/lib/gcc/aarch64-unknown-linux-gnu/13.2.0/include/limits.h:205/home/user/x-tools/aarch64-unknown-linux-gnu/lib/gcc/aarch64-unknown-linux-gnu/13.2.0/include/syslimits.h:7/home/user/x-tools/aarch64-unknown-linux-gnu/lib/gcc/aarch64-unknown-linux-gnu/13.2.0/include/limits.h:34/usr/lib/x86_64-linux-gnu/glib-2.0/include/glibconfig.h:11/usr/include/glib-2.0/glib/gtypes.h:32/usr/include/glib-2.0/glib/galloca.h:32/usr/include/glib-2.0/glib.h:30/usr/include/gtk-3.0/gdk/gdkconfig.h:13/usr/include/gtk-3.0/gdk/gdk.h:30/usr/include/gtk-3.0/gtk/gtk.h:30测试窗口.c:1/usr/include/x86_64-linux-gnu/gnu/stubs.h:7:11: 致命错误:gnu/stubs-32.h:没有这样的文件或目录
    7 | #包括<gnu/stubs-32.h>
      |           ^~~~~~~~~~~~~~~~
编译终止。

我认为这种情况发生是因为我的电脑上没有 arm64 的 gtk 包。因此,我运行以下命令,使用 apt 安装 arm64 版本的 gtk 包 (libgtk-3-dev)。

sudo apt install libgtk-3-dev:arm64

我收到了这样的回复:

正在读取软件包列表...完成
构建依赖关系树...完成
正在读取状态信息...完成
某些软件包无法安装。这可能意味着您有
请求一个不可能的情况,或者如果你正在使用不稳定
发行版中某些必需的软件包尚未创建
或已移出传入。
以下信息可能有助于解决该情况:

以下软件包具有未满足的依赖关系:
 libgdk-pixbuf-2.0-0:损坏:libgdk-pixbuf2.0-0:arm64(<2.40.0+dfsg-6~)但需要安装 2.40.0+dfsg-3ubuntu0.4
 libgdk-pixbuf2.0-0:arm64:依赖:libc6:arm64 (>= 2.17) 但无法安装
                            依赖:libglib2.0-0:arm64 (>= 2.48.0) 但无法安装
                            依赖:libjpeg8:arm64 (>= 8c) 但是它将不会被安装
                            依赖:libpng16-16:arm64 (>= 1.6.2-1) 但是它将不会被安装
                            依赖:libtiff5:arm64 (>= 4.0.3) 但是它将不会被安装
                            依赖:libx11-6:arm64 但是它将不会被安装
                            依赖:libgdk-pixbuf2.0-common:arm64(= 2.40.0+dfsg-3ubuntu0.4)
 libgdk-pixbuf2.0-bin:arm64:依赖:libc6:arm64 (>= 2.17) 但无法安装
                              依赖:libglib2.0-0:arm64 (>= 2.48.0) 但无法安装
 libgdk-pixbuf2.0-dev:arm64:依赖:gir1.2-gdkpixbuf-2.0:arm64(= 2.40.0+dfsg-3ubuntu0.4)但不会安装
                              依赖: libglib2.0-dev:arm64 (>= 2.37.6) 但是它将不会被安装
                              依赖: libx11-dev:arm64 但是它将不会被安装
                              依赖: libpng-dev:arm64 (>= 1.6) 但是它将不会被安装
                              依赖: libpng-dev:arm64 (< 1.7) 但是它将不会被安装
 libgtk-3-common:损坏:libgtk-3-dev:arm64(< 3.24.30-3~)但需要安装 3.24.20-0ubuntu1.1
 libgtk-3-dev:arm64:依赖:gir1.2-gtk-3.0:arm64(= 3.24.20-0ubuntu1.1)但不会安装
                      依赖: libatk-bridge2.0-dev:arm64 但是它将不会被安装
                      依赖: libatk1.0-dev:arm64 (>= 2.15.1) 但是它将不会被安装
                      依赖:libcairo2-dev:arm64 (>= 1.14.0) 但是它将不会被安装
                      依赖: libegl1-mesa-dev:arm64 但是它将不会被安装
                      依赖: libepoxy-dev:arm64 (>= 1.0) 但是它将不会被安装
                      依赖: libfontconfig1-dev:arm64 但是它将不会被安装
                      依赖:libfribidi-dev:arm64 (>= 0.19.7) 但是它将不会被安装
                      依赖: libglib2.0-dev:arm64 (>= 2.57.2) 但是它将不会被安装
                      依赖: libpango1.0-dev:arm64 (>= 1.41) 但是它将不会被安装
                      依赖: libwayland-dev:arm64 (>= 1.9.91) 但是它不会被安装
                      依赖: libx11-dev:arm64 但是它将不会被安装
                      依赖:libxcomposite-dev:arm64 但是它将不会被安装
                      依赖: libxcursor-dev:arm64 但是它将不会被安装
                      依赖: libxdamage-dev:arm64 但是它将不会被安装
                      依赖: libxext-dev:arm64 但是它将不会被安装
                      依赖: libxfixes-dev:arm64 但是它将不会被安装
                      依赖:libxi-dev:arm64 但是它将不会被安装
                      依赖: libxinerama-dev:arm64 但是它将不会被安装
                      依赖: libxkbcommon-dev:arm64 但是它将不会被安装
                      依赖: libxrandr-dev:arm64 但是它将不会被安装
                      依赖: dconf-gsettings-backend:arm64 但无法安装或
                               gsettings-后端:arm64
                      依赖:libgtk-3-0:arm64 (= 3.24.20-0ubuntu1.1) 但是它不会被安装
埃:错误,pkgProblemResolver::Resolve 生成​​中断,这可能是由持有的包裹引起的。

然后我去了这里然后我想到了使用 synaptic manager。我安装了 synaptic manager,并尝试安装 arm64 版本的 gtk 软件包。我在屏幕截图中看到了以下错误。(注意:我使用的是 synaptic 的 GUI 版本) 屏幕截图显示了 gtk 包可用的不同架构。

屏幕截图显示了当我尝试安装 libgtk-3-dev:arm64 时突触的响应

我有以下问题:

  1. 同一软件包在一台计算机上不可能有不同架构版本吗?如果不可能,我该如何解决屏幕截图中显示的问题?
  2. 安装 arm64 版本的 gtk 包是否会自动解决交叉编译期间遇到的错误?如果没有自动解决,我该如何解决?

我期待您的友好、积极和迅速的回复。

答案1

  1. 同一个软件包可能有不同的 Arch 版本...

你可以在备份后尝试此操作/etc/apt/sources.list/var/lib/dpkg/状态文件。

$ sudo apt-get install -f

$ sudo dpkg --configure -a

$ sudo apt-get install -f

解决依赖关系问题并重试。如果此消息出现在最后一个命令之后,您可以轻松安装您的 arch 版本的 pkg

0 upgraded, 0 newly installed, 0 to remove, and 0 not upgraded.
  1. 尝试 1. 步骤,看看会发生什么...首先,一步一步....

相关内容