如何使用当前版本,
使用正确版本的依赖项,而不是使用包管理器(如yum,rpm,apt,dpkg),而不是使用共享库,逐个安装GCC(GNU编译器集合)?
典型的开发人员可能希望以典型的方式安装GCC,使用您的包管理器(yum,rpm,apt,dpkg,port,brew等)或按照此处的说明进行操作(http://gcc.gnu.org/wiki/ InstallingGCC).
我的问题是如何一块一块地安装GCC,没有共享库.
GCC取决于:
我的系统上安装了两个gcc编译器,一个是gcc 4.1.2(默认),另一个是gcc 4.4.4.我如何检查所使用的libc版本gcc 4.4.4,因为它/lib/libc.so.6显示了所使用的glibc gcc 4.1.2,因为它是默认的编译器.
我没有给-Wl,-rpath=$HOME/local/gcc52/lib64每次从源代码构建的GCC 5.2调用,而是spec以这种方式修改了它的文件:
*link_command:
%{!fsyntax-only:%{!c:%{!M:%{!MM:%{!E:%{!S: %(linker) -rpath=%:getenv(HOME /local/gcc52/lib64) ...
Run Code Online (Sandbox Code Playgroud)
但这取决于我的具体安装$HOME/local/gcc52.有没有更好的方法来引用调用的GCC本身的安装路径?
本手册页对我帮助不大:
前段时间,我决定升级到GCC 4.8,以便尽早开始使用某些c ++ 11功能.不过,我有点偏执,并且在几天前的一个项目之前没有真正使用任何新功能(新编译器似乎工作正常,但可能只是因为我没有使用任何新功能.)
在这个新项目中,当我用= std = c ++ 11标志编译时,我没有遇到任何问题.但是,在运行时,我收到错误:
./main: /usr/lib/i386-linux-gnu/libstdc++.so.6: version找不到GLIBCXX_3.4.18'(./ main要求)`
我认为链接到与GCC 4.8相关联的更现代的libstdc ++库存在问题,但我不能在我的生活中弄清楚如何解决这个或适当的库应该在哪里.我记得象征性地将g ++和gcc二进制文件链接到gcc-4.8,它似乎正在工作,因为g++ -v返回:
Using built-in specs. COLLECT_GCC=g++ COLLECT_LTO_WRAPPER=/app/gcc/4.8.0/libexec/gcc/i686-pc-linux-gnu/4.8.0/lto-wrapper Target: i686-pc-linux-gnu Configured with: ./gcc-4.8.0/configure --prefix=/app/gcc/4.8.0 Thread model: posix gcc version 4.8.0 (GCC)
另一个在线线程让我看看ldd程序的输出,它确实告诉我链接的libstdc ++库的目录结构与二进制文件的目录结构不同.但是,我无法libstdc++在后者中找到合适的库,所以我不确定在哪里查看.输出ldd main是:
./main: /usr/lib/i386-linux-gnu/libstdc++.so.6: version找不到GLIBCXX_3.4.18'(./main要求)linux-gate.so.1 =>(0xb7791000)libstdc ++.so.6 => /usr/lib/i386-linux-gnu/libstdc++.so.6(0xb768e000 )libm.so.6 => /lib/i386-linux-gnu/libm.so.6(0xb7662000)libgcc_s.so.1 => /lib/i386-linux-gnu/libgcc_s.so.1(0xb7644000)libc .so.6 => /lib/i386-linux-gnu/libc.so.6(0xb749b000)/lib/ld-linux.so.2(0xb7792000)`
我不确定这到底出了什么问题,我会继续谷歌搜索并寻找答案,但是你们提供的任何帮助都将不胜感激.如果有任何问题不清楚或者我忘了一些信息,请告诉我,我会尝试添加它.非常感谢!
考虑在Centos 7虚拟机或容器中构建和发布C++项目时的情况.默认gcc为Centos 7是4.8.为了允许开发人员使用现代C++,最新版本gcc(例如6.3)安装在作为CI服务器运行的Centos 7中.这提供了-std=c++14支持.
[builder@f7279ae9f33f build (master %)]$ /usr/bin/c++ -v 2>&1 | grep version
gcc version 4.8.5 20150623 (Red Hat 4.8.5-28) (GCC)
[builder@f7279ae9f33f build (master %)]$ /opt/rh/devtoolset-6/root/usr/bin/c++ -v 2>&1 | grep version
gcc version 6.3.1 20170216 (Red Hat 6.3.1-3) (GCC)
export CXX=/opt/rh/devtoolset-6/root/usr/bin/c++
make all -j4
...
Run Code Online (Sandbox Code Playgroud)
这是编译和链接命令的简短示例:
[ 78%] Building CXX object CMakeFiles/ucsdos.dir/src/merge_operator_string.cpp.o
/opt/rh/devtoolset-6/root/usr/bin/c++ -Ducsdos_EXPORTS -I/home/builder/src/dos/libucsdos/./src -I/home/builder/src/dos/libucsdos/./include -I/home/builder/src/dos/libucsdos/build/schema/cpp -I/home/builder/src/dos/libucsdos/build/schema -isystem /usr/local/include -O2 -g -DNDEBUG -fPIC -frtti …Run Code Online (Sandbox Code Playgroud)