gpt4 book ai didi

c++ - 无法编译内核头文件(libc6-amd64 依赖项)

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:48:59 26 4
gpt4 key购买 nike

编辑:请阅读更新。

我无法使用 boost 库编译某些程序,我被告知这是一个编译器错误。我从源代码编译了 GCC-5.1.0 并将其放在 /opt/gcc-5.1.0/ 中,并添加了 /opt/gcc-5.1.0/bin$PATH。我还必须将内核从 4.3.0 降级到 4.2.6,VMWare 工作站才能正常工作。

我无法安装由我编写的内核编译脚本生成的内核头文件:
dpkg -i/kernel/Kernel4.2.6/linux-headers-4.2.6.deb

输出:

Unpacking linux-headers-4.2.6 (1.0.0) ...
dpkg: dependency problems prevent configuration of linux-headers-4.2.6:
linux-headers-4.2.6 depends on libc6-amd64 (>= 2.14).

也就是说,运行 dpkg -l "libc6*" 会产生以下结果:

Desired=Unknown/Install/Remove/Purge/Hold
| Status=Not/Inst/Conf-files/Unpacked/halF-conf/Half-inst/trig-aWait/Trig-pend
|/ Err?=(none)/Reinst-required (Status,Err: uppercase=bad)
||/ Name Version Architecture Description
+++-==============-============-============-=================================
ii libc6:amd64 2.19-18+deb8 amd64 GNU C Library: Shared libraries
ii libc6:i386 2.19-18+deb8 i386 GNU C Library: Shared libraries
rc libc6-amd64 2.19-18+deb8 i386 GNU C Library: 64bit Shared libra
ii libc6-dev:amd6 2.19-18+deb8 amd64 GNU C Library: Development Librar
ii libc6-dev:i386 2.19-18+deb8 i386 GNU C Library: Development Librar
in libc6-dev-amd6 <none> i386 (no description available)
ii libc6-dev-i386 2.19-18+deb8 amd64 GNU C Library: 32-bit development
ii libc6-i386 2.19-18+deb8 amd64 GNU C Library: 32-bit shared libr
ii libc6-i686:i38 2.19-18+deb8 i386 GNU C Library: Shared libraries [
rc libc6-x32 2.19-18+deb8 amd64 GNU C Library: X32 ABI Shared lib
un libc6.1 <none> <none> (no description available)
un libc6.1-dev <none> <none> (no description available)

依赖似乎满足要求,不是吗?

我无法运行 apt-get install libc6-dev-amd64 因为它会产生:

dpkg: error processing archive /var/cache/apt/archives/libc6-dev-amd64_2.19-18+deb8u1_i386.deb (--unpack):
trying to overwrite '/usr/include/sys/xattr.h', which is also in package libc6-dev-i386 2.19-18+deb8u1

但是,从缓存中运行 dpkg --force-overwrite -d/var/cache/apt/archives/libc6-dev-amd64_2.19-18+deb8u1_i386.deb 似乎已经安装它。 dpkg -l "libc6*" 现在产生:

Desired=Unknown/Install/Remove/Purge/Hold
| Status=Not/Inst/Conf-files/Unpacked/halF-conf/Half-inst/trig-aWait/Trig-pend
|/ Err?=(none)/Reinst-required (Status,Err: uppercase=bad)
||/ Name Version Architecture Description
+++-==============-============-============-=================================
ii libc6:amd64 2.19-18+deb8 amd64 GNU C Library: Shared libraries
ii libc6:i386 2.19-18+deb8 i386 GNU C Library: Shared libraries
ii libc6-amd64 2.19-18+deb8 i386 GNU C Library: 64bit Shared libra
ii libc6-dev:amd6 2.19-18+deb8 amd64 GNU C Library: Development Librar
ii libc6-dev:i386 2.19-18+deb8 i386 GNU C Library: Development Librar
ii libc6-dev-amd6 2.19-18+deb8 i386 GNU C Library: 64bit Development
ii libc6-dev-i386 2.19-18+deb8 amd64 GNU C Library: 32-bit development
ii libc6-i386 2.19-18+deb8 amd64 GNU C Library: 32-bit shared libr
ii libc6-i686:i38 2.19-18+deb8 i386 GNU C Library: Shared libraries [
ii libc6-udeb 2.19-0ubuntu amd64 Embedded GNU C Library: Shared li
rc libc6-x32 2.19-18+deb8 amd64 GNU C Library: X32 ABI Shared lib
un libc6.1 <none> <none> (no description available)
un libc6.1-dev <none> <none> (no description available)

但是,我仍然无法安装内核头文件,出现同样的错误。

作为一个似是而非的相关问题,在编译了一个非常简单的程序检查依赖关系之后:

#include <cstdlib>
#include <memory>
#include <boost/asio.hpp>
#include <linux/limits.h>

int main(int argc, char **argv){
return 0;
}

它似乎编译正确,但运行 ./a.out 会产生:

./a.out: /usr/lib/x86_64-linux-gnu/libstdc++.so.6: version `GLIBCXX_3.4.21' not found (required by ./a.out)
./a.out: /usr/lib/x86_64-linux-gnu/libstdc++.so.6: version `CXXABI_1.3.9' not found (required by ./a.out)

更新:似乎没有任何效果。我已经尝试安装 libc6-dev 和其他 eglib 库的实验版本,现在我无法卸载、更改或对它们执行任何操作,以免遇到删除以下包的情况:

WARNING: The following essential packages will be removed.
This should NOT be done unless you know exactly what you are doing!
apt libapt-pkg4.12 (due to apt) libc6 (due to apt) libgcc1 (due to apt)
libstdc++6 (due to apt) debian-archive-keyring (due to apt) gnupg (due to
apt) base-files base-passwd libdebconfclient0 (due to base-passwd) bash
debianutils (due to bash) dash (due to bash) libncurses5 (due to bash)
libtinfo5 (due to bash) bsdutils libsystemd0 (due to bsdutils) coreutils
libacl1 (due to coreutils) libattr1 (due to coreutils) libselinux1 (due to
coreutils) dpkg (due to dash) diffutils libbz2-1.0 (due to dpkg) liblzma5
(due to dpkg) zlib1g (due to dpkg) tar (due to dpkg) e2fsprogs e2fslibs (due
to e2fsprogs) libblkid1 (due to e2fsprogs) libcomerr2 (due to e2fsprogs)
libss2 (due to e2fsprogs) libuuid1 (due to e2fsprogs) util-linux (due to
e2fsprogs) findutils grep libpcre3 (due to grep) gzip hostname init
systemd-sysv (due to init) libc-bin login libaudit1 (due to login) libpam0g
(due to login) libpam-runtime (due to login) libpam-modules (due to login)
mount libmount1 (due to mount) libsmartcols1 (due to mount) ncurses-bin
perl-base sed sysvinit-utils startpar (due to sysvinit-utils) initscripts
(due to util-linux) tzdata (due to util-linux) libslang2 (due to util-linux)

显然我不想卸载这些,但我需要重新安装 libc6。

最佳答案


如果您使用 g++ 5.1.0 版编译您的应用程序,编译器将知道它自己的 libstdc++.so 的路径。 (在/opt/中)。

但您的应用程序 (a.out) 将在 LD_LIBRARY_PATH 中查找 libstdc++.so.6

您可以像 $ export LD_LIBRARY_PATH=/opt/gcc-5.1.0/lib:$LD_LIBRARY_PATH && ./a.out 一样运行 a.out


关于c++ - 无法编译内核头文件(libc6-amd64 依赖项),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33813343/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com