【问题标题】:How can I obtain a newer GCC? I don't have root, and can't compile it (memory error)如何获得更新的 GCC?我没有root,无法编译(内存错误)
【发布时间】:2016-09-26 20:24:47
【问题描述】:

我在运行旧版本 GCC 的机器上拥有一个共享帐户。我没有根。当我尝试编译 GCC 时,由于以下命令的内存使用,我的构建过程被终止:

build/genattrtab ../../../work/gcc-6.1.0/gcc/common.md ../../../work/gcc-6.1.0/gcc/config/i386/i386.md insn-conditions.md \
    -Atmp-attrtab.c -Dtmp-dfatab.c -Ltmp-latencytab.c

我真的很想能够在这台机器上编译一些需要更新 GCC 的软件。任何建议表示赞赏。

【问题讨论】:

    标签: linux gcc build


    【解决方案1】:

    您可以为任何主要发行版手动解压其中一个 GCC 软件包,尝试使用与您的发行版最匹配的软件包。这些可安装的软件包只是带有一些元数据和安装脚本的 tar 文件。您可以解压缩它们并提取您需要的二进制文件。请记住,您可能需要的不仅仅是 gcc 包。一些发行版将他们的开发工具切成大量的小包(gcc、g++、binutils、gdb)

    另一个好的来源是使用嵌入式供应商使用的预构建 gcc 工具链,有时这些供应商包括主机版本的 gcc 和交叉编译器。例如,Android NDK 就是这样的发行版之一。

    最后,您可以在另一台不受限制的机器上编译 GCC,并将生成的二进制文件复制到您的限制机器。与解压可安装包的第一种方法一样,尽量找到与您的限制机器相似的机器。您可以使用 vagrant 和 docker 等工具来设置目标机器的关闭副本。 Vagrant 和 docker 有很多预先构建的模板,您可以使用它们作为创建所需机器的起点。

    【讨论】:

    • 我多次尝试使用官方软件包,但由于依赖关系和链接器路径,我无法到达任何地方。 :( 这台机器在 Ubuntu 12.04 上,没有我需要的版本的反向移植。我将不得不研究其他选项。
    • ?你有哪个操作系统?这两个命令将显示:1) uname -m 2) cat etc/issue .... 并且:您可能不需要最新的 gcc = 6.x。 gcc-4.8.x 或 4.9.x 可能会做得更好。 ... ?您当前的 gcc 是哪个版本?
    • x86_64,Ubuntu 12.04.5 LTS。我确实尝试下载 4.8 debs,但我想我在编译时迷失了如何让它们与所有环境变量和依赖项一起工作。
    • 你下载了哪个deb。 12.04 没有 4.8 的官方 deb,它停在 4.7 packages.ubuntu.com/search?suite=precise&keywords=gcc-4.7 但是这里有一个 4.9 launchpad.net/~ubuntu-toolchain-r/+archive/ubuntu/test/+build/… 的后向 PPA
    • 我认为问题在于实际使用这些包时。较新的 GCC 具有 libatomic,但我尝试运行的构建脚本抱怨它找不到(ld 错误)。我正在使用 dpkg -x 将内容提取到 ~/root 中。似乎有一组特定的先决条件、路径和环境变量我需要准备好——但我找不到做这样的事情的清单。因此,就您最初的观点而言,在 Ubuntu 12.04 上设置 VM 并在那里编译可能会更好。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-04-27
    • 1970-01-01
    • 1970-01-01
    • 2015-06-28
    • 2017-11-29
    • 2019-05-21
    相关资源
    最近更新 更多