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++ - iOS - GCC 无法看到似乎清晰可见的功能

c - 如何在 Code::Blocks 中添加另一个 C 文件

unix - 查看 UNIX 中的文件权限概念

java - Eclipse IDE、Ubuntu、Java如何将程序编译为独立运行?

c++ - 编译器如何以不同于常规函数的方式对待 lambda?

reactjs - Webpack HRM typescript 重新编译问题

使用 gcov 交叉分析,但 GCOV_PREFIX 和 GCOV_PREFIX_STRIP 被忽略

c++ - 如何处理 C++/GNU 工具链中的链接器错误?

linux - 使用 tcp 2222 :22 to copy things 时,用于内核开发的 QEMU 引导不起作用

c++ - 使用 C::B 编译我的第一个应用程序