centos7怎么编译安装gcc-c++

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了centos7怎么编译安装gcc-c++相关的知识,希望对你有一定的参考价值。

方法/步骤
1
yum install glibc-static libstdc++-static -y
安装c和c++的静态库(据说如果系统中缺少libc.a和libstdc++.a编译时会出错,但是我没有那么多闲情逸致去试,实践过的朋友可以回复一下,分享一下经验,让大家都长长见识)

2
下载解压gcc,我的gcc目录是gcc-4.8.0
3
进入gcc目录,执行:
./contrib/download_prerequisites
这个神奇的脚本文件会帮我们下载、配置、安装那三个依赖的库。可以节约我们大量的时间和精力。
4
你以为这三个库自动下载了、自动make install了就没事了吗?错!
很多人在编译gcc的时候出现各种奇奇怪怪的错误就是这步没有做好。
它们还不在.so文件的搜索路径里面,需要加进去,最后切记切记一定要执行一下ldconfig。
大致做法为:
1,找到你的共享库文件被install到哪个目录了(updatedb+locate命令)。
2,如果你的库不是直接放在/lib或/usr/lib下,需要修改/etc/ld.so.conf文件,加入你的共享库的路径
3,如果在2中添加了共享库路径,切记要执行一下ldconfig,更新响应cache文件让系统能找到你的共享库。
5
建立临时目录,这个目录用以存放编译时的大量临时文件,是文档要求中必须的。
我是在gcc-4.8.0下建立了一个名为gcc-build-4.8.0的目录,进入它。
mkdir gcc-build-4.8.0
cd gcc-build-4.8.0
配置gcc编译选项
6
强烈建议阅读INSTALL目录下的说明文档,尤其是configure.html,以确定你的编译选项。
比较基本的选项有--enable-languages,说明你要让你的gcc支持那些语言,--disable-multilib不生成编译为其他平台可执行代码的交叉编译器。--disable-checking生成的编译器在编译过程中不做额外检查,也可以使用--enable-checking=xxx来增加一些检查。
网上还说了什么--with-gmp、--with-mpfr、--with-mpc这三个选项,但是如果你3,4步做好了,就不要配了,反之你还是老实点吧别抱侥幸心理了。
调用gcc-4.8.0目录下的configure文件:
例如:
../configure --enable-checking=release --enable-languages=c,c++ --disable-multilib
7
执行
../make #不解释

执行编译命令(#在8核的虚拟机上进行编译,每个核分配2个编译任务)
make -j16
make install编译过程CPU 核基本100%占用,整个编译用时11分50秒。
检查gcc版本

#你就等吧少年,建议晚上睡觉前做
当然上面三步一定要在前一步顺利结束的情况下进行,如果哪一步出错了,结果都显示error了,就不要再做后面的了。在shell的输出里搜索"error"看具体的出错点是什么,baidu、google一下为什么。
如果你求稳的话,可以在make install之前先make check一下。
参考技术A 在CentOS7和RHEL7系统上如何安装GnuGCC编译器和相关的工具比如:autoconf,automake,flex,c++编译器等工具。我们可以通过在centos或者rhel7系统上安装下面的软件包来搭建基本的开发环境。    autoconf    automake    binutils    bison    flex    gcc    gcc-c++    gettext    libtool    make    patch    pkgconfig    redhat-rpm-config    rpm-build    rpm-sign  显示当前系统的yumgroup,使用下面的命令:  yumgrouplist  命令输出:  [root@itsprite/]#yumgrouplist  Loadedplugins:fastestmirror,langpacks  Thereisnoinstalledgroupsfile.  Mayberun:yumgroupsmarkconvert(seemanyum)  Loadingmirrorspeedsfromcachedhostfile    *base:mirrors.btte.net    *extras:mirrors.btte.net    *updates:mirrors.btte.net  Availableenvironmentgroups:    MinimalInstall    InfrastructureServer    FileandPrintServer    BasicWebServer    VirtualizationHost    ServerwithGUI    GNOMEDesktop    KDEPlasmaWorkspaces    DevelopmentandCreativeWorkstation  AvailableGroups:    CompatibilityLibraries    ConsoleInternetTools    DevelopmentTools    GraphicalAdministrationTools    LegacyUNIXCompatibility    ScientificSupport    SecurityTools    SmartCardSupport    SystemAdministrationTools    SystemManagement  Done  安装GCC和开发环境  输入下面的命令:  yumgroupinstall"DevelopmentTools"  安装完之后,使用下面的命令来验证gcc是否安装成功:  whereisgcc  命令输出:  [root@itsprite/]#whereisgcc  gcc:/usr/bin/gcc/usr/lib/gcc/usr/libexec/gcc/usr/share/man/man1/gcc.1.gz  输入下面的命令来查看gcc工具的版本:  [root@itsprite/]#gcc--version  gcc(GCC)4.8.220140120(RedHat4.8.2-16)  Copyright(C)2013FreeSoftwareFoundation,Inc.  Thisisfreesoftware;seethesourceforcopyingconditions.ThereisNO  warranty;notevenforMERCHANTABILITYorFITNESSFORAPARTICULARPURPOSE.  测试GCC编译器  下面我们使用刚安装好的GCC编译器来编译一个c语言程序.  创建下面的test.c程序:  #include  intmain(void)    printf("HelloWorld!\n");    return0;    输入命令编译test.c文件:  gcctest.c-otest  执行编译后的文件:   ./test  HelloWorld!本回答被提问者采纳 参考技术B 不是yum install gcc-c++*吗

centos7 编译安装 mysql8

yum -y install gcc gcc++ gcc-c++ wget make libxml2 libxml2-devel  openssl openssl-devel  curl-devel  libjpeg-devel  libpng-devel freetype-devel bison autoconf cmake  bison-devel libaio-devel git  ncurses-devel pcre pcre-devel libffi-devel libffi uuid uuid-devel libuuid-devel gperf

wget -c https://dl.bintray.com/boostorg/release/1.68.0/source/boost_1_68_0.tar.gz

wget -c https://dev.mysql.com/get/Downloads/MySQL-8.0/mysql-8.0.12.tar.gz

tar -zxvf mysql-8.0.12.tar.gz

mv boost_1_68_0.tar.gz mysql-8.0.12

cd mysql-8.0.12

mkdir configure

cd configure

cmake .. -DBUILD_CONFIG=mysql_release -DINSTALL_LAYOUT=STANDALONE -DCMAKE_BUILD_TYPE=RelWithDebInfo -DENABLE_DTRACE=OFF -DWITH_EMBEDDED_SERVER=OFF -DWITH_INNODB_MEMCACHED=ON -DWITH_SSL=bundled -DWITH_ZLIB=system -DWITH_PAM=ON -DCMAKE_INSTALL_PREFIX=/usr/local/mysql-8.0.12/ -DINSTALL_PLUGINDIR="/usr/local/mysql-8.0.12/lib/plugin" -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci -DWITH_EDITLINE=bundled -DFEATURE_SET=community -DCOMPILATION_COMMENT="MySQL Server (GPL)" -DWITH_DEBUG=OFF -DWITH_BOOST=..
#如果编译出错  rm -rf CMakeCache.txt 后重新编译

make & make install

#给mysql 创建用户
useradd -M -s /sbin/nologin mysql  #-M 不要自动建立用户的登入目录  -s 用户登入后所使用的shell

mkdir -p /mysql/mysqldata

mkdir -p /var/log/mysql-8.0.12

touch /var/log/mysql-8.0.12/mysql-8.0.12.error.log
touch /var/log/mysql-8.0.12/mysql-8.0.12.error.log0
touch /var/log/mysql-8.0.12/mysql-8.0.12.pid
touch /var/log/mysql-8.0.12/mysql-8.0.12.pid0

chown -R mysql:mysql  /var/log/mysql-8.0.12

#始化数据库 执行完后会给你生成一个密码
/usr/local/mysql-8.0.12/bin/mysqld --initialize --user=mysql --datadir=/mysql/mysqldata

vi /etc/my.cnf
[mysqld]
datadir=/mysql/mysqldata
socket=/tmp/mysql.sock
port=3306
user=mysql
basedir=/usr/local/mysql-8.0.12
#symbolic-links为0表示数据库或表不可以存储在my.cnf中指定datadir之外的分区或目录
symbolic-links=0
pid-file=/var/log/mysql-8.0.12/mysql-8.0.12.pid0
log-error=/var/log/mysql-8.0.12/mysql-8.0.12.error.log0
[mysqld_safe]
log-error=/var/log/mysql-8.0.12/mysql-8.0.12.error.log
pid-file=/var/log/mysql-8.0.12/mysql-8.0.12.pid

#直接启动mysql 
/usr/local/mysql-8.0.12/bin/mysqld --defaults-file=/etc/my.cnf &

ln -s /usr/local/mysql-8.0.12/bin/mysql /usr/local/bin/mysql

#这时可以通过mysql -uroot -p 来测试是否可以连接上  密码是之前初始化数据库时生成的密码
#第一次登录进去需要你修改密码,你可以执行下面的命令
alter  user ‘root‘@‘localhost‘ identified by ‘nihoa‘;

#设置启动脚本
cp /usr/local/mysql-8.0.12/support-files/mysql.server /etc/init.d/mysqld

vi /etc/init.d/mysqld  #修改其中的三个变量为你实际设置的变量
basedir=/usr/local/mysql-8.0.12
datadir=/mysql/mysqldata
mysqld_pid_file_path=/var/log/mysql-8.0.12/mysql-8.0.12.pid0

#现在可以使用/etc/init.d/mysqld 来启动及停止mysql了
/etc/init.d/mysqld start
/etc/init.d/mysqld stop

以上是关于centos7怎么编译安装gcc-c++的主要内容,如果未能解决你的问题,请参考以下文章

mysql5.5编译安装

centos7 编译安装 mysql8

CentOS7.2编译安装OpenSSH 7.8

CentOS7.2编译安装OpenSSH 7.8

CentOS7.2编译安装OpenSSH 7.8

linux安装gcc报错,该怎么解 E: 未发现软件包 gcc-c+ E: 无法按照正则表达式 gcc-c+ 找到任何软件包