最新CentOS服务器安装、部署oracle11grgcc安装汇总
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
C e n t O S服务器安装、部署o r a c l e11g r g c c
安装
下面这份安装说明是一个参照, 本人实际安装是在PC机上, CentOS6.3 i386上进行的.
IBM X3650 M3服务器Centos安装、部署Oracle11gR2、oracle 11g 浏览器
一、IBM X3650 M3服务器Centsos安装
1、准备Centos系统安装盘。
2、安装Centos 系统。
安装前准备好这些资料:比如服务器 IP 地址;子网掩码;默认网关;DNS 服务器;主机名。
直接设置 BIOS,插入光盘按步骤操作就行。
注意以下几点即可:语言选择简体中文;键盘默认;鼠标默认;安装类型默认;分区可以选择删除 Linux 分区并默认分区;设置静态 IP,取消 DHCP ;时区上海;给 root 设置密码;将所有可选包都勾选安装;关闭防火墙。
然后将服务器硬盘格式化,插入DVD的第一张盘启动,即可进入CentOS的安装程序。
光盘启动,出现“boot:”提示符,直接按回车进入图形安装界面。
选择skip跳过不测试光盘
语言选择界面中,如需要使用中文系统,则选择简体中文进行安装。
键盘选择为“美国英语式”。
之后的分区设置中,如果硬盘没有其他系统,可以选择删除所有分区,如果还有Windows系统的话,可以选择删除Linux分区。
接下来是网络配置,可以根据自己的实际情况来配置网络地址。
时区设定,根据自己所在的时区选择相应的城市。
接下来为root密码设置,因为root是系统管理员用户,因此要设置一个强密码,以防破解。
在安装应用软件界面,选择要安装的应用软件,点“可选的软件包”,选择需要安装的模块”。
例如:
在“服务器”中,勾选“万维网服务器”。
之后,系统会提示你需要那几张安装光盘,准备好这些盘。
接下来是安装过程,中途系统会提示换盘。
安装完成后,会进入一个配置界面。
在防火墙设置中,因为我们要架设网站,所以需要将HTTP端口打开。
然后可以创建一个非管理使用的个人帐号。
重启之后,就完成了安装,进入了CentOS的登录界面,输入登录用户和的密码进行登录。
输入用户名和密码之后,就进入了CentOS的主界面。
这次实践安装的是CentOS 6.3 i386版本,目标机器为一台Intel i5 CPU的PC机,内存4G,集成显卡(共享内存),可用内存3910728 kB。
特别之处:
1. 只使用了CentOS-6.3-i386-bin-DVD1。
2. 安装时,选择的是针对Developer的版本,其实在安装过程中,安装光盘
自带的组件不知道的一律选上。
3. 安装过程中设定了一个用户yzea,后面的登录系统时,都用这个用户登
录,需要用到root用户的,通过su来进行切换。
4. 安装过程大致相同,只需要在安装过程中根据提示进行操作就可以了。
二、部署 oracle11gr2
1、系统需要的运行环境
Cnetos安装结束,但是作为 Oracle 服务器,我们还需要确定安装的补丁。
这些补丁在安装 DVD 的 CentOS 目录下都可以找到。
当然也可以直接 yum 安装:
compat-db-4.2.52-5.1.i386.rpm;
compat-gcc-34-3.4.6-4.i386.rpm;
compat-gcc-34-c++-3.4.6-4.i386.rpm;
compat-libstdc++-33-3.2.3-61.i386.rpm;
gcc-4.1.2-44.el5.i386.rpm;
glibc-2.5-34.i386.rpm;
libaio-0.3.106-3.2.i386.rpm;
libXp-1.0.0-8.1.el5.i386.rpm;
libXp-devel-1.0.0-8.1.el5.i386.rpm;
openmotif-2.3.1-2.el5.i386.rpm;
openmotif-devel-2.3.1-2.el5.i386.rpm;
make-3.81-3.el5.i386.rpm;
setarch-2.0-1.1.i386.rpm。
(后面有说明)
这些有些可能已经被装上,但最好是挨个检查,全部装上。
有些包的安装需要下载其他依赖包.
电脑最好是能够上网的,yum通过互联网来安装要简单一些。
yum本来可以直接安装光盘上的rpm包。
但要麻烦一些。
要修改/etc/yum.respos.d./ CentOS-Media.repo配置文件,修改[c6-media] section
[c6-media]
name=CentOS-$releasever - Media
baseurl=file:///media/CentOS_6.3_Final/
file:///media/cdrom/
file:///media/cdrecorder/
gpgcheck=1
enabled=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6
并配合yum命令:
Yum –disablerepo = \* enablerepo=c6-media install rpm包名称.
通过yum –help可以查看帮助。
我们常用的yum命令有下面这些:
yum install rpm包名称―― 安装,如果有更新会执行更新
yum list rpm包名称―― 查看远程服务器上的可用的安装包
如果不知道安装包名称, 可以通过yum list *xxxx*的方式来查看有哪些安装包, 然后再输入确定的名称进行安装.
如果已经安装了, 远程有更新会更新, 已经安装了会现实机器上安装了rpm包的完整信息.
也可以通过:
rpm –qa |grep xxxx来查询哪些rpm包已经安装.
////////////////////////////////////////////////////////////
这里要说明一下:
1. setarch包, 在本人安装时,已经整合到util-linux-ng中, yum install setarch
时,最后会显示:
util-linux-ng-2.17.2-12.9.el6.i686 already installed and latest version
当时不确定行不行, 不过最后安装oracle成功, 说明确实OK.
2. 这里所需的包没有列完整, 还差几个包
a) libaio-devel
b) unixODBC-devel
c) pdksh
通过yum install的方式可以解决.
所幸的是oracle安装在执行环境检查时, 检查通过不, 你仍然可以就在当下立即yum,然后让oracle重新检查, 直到检查通过为止.
2、增加组和用户。
这里要增加 oracle 安装必须的数据库组和 oracle 用户。
因为 oracle 安装需要用到图形界面。
所以还要确定是不是装了图形界面 gnome 或者 kde。
如果没装的话,yum 一下。
# yum groupinstall "X Window System"
# yum groupinstall "X Window System" "GNOME Desktop Environment"
或者对 kde 情有独钟的朋友运行:
# yum groupinstall "X Window System" "KDE Desktop Environment"
我的系统装好后, 默认的GUI界面是GNOME的. 无所谓, 都可以.
重启。
root 登录,开始增加 oracle 的组和用户:
# groupadd oinstall // 添加oinstall组
# groupadd dba // 添加dba组
# groupadd oper // 添加oper组
// 添加oracle用户, 并将其添加到oinstall和dba组,oinstall为主组
# useradd -g oinstall -G dba oracle
# passwd oracle // 更改oracle用户密码
然后创建 Oracle 的安装目录,并把权限付给 oracle 用户:
# mkdir -p /opt/oracle11g
# chown -R oracle:oinstall /opt/oracle11g // 赋予所有权限
# chmod -R 775 /opt/oracle11g // 赋予读写权限
// 这里还有需要设置一下, 否则oracle在安装时建目录会失败
# chown oracle:oinstall /opt
# chmod 775 /opt
3、开始设置内核参数、系统变量和用户变量。
现在 oracle 用户和组都已经添加完毕,下面开始设置内核参数、系统变量和用户变量。
警告:要养成一个好习惯,修改任何文件之前一定要做个备份!尤其是在修改内核参数的时候!如果不甚,有可能导致系统启动失败!切记!
1)、修改内核参数。
先看下是否都有,有的话照这个修改,没有的就添加上去。
一般而言,在配置内核参数(gedit /etc/sysctl.conf)时,我们只需要修改kernel.shmmax.,为物理内存2倍。
查看物理内存grep MemTotal /proc/meminfo
# vi /etc/sysctl.conf 中添加以下行:
kernel.shmall = 2097152
kernel.shmmax = 2147483648 4294967295// 这里用的4GB内存大小4294967295可以, 32位系统, 不知道设置大于32位值Linux能不能访问得到. kernel.shmmni = 4096
# semaphors: semmsl, semmns, semopm, semmni
kernel.sem = 250 32000 100 128
fs.file-max = 65536
net.ipv4.ip_local_port_range = 1024 65000
net.core.rmem_default=262144
net.core.rmem_max=262144
net.core.wmem_default=262144
net.core.wmem_max=262144
按照上面的设置, oracle在检测环境时, 是通不过的. Oracle会生成一个sh文件, 用以修复这些参数. 运行oracle修复sh后, 上面加粗的参数的值如下:
net.ipv4.ip_local_port_range = 9000 65500
net.core.rmem_max=4194304
net.core.wmem_max=1048576
运行下面的命令使得内核参数生效:
# /sbin/sysctl -p
3)、修改 /etc/security/limits.conf。
vi /etc/security/limits.conf 在最下面添加如下内容:
#use for oracle
* soft nproc 2047
* hard nproc 16384
* soft nofile 1024
* hard nofile 65536
3)、修改 /etc/pam.d/login。
vi /etc/pam.d/login 在最下面添加如下内容:
session required pam_limits.so
4)、关闭 selinux、修改主机名字
关闭 selinux
#vi /etc/selinux/config
确保 SELINUX=disabled
修改hosts
[root@centos /]# vi /etc/hosts
# Do not remove the following line, or various programs
# that require network functionality will fail.
192.168.89.16 centos
// 本人机器名通过hostname命令可以查到
5)、修改当前用户变量(给 oracle 用户设置环境变量)。
用 oracle 用户登录,首先回到 oracle 的根目录。
$ cd (cd /home/oracle)
$ vi .bashrc
然后把下面这些加进去。
JAVA_HOME=/usr/java/jdk1.6.0_18
PATH=$JAVA_HOME/bin:$PATH
CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export JAVA_HOME
export PATH
export CLASSPATH
后面的 jdk1.6.0_18 这个是安装后生成的目录,也就是版本号,可以根据你安装的版本修改,当然要按照这个目录的名字来。
如果你用的和我一样的安装文件,那么,就不用修改了。
这里设置JAVA运行环境, 稍显麻烦, 可能是由于安装时选择Java相关的包, 默认安装了OpenJDK, 后来才去看了OpenJDK, 其实在X86机器上, OpenJDK跟Sun官方JDK是基本上没有什么差别的, 都是sun发布的, 没什么区别. 不过我还是用的JDK.
首先要卸载OpenJDK. 如何卸载OpenJDK?
rpm –qa |grep java*
rpm –qa |grep jdk
会看到所有与openJDK的rpm包都会被列出来.
卸载: rpm –e found_openjdk_package_name
在oracle的官网下载jdk, 我用的是jdk1.6.0_43, 安装包名称: jdk-6u43-linux-i586-rpm.bin, 网上有写如何安装的说明, 可能是已经改进了, 直接运行./ jdk-6u43-linux-
i586-rpm.bin就可以自动安装好了. jdk-6u43-linux-i586-rpm.bin解开后, 会有很多个rpm包, 会产生在该bin文件的目录下. 我的设置如下:
printf "set java env\n"
export JAVA_HOME=/usr/java/jdk1.6.0_43
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$CLASSPATH export PATH=$PATH:$JAVA_HOME/bin:$JAVA_HOME/jre/bin
printf "set java env success\n"
6)、编辑 /etc/profile 文件。
编辑 # vi /etc/profile 文件,设置oracle的环境变量,添加如下部分:要给这个目录 orcale 的安装权限。
最好把 database 安装文件所在目录也给 oracle 用户设置一下权限。
设置权限的方法看上面建立 orcale 目录的方法。
if [ $USER = "oracle" ];then
if [ $SHELL = "/bin/ksh" ]; then
ulimit -p 16384 // 设置pipe缓冲区大小
ulimit -n 65536// 设置打开文件句柄的最大限制
else
ulimit -u 16384 -n 65536
fi
fi
可以通过print来观看这里的if else到底执行的那条路径. –执行的是”true”路径Ulimit: Provides control over the resources available to the shell and to processes started by it.
这个设置有问题, 在CentOS6.3上面:
-p参数: The pipe size in 512-byte blocks (this may not be set)
source /etc/profile来执行你编辑好的配置文件, 可以看到执行到ulimit -p 16384会报错. 在安装oracle之前, 由于担心pipe cache size为4K在安装时会遇到问题. Baidu 了一下, 没有提到相关问题的. 后来的实际安装表明, 不设置也没问题. Pipe一般的功能是用来做通信, 4K的cache是有点小, 但也没有问题.
4、修改oracle用户 .bash_profile
Vi .bash_profile
export ORACLE_BASE=/opt
export ORACLE_HOME=$ORACLE_BASE/oracle11g
export ORACLE_SID=ussdtest // 你自己指定的SID
export PATH=$PATH:$ORACLE_HOME/bin
export PATH=$PATH:$HOME/bin:$ORACLE_HOME/bin
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/usr/lib
从后面的安装进程来看, 其实这些可以不必设定, oracle的安装界面中, 可以指定, 这里指定好之后, oracle只不过讲这些读出来, 你在安装时就不必填了而已.
5、创建安装目录设置权限 // 前面已经创建
mkdir -p /opt/oracle11g // 这里完全没有必要用-p参数, opt是linux缺省目录
chown -R oracle:oinstall /opt/oracle11g
6、修改/etc/redhat-release文件避免Oracle安装校验,内容如下:
redhat-4
// 没有必要修改, 我的是CentOS release 6.3 (Final), 没什么问题
马上就要进入oracle安装了, 为了防止安装过程不成功, 导致系统环境被破坏, 听说有同事说以前在oracle安装时, 遇到这种情况, 导致系统被迫反复重新做. 鉴于前车之鉴,由于比较恐惧, 找了个备份linux的方法. 参见另外下面这篇文章. 备份linux.
Linux备份.rar
7、切换oracle用户,放入Oracle11gR2安装盘到光驱,进行oracle11gR2软件安装。
// 我按照windows的思维, 想用root安装岂不是不存在权限的问题, 更容易成功.
// oracle会报错, 不能root用户安装, 哈哈.
CentOS下加载/挂载光驱
mkdir /mnt/cdrom
mount /dev/cdrom /mnt/cdrom挂接
fuser -km /mnt/cdrom/卸载
#防止乱码
export LANG=en_US
这样不能解决乱码的问题. 因为我的linux环境是中文的(安装时选择的), oracle安装程序总是加载中文资源, 在网上查找解决办法, 整得很复杂, 一会要cp到jre下, 一会要cp到安装包下. 其实不用这么复杂.
mkdir –p /usr/share/fonts/zh_CN/TrueType
zysong.ttf将这个字体文件拷贝到上面建的目录下, 再运行runInstaller, OK.
进入光驱挂接点按照提示进行软件安装。
$./runInstaller
安装即将结束时,会提示用户进行如下操作:
$ su root
# /home/oracle/oralnventory/orainstRoot.sh
# /oracle/product/10.2.0/db_1/root.sh
至此, oracle安装成功. 通过https://hostname:1158/em可以访问oracle enterprise control console.
8、使用DBCA 创建数据库
创建数据库之前,使用root用户执行命令,将DBA组添加到系统内核中。
echo 501 >/proc/sys/vm/hugetlb_shm_group (501是DBA的GID)9、配置监听及安装数据库
dbca
配置监听netca
继续刚才的DBCA配置
配置网络监听
10、设置oracle自动启动
1.) 编辑/etc/oratab
最下一行
Ussdtest:/opt/oracle11g:N
更改为:
ussdtest :/opt/oracle11g:Y
2.) 新建一个文件vi /etc/init.d/oracle
#!/bin/bash
#
# oracledb This Starts/Stops the Oracle Server
# chkconfig: 345 99 10
# description: script for the Oracle Instance, Listener
# /etc/init.d/oracledb
#
# Run-level Startup script for the Oracle Listener and Instances # It relies on the information on /etc/oratab
export ORACLE_OWNR=oracle
export ORACLE_HOME=/opt/oracle11g
echo "Oracle Script init.d"
if [ ! -f $ORACLE_HOME/bin/dbstart -o ! -d $ORACLE_HOME ]
then
echo "Oracle startup: cannot start"
exit 1
fi
case "$1" in
start)
# Oracle listener and instance startup
echo -n "Starting Oracle: "
su - $ORACLE_OWNR -c "$ORACLE_HOME/bin/lsnrctl start"
su - $ORACLE_OWNR -c "$ORACLE_HOME/bin/dbstart $ORACLE_HOME"
su - $ORACLE_OWNR -c "$ORACLE_HOME/bin/emctl start dbconsole"
touch /var/lock/oracle
echo "OK"
;;
stop)
# Oracle listener and instance shutdown
echo -n "Shutdown Oracle: "
su - $ORACLE_OWNR -c "$ORACLE_HOME/bin/emctl stop dbconsole"
su - $ORACLE_OWNR -c "$ORACLE_HOME/bin/lsnrctl stop"
su - $ORACLE_OWNR -c "$ORACLE_HOME/bin/dbshut $ORACLE_HOME"
rm -f /var/lock/oracle
echo "OK"
;;
reload|restart)
$0 stop
$0 start
;;
*)
echo "Usage: `basename $0` start|stop|restart|reload"
exit 1
esac
exit 0
3.)增加启动项
[root@centos /]# chmod +x /etc/init.d/oracle
[root@centos /]# chkconfig --add oracle
[root@centos /]# chkconfig --list|grep oracle
oracle 0:关闭 1:关闭 2:关闭 3:启用 4:启用 5:启用 6:关闭
[root@centos]# cd /usr/bin
[root@centos bin]# pwd
/usr/bin
[root@centos bin]# ln -s /etc/init.d/oracle
11、测试运行安装的 Oracle 系统。
1)、启动监听器。
$ lsnrctl start
Lsnrctl stop(关闭监听)
2)、启动及关闭数据库。
$ sqlplus /nolog
SQL> connect / as sysdba
Connected to an idle instance.
SQL> startup
SQL> shutdown 或者shutdown immediate
重新启动reboot。
检验数据库是否开机自动启动。
三、oracle 11g 浏览器登录创建用户、表空间https://IP地址:1158/em/console/aboutApplication 1、Sys登录创建用户
2、修改用户系统权限
3、创建表空间
4、添加数据文件
5、配置信息存储
附件:
Linux下共享库问题导致无法启动SQLPLUS的问题解决
这个问题是由于SELINUX引起的.
1. 编辑/etc/sysconfig/selinux配置文件, 把SELINUX=enforcing 改为SELINUX=disabled.
# This file controls the state of SELinux on the system.
# SELINUX= can take one of these three values:
# enforcing - SELinux security policy is enforced.
# permissive - SELinux prints warnings instead of enforcing.
# disabled - SELinux is fully disabled.
#SELINUX=enforcing
SELINUX=disabled
# SELINUXTYPE= type of policy in use. Possible values are:
# targeted - Only targeted network daemons are protected.
# strict - Full SELinux protection.
SELINUXTYPE=targeted
2. 使用命令chcon改变文件或者目录的SELinux属性, 语法chcon -t
texrel_shlib_t 库名字
[oracle@null-00137223684e ~]$ sqlplus /nolog
sqlplus: error while loading shared libraries:
/u01/app/oracle/product/11.2.0/dbhome_1/lib/libclntsh.so.11.1: cannot restore segment prot after reloc: Permission denied
[oracle@null-00137223684e ~]$chcon -t texrel_shlib_t
/u01/app/oracle/product/11.2.0/dbhome_1/lib/libclntsh.so.11.1
[oracle@null-00137223684e ~]$ sqlplus /nolog
SQL*Plus: Release 11.2.0.1.0 Production on Tue Sep 20 14:31:21 2011 Copyright (c) 1982, 2009, Oracle. All rights reserved.
SQL>
如果运行过程中发现其它的库文件也报类似的错误, 可以使用同样的方法来解决.
3、解决oracle数据库ORA-01081
SQL>startup
ORA-01081:cannot start already-running ORALCE - shut it down first
SQL>shutdown immediate
ORA-03135:connection lost contact
解决方法:
sqlplus "/ as sysdba"
sqlplus>shutdown abort;
sqlplus>startup;
startup nomount重新开启就可以了
现象:
SQL> shutdown immediate
ORA-01090: shutdown in progress - connection is not permitted
SQL> startup
ORA-01081: cannot start already-running ORACLE - shut it down first 解决方法:
dragon1> ps -ef|grep oracle9|grep _rac1|grep -v grep|awk '{print "kill -9 "$2}' >mykill
dragon1>. ./mykill
dragon1> ipcs -m
Shared Memory:
T ID KEY MODE OWNER GROUP
m 128 0 --rw-r----- oracle8 dba
m 129 0 --rw-r----- oracle8 dba
m 130 0xe9d0aaa8 --rw-r----- oracle8 dba
m 1027 0 --rw-r----- oracle9 dba
m 1028 0xe0bb589c --rw-r----- oracle9 dba
dragon1> ipcrm -m 1027
dragon1> ipcrm -m 1028
然后就可以起来了。
/defonds/archive/2010/03/29/5430108.aspx
四、gcc安装
1 安装前准备
1.1 编译环境
本文档指导源码方式的gcc安装,必须确保系统中已经有gcc编译器,如果有忽略本节内容,如果没有执行下列命令。
% gcc -v
查询当前gcc版本信息。
%yum install gcc
下载并安装gcc。
1.2 安装必须库
GCC编译需要GMP, MPFR, MPC这三个库,如果没有则在configure时会出现下面的提示错误:
gcc configure: error: Building GCC requires GMP 4.2+, MPFR 2.3.1+ and MPC 0.8.0+
从错误中可以看出,编译GCC需要GMP库4.2版本以上,MPFR库2.3.1版本以上以及MPC库0.8.0版本以上。
已经下载当前最新版本:gmp-5.0.5,mpfr-3.1.1,mpc-0.9。
分别按照下面步骤安装这三个必须库。
1.2.1 安装GMP库
1)首先执行解压缩,解开安装包。
%bzcat gmp-5.0.5.tar.bz2 | tar xvf –
2)进入安装包目录。
%cd gmp-5.0.5
3)执行安装配置
%./configure --prefix=/usr/local/gmp-5.0.5
4)编译
%make
5)编译检查
%make check
6)安装
%make install
1.2.2 安装MPFR库
1)首先执行解压缩,解开安装包。
% tar xzvf mpfr-3.1.1.tar.gz
2)进入安装包目录。
%cd mpfr-3.1.1
3)执行安装配置
%./configure --prefix=/usr/local/mpfr-3.1.1 --with-gmp-include=/usr/local/gmp-
5.0.5/include --with-gmp-lib=/usr/local/gmp-5.0.5/lib
4)编译
%make
5)编译检查
%make check
6)安装
%make install
1.2.3 安装MPC库
1)首先执行解压缩,解开安装包。
% tar xzvf mpc-0.9.tar.gz
2)进入安装包目录。
%cd mpc-0.9
3)执行安装配置
%./configure --prefix=/usr/local/mpc-0.9 --with-gmp-include=/usr/local/gmp-
5.0.5/include --with-gmp-lib=/usr/local/gmp-5.0.5/lib
--with-mpfr=/usr/local/mpfr-3.1.1
4)编译
%make
5)编译检查
%make check
6)安装
%make install
2 解压安装包
根据下载的安装包压缩格式,选择下面相应的一种方式解包:
gz包解压命令:tar xzvf gcc-4.7.1.tar.gz
bz2包解压命令:bzcat gcc-4.7.1.tar.bz2 | tar xvf –
新生成的gcc-4.7.1这个目录被称为“安装源目录”,用${srcdir}表示它。
以后在出现${srcdir}的地方,应该用真实的路径来替换它。
用pwd命令可以查看当前路径。
3 建立安装编译目录
在gcc安装过程中,会产生编译结果,因此需要建立“安装编译目录”,“安装编译目录”(用${objdir}表示)是用来存放安装编译结果的地方。
gcc强烈建议通常的做法是gcc在编译过程中放置到一个单独的目录中,而不驻留在安装源目录树下。
在安装时,如果${srcdir} == ${objdir}安装过程应仍然可以工作,但并没有得到广泛的测试;安装时,不支持${objdir}是${srcdir}子目录。
例如,可以这样建立一个叫gcc-build 的安装编译目录(与源目录${srcdir}是同级兄弟目录):
% mkdir gcc-build
建立“安装编译目录”${objdir}后,进入该目录,后续操作都在该目录下进行。
4 安装配置
安装配置的目的是决定将GCC编译器安装到什么地方(“安装目的目录”${destd ir}),支持什么开发语言以及指定其它一些选项等。
其中,“安装目的目录”${destdir}不能与“安装编译目录”${objdir}或“安装源目录”${srcdir}目录相同。
首先确保进入到“安装编译目录”${objdir}中,然后通过执行${srcdir}下的configure来完成的。
其命令格式为:
% ${srcdir}/configure --prefix=${destdir} [其它选项]
其中,${destdir}表示“安装目的目录”,例如,如果想将GCC 4.7.1安装到/usr/local/gcc-4.7.1目录下,则${destdir}就表示这个路径。
通常配置如下:
%../gcc-4.7.1/configure --prefix=/usr/local/gcc-4.7.1 --enable-threads=posix --disable-checking --enable-languages=c,c++ --with-gmp=/usr/local/gmp-5.0.5 --with-mpfr=/usr/local/mpfr-3.1.1 --with-mpc=/usr/local/mpc-0.9
将GCC安装在/usr/local/gcc-4.7.1目录下,支持C/C++语言,其它选项参见GCC提供的帮助说明。
常用选项说明:
--prefix=dirname
指定安装目录的顶层。
顶层安装目录,默认为/usr/local。
反对与${objdir}相同或者在其目录下,反之亦然。
--enable-threads
指定的目标支持线程。
这影响Objective-C语言的编译器和运行时库,以及其他语言的异常处理,例如C++和JAVA。
在某些系统中,这是默认的。
--enable-threads=lib
指定“lib”为线程支持库。
这影响Objective-C语言的编译器和运行时库,以及其他语言的异常处理,例如C++和JAVA。
“lib”的可能的取值为:
aix AIX线程支持.
dce DCE线程支持.
lynx LynxOS线程支持.
mipssde MIPS SDE线程支持.
no ‘single’的别名.
posix 通用POSIX/Unix98线程支持.
rtems RTEMS线程支持.
single禁用线程的支持,所有平台适用.
tpf TPF线程支持.
vxworks VxWorks线程支持.
win32 Microsoft Win32 API线程支持.
--disable-checking
--enable-checking=list
当指定这个选项,编译器将执行内部一致性检查,判定是否满足请求的复杂性。
这并没有改变生成的代码,但增加了编译器错误检查工作。
这将减慢编译器,并且只能是GCC编译时能正常工作。
禁用所有的检查,“——disable-checking”或“——enable-checking=none”必须明确列出。
禁用断言将使编译器和运行速度稍快,但增加了未被发现的内部错误导致错误代码生成的风险。
--with-system-zlib
使用安装的“zlib”而不是包含在GCC内的“zlib”。
--enable-languages
指定应生成的编译器和运行时库的某一特定子集。
当前可以使用下列任何一种或者多种:all, ada, c, c++, fortran, go, java, objc, obj-c++.
--with-gmp
明确指定GMP库的安装位置。
--with-mpfr
明确指定MPFR库的安装位置。
--with-mpc
明确指定MPC库的安装位置。
5 编译
% make
这将是一个漫长的过程。
6 安装
执行下面的命令将编译好的库文件等拷贝到“安装目的目录”${destdir}中:
% make install
至此,GCC 4.7.1安装过程就完成了。
7 环境配置
7.1 命令路径设置
为了能够在使用gcc,g++等命令,需要进行命令路径设置,有以下两种常用方法:
1. 最简单的方法是把路径${destdir}/bin放在环境变量PATH中。
在文件/etc/profile中
最后添加一句:
export PATH=$PATH: ${destdir}/bin。
2. 灵活的方法是用符号连接的方式实现,这样做的好处是可以使用系统上多个版本的
GCC编译器。
假设/usr/bin目录已经加入环境变量PATH中。
我们可以把GCC 4.7.1中的gcc、g++等命令在/usr/bin目录下分别做一个符号连接:
% cd /usr/bin
% ln -s ${destdir}/bin/gcc gcc471
% ln -s ${destdir}/bin/g++ g++471
这样,就可以分别使用gcc471、g++471来调用GCC 4.7.1的gcc、g++完成对C、C++程序的编译了。
如法炮制,其他版本的编译器采用相同的符号连接
方法,命名为对应的gcc+版本号,g++版本号,如gcc4.1.2,g++4.1.2就可以灵
活使用多个版本编译器。
7.2 库路径设置
为了能够在链接程序,运行程序时使用gcc库文件,需要进行库路径设置。
有以下两种常用方法:
1. 设置于系统环境变量中:
在文件/etc/profile中最后添加:
setenv LD_LIBRARY_PATH ${destdir}/lib:$LD_LIBRARY_PATH
2. 设置于用户环境变量中:
在文件$HOME/.bash_profile中添加下面两句:
LD_LIBRARY_PATH=${destdir}/lib:$LD_LIBRARY_PATH
export LD_LIBRARY_PATH
执行下面命令生效:
% source $HOME/.bash_profile
$HOME表示用户主目录。
同时,第一节中三个必须库的lib也必须加入到LD_LIBRARY_PATH中。