gcc - Ubuntu (12.10) 和 GCC 4.7/4.8 有什么问题?

标签 gcc ubuntu compilation ubuntu-12.04 gcc4.7

由于安装了多个版本的 GCC 和 Ubuntu,我遇到了安装 GCC 所需的几个头文件和目标文件的路径和命名问题。

描述:安装 ubuntu(例如,在我的案例中为 12.04)并安装 gcc 的所有先决条件后,我运行以下命令:

sudo mkdir /usr/local/stow/gcc-4.8.0
./configure --prefix /usr/local/stow/gcc-4.8.0
make
sudo make install

为了完整起见,剩下的安装过程:

cd /usr/local/stow
sudo stow -t /usr/local/ gcc-4.8.0
gcc -v

但是,这种安装 gcc 的简单而正确的方法在“make”步骤中出现了一些问题,并出现以下错误消息:

1.) 'stubs.h' 的问题

/usr/include/gnu/stubs.h:7:27: fatal error: gnu/stubs-32.h: No such file or directory

可以通过将以下命令添加到 ~/.bashrc 来修复:

if [ -z "$CPATH"]; then
        export CPATH="/usr/include/i386-linux-gnu"
else
        export CPATH=$CPATH:"/usr/include/i386-linux-gnu"
fi

2.) 'crti.o'、'crtn.o' 和 'crt1.o' 的问题

/usr/bin/ld: cannot find crti.o: No such file or directory
/usr/bin/ld: cannot find crtn.o: No such file or directory
/usr/bin/ld: cannot find crt1.o: No such file or directory

可以用非常难看的解决方案来修复:

sudo ln -s /usr/lib/i386-linux-gnu/crti.o /usr/lib/i386-linux-gnu/crtn.o /usr/lib/i386-linux-gnu/crt1.o /usr/lib

因为 - 我不知道为什么 - 以下命令无法解决“sudo make install”链接步骤中的问题

if [ -z "$LIBRARY_PATH"]; then
    export LIBRARY_PATH="/usr/lib/${multiarch}"
else
    export LIBRARY_PATH=$LIBRARY_PATH:"/usr/lib/${multiarch}"
fi

if [ -z "$LD_LIBRARY_PATH"]; then
    export LD_LIBRARY_PATH="/usr/lib/${multiarch}"
else
    export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:"/usr/lib/${multiarch}"
fi

(通过这些解决方案,我可以在 Ubuntu 12.04 上编译 GCC-4.7.2。- 我在 Ubuntu 12.04 上编译 GCC-4.8.0 时仍然有问题,但这是不同的话题。)

我的问题是:有人知道我们遇到这些问题的原因/背景吗?有人知道合适的解决方案吗? (对于“正确的解决方案”,我的意思是不需要设置环境变量或符号链接(symbolic link)库到不同目录的解决方案。对我来说,这些变化是丑陋的,因为它们需要对系统进行更改,而这些更改可能无法追溯或重做。)

最佳答案

在 GCC 源的根文件夹中执行 ./contrib/download_prerequisites 脚本。

关于gcc - Ubuntu (12.10) 和 GCC 4.7/4.8 有什么问题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15907055/

相关文章:

c++ - 如果我发布一个使用 IPP 库的 DLL,我是否也应该发布 IPP DLL?

c - 如何在 OS X 上运行 .mm 文件?

php - 在运行 php 7.0 的 ubuntu 16.04 上的 apache2 上找不到类 'OAuth'

ubuntu - 进行ROS2 colcon build时出现Python错误

python - 当 'go to declaration' 而不是使用其 remote_sources 中的一些过时的东西时,pycharm 不使用 vagrant box 中的 virtualenv

c++ - 扭曲的逻辑 : a global variable in one file refers to an extern variable but is also referred by that extern variable

android - 在 IntelliJ 中编译时找不到模块包

c++ - std::set 成员变量在类实例移动时复制而不是移动

c++ - GCC 无法向量化这个简单的循环 ('number of iterations cannot be computed' ) 却在同一代码中管理了一个类似的循环?

c - 未定义对 "only some math.h"函数的引用