1、下载oracle安装文件
一、检查必要条件
1.1、检查内存及交换分区
Oracle要求2GB以上的内存
#查看内存大小
grep MemTotal /proc/meminfo
#查看交换区大小
grep SwapTotal /proc/meminfo
#也可以使用下面的命令查看内存大小
free -m1234567
交换分区要求
内存大小
交换分区要求
1GB~2GB 内存的1.5倍
2GB~16GB 和内存大小相等
大于16GB 16GB
1.2、确认操作系统位数
[root@FSWWOA /]# uname -m
x86_6412
x86_64:表示用的是Intel的处理器,并且操作系统是64位的
i386:表示是32位
1.3、检查硬盘空间
#查看临时目录空间
[root@FSWWOA /]# df -h /tmp
#查看硬盘总空间
[root@FSWWOA /]# df -h1234
Oracle安装是要求/tmp目录要有至少1GB的空间。
以下是Oracle各个版本安装是所需的空间
版本
所需空间
Enterprise Edition(企业版) 4.7GB
Standard Edition(标准版) 4.6GB
二、安装必要软件
首先需要检查系统版本,然后从Oracle官方文档中找到对应的Linux版本。
[root@FSWWOA /]# cat /proc/version
Linux version 2.6.32-71.el6.x86_64 (root@CentOS6064.localdomain) (gcc version 4.4.4 20110726 (Red Hat 4.4.4-13) (GCC) ) #1 SMP Wed Feb 29 15:21:16 CST 201212
Oracle官方文档中对应的版本如下
On Red Hat Enterprise Linux 6
2.6.32-71.el6.x86_64 or later
然后根据Linux版本找到其必要安装的软件,如下
The following or later version of packages for Oracle Linux 6, Red Hat Enterprise Linux 6, and Asianux Server 4 must be installed:
binutils-2.20.51.0.2-5.11.el6 (x86_64)
compat-libcap1-1.10-1 (x86_64)
compat-libstdc++-33-3.2.3-69.el6 (x86_64)
compat-libstdc++-33-3.2.3-69.el6.i686
gcc-4.4.4-13.el6 (x86_64)
gcc-c++-4.4.4-13.el6 (x86_64)
glibc-2.12-1.7.el6 (i686)
glibc-2.12-1.7.el6 (x86_64)
glibc-devel-2.12-1.7.el6 (x86_64)
glibc-devel-2.12-1.7.el6.i686
ksh
libgcc-4.4.4-13.el6 (i686)
libgcc-4.4.4-13.el6 (x86_64)
libstdc++-4.4.4-13.el6 (x86_64)
libstdc++-4.4.4-13.el6.i686
libstdc++-devel-4.4.4-13.el6 (x86_64)
libstdc++-devel-4.4.4-13.el6.i686
libaio-0.3.107-10.el6 (x86_64)
libaio-0.3.107-10.el6.i686
libaio-devel-0.3.107-10.el6 (x86_64)
libaio-devel-0.3.107-10.el6.i686
make-3.81-19.el6
sysstat-9.0.4-11.el6 (x86_64)1234567891011121314151617181920212223
检查系统是否安装以上的软件,如果没有安装则安装这些软件
yum install -y binutils.x86_64 binutils-devel.x86_64
yum install -y compat-libcap1.x86_64
yum install -y compat-libstdc++-33.x86_64
yum install -y compat-libstdc++-33.i386
yum install -y gcc.x86_64 gcc-c++.x86_64
yum install -y glibc.x86_64 glibc.i686 glibc-devel.x86_64 glibc-devel.i386
yum install -y ksh.x86_64
yum install -y libgcc.i386 libgcc.x86_64
yum install -y libstdc++.i386 libstdc++.x86_64 libstdc++-devel.i386 libstdc++-devel.x86_64
yum install -y libaio libaio-devel
yum install -y make.x86_64
yum install -y sysstat.x86_64
yum install -y pdksh.x86_64
/*-------------------------------------*/
yum install -y unixODBC.x86_64 unixODBC.i386 unixODBC-devel.i386 unixODBC-devel.x86_64123456789101112131415
三、创建Oracle用户和组
[root@FSWWOA /]# groupadd dba
[root@FSWWOA /]# groupadd oinstall
#添加用户
[root@FSWWOA /]# useradd -g oinstall -G dba oracle
#设置Oracle的密码
[root@FSWWOA /]# pwd oracle oracle
#这里密码使用:oracle12345678
四、修改系统参数
4.1、修改用户的SHELL的限制
修改/etc/security/limits.conf文件
vi /etc/security/limits.conf1
然后在文件中添加如下内容
oracle soft nproc 2047
oracle hard nproc 16384
oracle soft nofile 1024
oracle hard nofile 655361234
4.2、修改/etc/pam.d/login 文件
vi /etc/pam.d/login1
然后在文件中添加如下内容
session required /lib/security/pam_limits.so
session required pam_limits.so12
4.3、修改系统核心参数
修改/etc/sysctl.conf文件vi /etc/sysctl.conf,然后在文件中加入
fs.aio-max-nr = 1048576
fs.file-max = 6815744
kernel.shmall = 2097152
kernel.shmmax = 536870912
kernel.shmmni = 4096
kernel.sem = 250 32000 100 128
net.ipv4.ip_local_port_range = 9000 65500
net.core.rmem_default = 262144
net.core.rmem_max = 4194304
net.core.wmem_default = 262144
net.core.wmem_max = 10485761234567891011
执行sysctl -p是配置立刻生效。使用sysctl -a查看所有系统参数。
五、创建Oracle安装目录
5.1创建Oracle安装目录
cd /u01
mkdir -p app/oracle/product/11.2.0/dbhome_1
mkdir app/oradata123
5.2修改目录所有者
[root@FSWWOA u01]# chown -R oracle:oinstall app
[root@FSWWOA u01]# ll
总用量 20
drwxr-xr-x. 4 oracle oinstall 4096 11月 25 08:46 app
drwx------. 2 root root 16384 11月 24 14:29 lost+found12345
六、修改系统环境变量
使用vi ~/.bash_profile打开环境变量配置文件。加入如下内容
export ORACLE_BASE=/u01/app
export ORACLE_HOME=$ORACLE_BASE/oracle/product/11.2.0/dbhome_1
export ORACLE_SID=orcl
export PATH=$PATH:$HOME/bin:$ORACLE_HOME/bin
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/usr/lib
export NLS_LANG=SIMPLIFIED CHINESE_CHINA.ZHS16GBK 123456
然后使用source ~/.bash_profile是配置立即生效。使用env | grep ORACLE可以查看环境变量配置。
七、安装Oracle
7.1解压Oracle安装文件
将Oracle拷贝至Linux服务器上,然后解压
unzip linux.x64_11gR2_database_1of2.zip
unzip linux.x64_11gR2_database_2of2.zip12
如果使用光盘安装,则使用mount -t iso9660 /dev/dvd /mnt/dvd挂载光盘
7.2设置安装环境
如果Linux系统字符编码是中文的,在安装过程中Oracle安装界面会全部乱码。可使用export LANG=en_US,将会话的字符集改为英文字符集,然后再安装就不会出现乱码。
另外,Oracle安装时需要图形界面的支持。
剩余部分见PDF文档(后续图片太多不再一一上传),剩余部分如下:
7.3开始安装Oracle
八、测试安装结果
九、修改防火墙配置,将Oracle端口添加到例外
十、将Oracle设置自启动
十一、设置Oracle用户名密码不区分大小写
在使用linux的centos7.4遇到的各种坑,其中一个项目采用四层架构,配置层,平台层,逻辑服务器管理层和集体逻辑服务器层的,一个整体的 游戏 项目,其中,作为整个项目负责人和架构打架着,项目运行一年来,遇到了各种各样怪异的问题。其中就是tcp缓存区堵塞的问题,刚开始时候,以为是代码问题,花了半年的时间来排除,验证,把能想到的问题都做了一个遍,问题还是存在。最后应该几个调优和验证。附上算比较稳定centos7.4的内核调优详细参数如下:
内核配置文件:/etc/sysctl.conf
net.ipv4.tcp_mem = 768432 2097152 15242880
net.ipv4.tcp_wmem = 40960 163840 4194304
net.ipv4.tcp_rmem = 40960 873800 4194304
#net.core.somaxconn=6553600
net.core.wmem_default = 8388608
net.core.rmem_default = 8388608
net.core.rmem_max = 524288000
net.core.wmem_max = 524288000
net.ipv4.tcp_syncookies=1
net.ipv4.tcp_max_syn_backlog=81920
net.ipv4.tcp_timestamps=0
# 参数的值决定了内核放弃链接之前发送SYN+ACK包的数量,该参数对应系统路径为:/proc/sys/net/ipv4/tcp_synack_retries,默认是2
net.ipv4.tcp_synack_retries=3
# 表示内核放弃建立链接之前发送SYN包的数量,该参数对应系统路径为:/proc/sys/net/ipv4/tcp_syn_retries,默认是6
net.ipv4.tcp_syn_retries=3
net.ipv4.tcp_fin_timeout = 30
net.ipv4.tcp_keepalive_time = 300
net.ipv4.ip_local_port_range = 20000 65000
net.ipv4.tcp_max_tw_buckets = 6000
net.ipv4.route.max_size = 5242880
kernel.sem=250 65536 100 2048
kernel.msgmnb = 4203520
kernel.msgmni = 64
kernel.msgmax = 65535
#设置最大内存共享段大小bytes
kernel.shmmax = 68719476736
kernel.shmall = 4294967296
kernel.shmmni = 655360
net.ipv4.tcp_tw_reuse=1
net.ipv4.tcp_tw_recycle = 1
net.ipv4.tcp_window_scaling = 1
net.ipv4.tcp_no_metrics_save=1
# 开启SYN洪水攻击保护
kernel.core_uses_pid = 1
net.ipv4.conf.lo.arp_announce=2
net.ipv4.tcp_sack = 1
kernel.randomize_va_space=1
net.nf_conntrack_max = 25000000
net.netfilter.nf_conntrack_max = 25000000
net.netfilter.nf_conntrack_tcp_timeout_established = 180
#net.ipv4.netfilter.ip_conntrack_max=1000000
net.netfilter.nf_conntrack_tcp_timeout_time_wait = 120
net.netfilter.nf_conntrack_tcp_timeout_close_wait = 60
net.netfilter.nf_conntrack_tcp_timeout_fin_wait = 120
#避免放大攻击
net.ipv4.icmp_echo_ignore_broadcasts=1
#关闭ipv6
net.ipv6.conf.all.disable_ipv6 = 1
net.ipv6.conf.default.disable_ipv6 = 1
# 开启恶意icmp错误消息保护
net.ipv4.icmp_ignore_bogus_error_responses = 1
#关闭路由转发
net.ipv4.ip_forward = 0
net.ipv4.conf.all.send_redirects = 0
net.ipv4.conf.default.send_redirects = 0
#开启反向路径过滤
net.ipv4.conf.all.rp_filter = 1
net.ipv4.conf.default.rp_filter = 1
#处理无源路由的包
net.ipv4.conf.all.accept_source_route = 0
net.ipv4.conf.default.accept_source_route = 0
#关闭sysrq功能
kernel.sysrq = 0
#每个网络接口接收数据包的速率比内核处理这些包的速率快时,允许送到队列的数据包的最大数目
net.core.netdev_max_backlog = 262144
#限制仅仅是为了防止简单的DoS 攻击
net.ipv4.tcp_max_orphans = 3276800
# 确保无人能修改路由表
net.ipv4.conf.all.accept_redirects = 0
net.ipv4.conf.default.accept_redirects = 0
net.ipv4.conf.all.secure_redirects = 0
net.ipv4.conf.default.secure_redirects = 0
vm.swappiness = 0
#决定检查过期多久邻居条目
net.ipv4.neigh.default.gc_stale_time=120
fs.file-max = 40000500
fs.nr_open = 40000500
kernel.perf_cpu_time_max_percent=60
kernel.perf_event_max_sample_rate=6250
kernel.sched_migration_cost_ns=5000000
net.core.optmem_max= 25165824
vm.max_map_count=262144
net.core.somaxconn = 65535
#使用arp_announce / arp_ignore解决ARP映射问题
net.ipv4.conf.default.arp_announce = 2
net.ipv4.conf.all.arp_announce=2
net.ipv4.conf.lo.arp_announce=2
环境和配置测试环境有一个 IBM Flex System® 组成,该系统有多个 IBM Flex System x240 计算节点和两个基于 IBM POWER7 处理器的节点(一个 Flex System p260 和一个 Flex System p460)。出于本项目的目的,我使用一个 Flex system x240 计算节点来交叉编译 Apache httpd 和 PostgreSQL。构建二进制程序后,我将它们转移到 Flex System p460 计算节点。图 7 显示了 IBM Flex System 测试环境的布局图。
图 7. IBM Flex System 测试环境
以下是我的系统配置、操作系统级别和其他与系统设置相关的信息。
Flex System x240 计算节点
用于交叉编译二进制程序的 Intel 节点仅需要足够的处理能力和内存,以便能够构建 Power 二进制程序。配置如下:
基于内核的虚拟机 (KVM) 管理程序 Red Hat 6.5
32 个处理器
64 GB 内存
IBM Storwize® V7000 存取区域网络 (SAN) 连接磁盘
KVM Guest 系统
Red Hat Enterprise Linux 6.5
4 个处理器
16 GB 内存
一个 virtio 磁盘:100 GB
一个配置为 br0 的虚拟网络接口卡 (NIC)
所有其他 KVM Guest 系统都已关闭,以消除破坏环境的任何可能性。
Flex System p440 计算节点
Flex System p440 计算节点包含多个逻辑分区 (LPAR),其中一个配置为测试服务器。PowerLinux 服务器配置如下:
IBM PowerVM® 来宾
Red Hat Enterprise Linux 6.5
8 个处理器(专用)
32 GB 内存
Storwize V7000 SAN 连接磁盘 (50 GB)
通过虚拟 I/O 服务器 (VIOS) 共享的以太网适配器
LPAR 配置
最小内存:256 MB
目标内存:32 GB
最大内存:64 GB
最少处理器数:8
目标处理器数:8
最大处理器数:32
处理模式:专用
专用内存
虚拟以太网适配器(通过 VIOS 建立)
适配器 ID:2
VLAN ID:1
需要此适配器来激活虚拟服务器:已选择
以下是我运行的其他一些命令:
# ppc64_cpu --frequency
min:3.56 GHz (cpu 28)
max:3.56 GHz (cpu 4)
avg:3.56 GHz
# ppc64_cpu --cores-present
Number of cores present = 8
# sysctl.conf
kernel.sem = 250 32000 3212288
使用 toolchain 构建应用程序
通常,构建开源发行版的过程是一个迭代过程。如果您很幸运的话,该过程可能已构建完成。不幸的是,因为大多数开源发行版都构建于 x86 服务器之上,所以在尝试为不同架构(比如 IBM Power 架构)构建它们时可能遇到问题。
如果在 Power 上构建开源包时遇到问题,只需在互联网上搜索类似情形,查看这些已报告的问题是否与您的经历密切相关。如果是相关的,那么在大多数情况下,您可以找到如何解决该问题的建议。
对我而言,尽管为配置脚本选择正确参数后,postgresql 很好地构建完成了,但 apache httpd 没那么幸运。接下来的几节将介绍为 Power 架构构建 apache httpd 所需的修复程序。
交叉编译器经验
编写本文时,我使用的交叉编译器版本是一个仅供 IBM 内部使用的版本,它专为修复我在测试期间遇到的一个错误而构建。读者可以下载 AT 7.0-5 版,它是最新的交叉编译器(在发表本文时),拥有接下来的几段中描述的错误的修复程序。
在我尝试交叉编译 apr-1.5.1 源代码发行版时,我看到了以下编译器消息。
"sorry - this program has been built without plugin support"
按照我在互联网上搜索可能的帮助和解决方案的建议,我找到多个链接提到编译器需要使用 “plugin enabled” 选项来构建。我向 toolchain 支持小组报告了此问题,toolchain 维护人员很快就回复了我,为我提供了一个使用 plugin enabled 选项构建的修改版本。请注意,toolchain 的交叉编译器和原生编译器版本都需要使用 plugin enabled 选项构建。我能够在获得拥有该修复程序的 toolchain 版本后继续工作。
这是我使用 PowerLinux toolchain 的第一次经历。
交叉编译 httpd 2.4.3
要交叉编译 Apache httpd,需要使用另外 3 个包。它们是:apr、apr-util 和 pcre。找到下载最新包的位置后,开始使用 toolchain 交叉编译器在 x86 服务器上构建它们。
我构建 apr-1.5.1 时遇到的问题是构建 gen_test_char.o 模块。请参阅 ASF Bugzilla – 错误 51257 了解有关的更多细节。我修改了 Makefile.in 文件(如下所示)并运行 buildconf 脚本,以便将更改包含在配置脚本中。
对 Makefile.in 的修改如下所示:
[root@stgisv240 apr-1.5.1]# diff -u Makefile.in ../../apr-1.5.1/Makefile.in
--- Makefile.in 2014-03-17 10:10:26.000000000 -0500
+++ ../../apr-1.5.1/Makefile.in 2014-07-03 13:36:11.125013781 -0500
@@ -46,7 +46,6 @@
CLEAN_TARGETS = apr-config.out apr.exp exports.c export_vars.c .make.dirs build/apr_rules.out tools/gen_test_char@EXEEXT@ - tools/gen_test_char.o tools/gen_test_char.lo \
include/private/apr_escape_test_char.h
DISTCLEAN_TARGETS = config.cache config.log config.status include/apr.h include/arch/unix/apr_private.h @@ -132,10 +131,9 @@
make_tools_dir:
$(APR_MKDIR) tools
-OBJECTS_gen_test_char = tools/gen_test_char.lo $(LOCAL_LIBS)
-tools/gen_test_char.lo: make_tools_dir
-tools/gen_test_char@EXEEXT@:$(OBJECTS_gen_test_char)
- $(LINK_PROG) $(OBJECTS_gen_test_char) $(ALL_LIBS)
+tools/gen_test_char@EXEEXT@: make_tools_dir
+tools/gen_test_char@EXEEXT@: tools/gen_test_char.c
+ $(BUILD_CC) $(CFLAGS_FOR_BUILD) $<-o $@
include/private/apr_escape_test_char.h: tools/gen_test_char@EXEEXT@
$(APR_MKDIR) include/private
修改 Makefile.in 文件后,我运行 buildconf 来创建了一个新配置脚本。下一段将介绍用于配置脚本的参数和变量。顺便说一下,我是根据其他尝试在其他平台(比如 ARM)上交叉编译 Apache httpd 及其组件的开发人员的建议,为配置脚本选择配置参数的。
以下是我在 x86 服务器上运行 apr-1.5.1 组件的配置脚本时,使用的参数和环境变量。
# Config script using Power Linux toolchain on x86
BUILD_CC=gcc
CC_FOR_BUILD=gcc
CC=powerpc64-linux-gcc
CPP=powerpc64-linux-cpp
AS=powerpc64-linux-as
AR=powerpc64-linux-ar
RANLIB=powerpc64-linux-gcc-ranlib
CXX=powerpc64-linux-c++
LD=powerpc64-linux-ld
STRIP=powerpc64-linux-strip
export CC CPP AS ASCPP AR RANLIB CXXCPP CXX LD STRIP CFLAGS LDFLAGS CC_FOR_BUILD
./configure --prefix=/tmp/usr/local/apr --host=powerpc64-linux ac_cv_file__dev_zero=no
ac_cv_func_setpgrp_void=no apr_cv_tcp_nodelay_with_cork=no ac_cv_sizeof_struct_iovec=1
BUILD_CC=gcc make install
我在 Power 服务器上了略加修改的相同发行版。请注意,用于 Power 服务器的 PowerLinux toolchain 使用了具有类似命名的可执行程序,比如从原生 cpp 和 binutils 包安装的 cpp 和 ld。修改脚本中的 CPP 和 LD 变量,如下所示。确保 Power toolchain 的路径首先传入您的 PATH 环境中。
以下是我在 Power 服务器上运行 apr-1.5.1 的配置脚本时使用的参数和环境变量。
# Config script using PowerLinux toolchain on Power
BUILD_CC=gcc
CC_FOR_BUILD=gcc
CC=powerpc64-linux-gcc
CPP=cpp # Note the difference
AS=powerpc64-linux-as
AR=powerpc64-linux-ar
RANLIB=powerpc64-linux-gcc-ranlib
CXX=powerpc64-linux-c++
LD=ld # Note the difference
STRIP=powerpc64-linux-strip
#CFLAGS="-mcpu=440fp -mtune=440fp --sysroot $SYSROOT"
#LDFLAGS=-L$SYSROOT/lib
export CC CPP AS ASCPP AR RANLIB CXXCPP CXX LD STRIP CFLAGS LDFLAGS CC_FOR_BUILD
./configure --prefix=/home/usr/local/apr ac_cv_file__dev_zero=no
ac_cv_func_setpgrp_void=no apr_cv_tcp_nodelay_with_cork=no ac_cv_sizeof_struct_iovec=1
ac_cv_struct_rlimit=yes
BUILD_CC=gcc make install
以下是我在 x86 服务器上运行 apr-util-1.5.3 组件的配置脚本时使用的参数和环境变量。
# Configure script for apr-util-1.5.3 on x86
BUILD_CC=gcc
CC_FOR_BUILD=gcc
CC=powerpc64-linux-gcc
CPP=powerpc64-linux-cpp
AS=powerpc64-linux-as
AR=powerpc64-linux-ar
RANLIB=powerpc64-linux-gcc-ranlib
CXX=powerpc64-linux-c++
LD=powerpc64-linux-ld
STRIP=powerpc64-linux-strip
export CC CPP AS ASCPP AR RANLIB CXXCPP CXX LD STRIP CFLAGS LDFLAGS CC_FOR_BUILD
./configure --prefix=/tmp/usr/local/apr --host=powerpc64-linux --with-
apr=/tmp/usr/local/apr ac_cv_file__dev_zero=no ac_cv_func_setpgrp_void=no
apr_cv_tcp_nodelay_with_cork=no ac_cv_sizeof_struct_iovec=1
以下是我在 Power 服务器上运行 apr-util-1.5.3 组件的配置脚本时使用的参数和环境变量。
# Configure script for apr-util-1.5.3 on Power
BUILD_CC=gcc
CC_FOR_BUILD=gcc
CC=powerpc64-linux-gcc
CPP=cpp
AS=powerpc64-linux-as
AR=powerpc64-linux-ar
RANLIB=powerpc64-linux-gcc-ranlib
CXX=powerpc64-linux-c++
LD=ld
STRIP=powerpc64-linux-strip
export CC CPP AS ASCPP AR RANLIB CXXCPP CXX LD STRIP CFLAGS LDFLAGS CC_FOR_BUILD
./configure --prefix=/home/usr/local/apr --host=powerpc64-linux --with-
apr=/tmp/usr/local/apr ac_cv_file__dev_zero=no ac_cv_func_setpgrp_void=no
apr_cv_tcp_nodelay_with_cork=no ac_cv_sizeof_struct_iovec=1
以下是我在 x86 服务器上运行 httpd 组件的配置脚本时使用的参数和环境变量。
# Configure script for httpd 2.4.3 on x86
CC_FOR_BUILD=gcc
CC=powerpc64-linux-gcc
CPP=powerpc64-linux-cpp
AS=powerpc64-linux-as
AR=powerpc64-linux-ar
RANLIB=powerpc64-linux-gcc-ranlib
CXX=powerpc64-linux-c++
LD=powerpc64-linux-ld
STRIP=powerpc64-linux-strip
export CC CPP AS ASCPP AR RANLIB CXXCPP CXX LD STRIP CFLAGS LDFLAGS CC_FOR_BUILD
./configure --prefix=/tmp/usr/local --host=ppc64 ap_cv_void_ptr_lt_long=no --with-
pcre=/tmp/usr/local/bin/pcre-config --with-apr=/tmp/usr/local/apr --with-mpm=worker--
with-apr-util=/tmp/usr/local/apr/bin/apu-1-config
以下是我在 Power 服务器上运行 httpd 组件的配置脚本时使用的参数和环境变量。
# Configure script for httpd 2.4.3 on Power
CC_FOR_BUILD=gcc
CC=powerpc64-linux-gcc
CPP=cpp
AS=powerpc64-linux-as
#ASCPP=powerpc-apm-linux-gnu-as
AR=powerpc64-linux-ar
RANLIB=powerpc64-linux-gcc-ranlib
#CXXCPP=powerpc-apm-linux-gnu-cpp
CXX=powerpc64-linux-c++
LD=/opt/at7.0-5-rc1/bin/ld
STRIP=powerpc64-linux-strip
#CFLAGS="-mcpu=440fp -mtune=440fp --sysroot $SYSROOT"
#LDFLAGS=-L$SYSROOT/lib
export CC CPP AS ASCPP AR RANLIB CXXCPP CXX LD STRIP CFLAGS LDFLAGS CC_FOR_BUILD
./configure --prefix=/home/usr/local --host=ppc64 ap_cv_void_ptr_lt_long=no--with-
pcre=/home/usr/local/bin/pcre-config --with-apr=/home/usr/local/apr --with-mpm=worker--
with-apr-util=/home/usr/local/apr/bin/apu-1-config
交叉编译 PostgreSQL 9.4.3
不同于之前构建 httpd 所需的源代码发行版,我在交叉编译 PostgreSQL 时未遇到问题。PostgreSQL 是使用以下配置脚本来构建的。
以下是我在 x86 服务器上运行 PostgresSQL 的配置脚本时使用的参数和环境变量。
# Configure script for postgresql-9.3.4 on x86
CC=powerpc64-linux-gcc
CPP=powerpc64-linux-cpp
AS=powerpc64-linux-as
AR=powerpc64-linux-ar
RANLIB=powerpc64-linux-gcc-ranlib
CXX=powerpc64-linux-c++
D=powerpc64-linux-ld
STRIP=powerpc64-linux-strip
export CC CPP AS ASCPP AR RANLIB CXXCPP CXX LD STRIP CFLAGS LDFLAGS CC_FOR_BUILD
./configure --prefix=/tmp/usr/local --host=powerpc64-linux --without-readline --without-zlib
与 Apache 配置脚本一样,您可以注意到针对 Power 服务器 toolchain 使用了具有类似命名的可执行程序,比如从原生 cpp和 binutils 包安装的 cpp 和 ld。修改脚本中的 CPP 和 LD 变量,如下所示。确保 toolchain 的路径首先传入您的 PATH 环境中。
以下是我在 Power 服务器上运行 PostgresSQL 的配置脚本时使用的参数和环境变量。
# Configure script for postgresql-9.3.4 on Power
CC=powerpc64-linux-gcc
CPP=cpp
AS=powerpc64-linux-as
AR=powerpc64-linux-ar
RANLIB=powerpc64-linux-gcc-ranlib
CXX=powerpc64-linux-c++
LD=powerpc64-linux-ld
STRIP=powerpc64-linux-strip
export CC CPP AS ASCPP AR RANLIB CXXCPP CXX LD STRIP CFLAGS LDFLAGS CC_FOR_BUILD
./configure --prefix=/home/usr/local --host=powerpc64-linux --without-readline --without-zlib
结束语
toolchain 交叉编译器的实际价值在于,开发人员可在他们熟悉的开发平台上(在大多数情况下是 x86)编译和构建 Power Architecture 应用程序。从我们的用例中可以看到,toolchain 可生成像原生编译的应用程序一样高效地执行的二进制可执行程序和库。而且,交叉编译的库与原生编译的应用程序兼容。最后但同样重要的是,交叉编译的应用程序可在本地调试以及使用 gdb 调试器远程调试。
PowerLinux toolchain 与在 x86 平台上使用原生 Linux toolchain 没什么不同。希望本文能让读者很好地了解 PowerLinux toolchain 的特性和功能。
欢迎分享,转载请注明来源:夏雨云
评论列表(0条)