编辑:请阅读更新。
我无法使用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。
答案 0 :(得分:1)
如果使用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
答案 1 :(得分:0)
关于您遗失的{crt1.o,crti.o,-lc = libc.so,crtn.o}:这些是使用$FileCount = (Get-ChildItem C:\MainFolder).count
Get-ChildItem C:\MainFolder -r | Foreach -Begin {$i = $j = 0} -Process {
if ($i++ % $FileCount -eq 0) {
$dest = "C:\Child$j"
md $dest
$j++
}
Move-Item $_ $dest
}
进行编译所需的32位文件
→→http://www.cyberciti.biz/tips/compile-32bit-application-using-gcc-64-bit-linux.html
→gcc -m32