linux - 在家里安装 gcc

标签 linux gcc g++

我有一台电脑在工作,我没有 sudo 权限(它由系统管理员管理),我只有 /home/my_user_name/ 的写入权限我们使用 Scientific Linux 版本 6.3,gcc 版本 4.4.7。我想编译我自己的 gcc 4.9.1,将其安装在 /home/my_user_name/local/gcc/ 中,并能够与旧的 gcc 4.4.7 同时使用。

我知道默认情况下,g++ 在查看用户指定的目录之前会在 /usr//usr/local/ 下检查头文件和库。此外,可执行文件会在运行时检查共享对象的默认路径。 我想要的是让 gcc-4.4.7 使用它自己的头文件、库、链接器等,让 gcc-4.9.1 使用它自己的套件,而不会在 /usr 中看到这些东西的旧版本/ 等等。对于可执行文件,自动知道在哪里寻找编译它们的库。我还希望两个编译器同时可用。我还希望它适用于 gfortran 和 gcc 中包含的其他编译器。

这能做到吗?设置它的最佳方法是什么?我需要知道什么或担心什么?

谢谢

最佳答案

Can this be done? What is the best way to set this up? What do I need to know or worry about?

是的,这是可以做到的。事实上,在一台机器上安装多个版本的 GCC 是很常见的。您可以在路径 /home/my_user_name/local/gcc/ 中下载并安装 gcc4.9。您可以引用以下链接了解如何使用源文件安装 GCC4.9。

How do I compile and run GCC 4.9.0?

完成这些步骤后,您应该能够通过提供完整路径来使用 GCC4.9.1。最好的方法可能是编写一个 makefile 并使用它来避免长类型。

如果你的 GCC4.9 安装一切正常,下面的命令应该给出这样的输出:

$/home/mantosh/gcc-4.9.1/bin/gcc -v
Using built-in specs.
COLLECT_GCC=/home/mantosh/gcc-4.9.1/bin/gcc
COLLECT_LTO_WRAPPER=/home/mantosh/gcc-4.9.1/libexec/gcc/x86_64-unknown-linux-gnu/4.9.1/lto-wrapper
Target: x86_64-unknown-linux-gnu
Configured with: /home/mantosh/objdir/../gcc-4.9.1/configure --prefix=/home/mantosh/gcc-4.9.1 --disable-multilib
Thread model: posix
gcc version 4.9.1 (GCC) 


$ gcc -v
Using built-in specs.
COLLECT_GCC=gcc
COLLECT_LTO_WRAPPER=/usr/lib/gcc/x86_64-linux-gnu/4.8/lto-wrapper
Target: x86_64-linux-gnu
Configured with: ../src/configure -v --with-pkgversion='Ubuntu 4.8.1-2ubuntu1~12.04' --with-bugurl=file:///usr/share/doc/gcc-4.8/README.Bugs --enable-languages=c,c++,java,go,d,fortran,objc,obj-c++ --prefix=/usr --program-suffix=-4.8 --enable-shared --enable-linker-build-id --libexecdir=/usr/lib --without-included-gettext --enable-threads=posix --with-gxx-include-dir=/usr/include/c++/4.8 --libdir=/usr/lib --enable-nls --with-sysroot=/ --enable-clocale=gnu --enable-libstdcxx-debug --enable-libstdcxx-time=yes --enable-gnu-unique-object --enable-plugin --with-system-zlib --disable-browser-plugin --enable-java-awt=gtk --enable-gtk-cairo --with-java-home=/usr/lib/jvm/java-1.5.0-gcj-4.8-amd64/jre --enable-java-home --with-jvm-root-dir=/usr/lib/jvm/java-1.5.0-gcj-4.8-amd64 --with-jvm-jar-dir=/usr/lib/jvm-exports/java-1.5.0-gcj-4.8-amd64 --with-arch-directory=amd64 --with-ecj-jar=/usr/share/java/eclipse-ecj.jar --enable-objc-gc --enable-multiarch --disable-werror --with-arch-32=i686 --with-abi=m64 --with-multilib-list=m32,m64 --with-tune=generic --enable-checking=release --build=x86_64-linux-gnu --host=x86_64-linux-gnu --target=x86_64-linux-gnu
Thread model: posix
gcc version 4.8.1 (Ubuntu 4.8.1-2ubuntu1~12.04) 

所以从上面我们可以看出 GCC4.8 是我的默认编译器,GCC4.9.1 是安装的其他编译器。第一个将默认编译 gcc(在我的例子中是 gcc4.8),在第二种情况下由 gcc4.9.1 编译。因为我们在命令行上给出了完整的路径。

$g++ test.cpp
$/home/mantosh/gcc4.9.1/bin/g++  test.cpp

关于linux - 在家里安装 gcc,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26070784/

相关文章:

php - 安装Xdebug后phpinfo中的OLDPWD是什么?

linux - 准系统 Linux 服务器安装

php - Mysql子日期查询: retrieve records from yesterday/last week/etc

c++ - c++11 模式下奇怪的 g++ 预处理器行为

c++ - 模板代码增加二进制文件的大小

c++ - C++ 的 3D 图形绘图

c - 检索库运行时

c++ - 哪个 gcc 和 g++ 版本支持 c 和 c++ 的哪个标准?

目标名称的 Xcode/GCC 预定义宏?

c++ - 解释 GNU C++ filebuf::underflow() 与 filebuf::seekoff() 交互的变化