Heim  >  Artikel  >  Datenbank  >  在Oracle 11.2上用Gcc进行64bit编译(Solaris 11, x86)

在Oracle 11.2上用Gcc进行64bit编译(Solaris 11, x86)

WBOY
WBOYOriginal
2016-06-07 15:18:341221Durchsuche

从11.2版起,Oracle取消了ORACLE_HOME下的lib32 Directory,从32/64bit的双轨制彻底走向64bit的单轨路线。 对于一些还希望使用32bit的人,解决问题的办法就是再安装一个32bit的Oracle Client。(当然,这回生成另一个ORACLE HOME。这应该没问题,可惜我没试

从11.2版起,Oracle取消了ORACLE_HOME下的lib32 Directory,从32/64bit的双轨制彻底走向64bit的单轨路线。

对于一些还希望使用32bit的人,解决问题的办法就是再安装一个32bit的Oracle Client。(当然,这回生成另一个ORACLE HOME。这应该没问题,可惜我没试过。)

 

但是,我遇到的问题是,用户希望升级到64bit,从原来的cc更换到gcc,但又不愿修改大量的make文件。

1. 安装gcc package。

首先搜索gcc。

# pkg search gcc

INDEX           ACTION   VALUE                                                               PACKAGE
pkg.description set      GCC Runtime - Shared libraries used by gcc and other gnu components pkg:/system/library/gcc-3-runtime@3.4.3-0.175.0.0.0.2.537
pkg.summary     set      GCC Runtime libraries                                               pkg:/system/library/gcc-3-runtime@3.4.3-0.175.0.0.0.2.537
pkg.summary     set      GCC - 4.5 Compilers                                                 pkg:/developer/gcc-45@4.5.2-0.175.0.0.0.2.537
pkg.summary     set      GCC - 4.5 Runtime                                                   pkg:/system/library/gcc-45-runtime@4.5.2-0.175.0.0.0.2.537
basename        hardlink usr/sfw/bin/gcc                                                     pkg:/developer/gcc-3@3.4.3-0.175.0.0.0.2.537
basename        link     usr/bin/gcc                                                         pkg:/developer/gcc-45@4.5.2-0.175.0.0.0.2.537
pkg.description set      GCC Runtime - Shared libraries used by gcc and other gnu components pkg:/system/library/gcc-3-runtime@3.4.3-0.175.0.0.0.2.537
pkg.summary     set      gcc - The GNU C compiler                                            pkg:/developer/gcc-3@3.4.3-0.175.0.0.0.2.537
basename        dir      usr/gcc                                                             pkg:/system/library/gcc-45-runtime@4.5.2-0.175.0.0.0.2.537
basename        dir      usr/gcc/4.5/lib/gcc                                                 pkg:/system/library/gcc-45-runtime@4.5.2-0.175.0.0.0.2.537
basename        dir      usr/sfw/lib/gcc                                                     pkg:/developer/gcc-3@3.4.3-0.175.0.0.0.2.537
basename        dir      usr/sfw/libexec/gcc                                                 pkg:/developer/gcc-3@3.4.3-0.175.0.0.0.2.537
basename        dir      usr/gcc                                                             pkg:/developer/gcc-45@4.5.2-0.175.0.0.0.2.537
basename        dir      usr/gcc/4.5/lib/gcc                                                 pkg:/developer/gcc-45@4.5.2-0.175.0.0.0.2.537
basename        file     usr/gcc/4.5/bin/gcc                                                 pkg:/developer/gcc-45@4.5.2-0.175.0.0.0.2.537

这里给出了好几个版本的gcc Package信息。

 

比如,你想安装3.4.3版的gcc compiler。

# pkg install  pkg:/developer/gcc-3@3.4.3-0.175.0.0.0.2.537

 

2. 为了不修改make文件而做的一个cc文件

 

下面是一个使用Unix原装cc的Make文件的例子(部分)。

# makefile
PROC = proc
CC   =  cc

INCLUDE =  -I ${ORACLE_HOME}/precomp/public -I ../inc
INC     =  ${HOME}/JBP/src/inc/
OBJ     =  ${HOME}/JBP/src/obj/

......

 

安装的gcc在哪里?

#which gcc
/usr/sfw/bin/gcc

 

做个cc文件,其内容超简单:

/usr/sfw/bin/gcc -m64 $*

 

注意,这里的 -m64, 它指示gcc生成64bit编译代码。

          $* 则接收cc 之后的一切参数。

 

cc必须可执行。

# ls -l cc
-rwxr-xr-x   1 root     root          25 Nov  6 14:21 cc

 

3. 验证

$ echo $SHELL
/usr/bin/bash

$ echo $PATH
/usr/bin:/usr/sbin:/usr/sfw/bin

$ which cc
/usr/sfw/bin/cc

$ more test.c
#include

int main(void){

    printf("Content-type: text/plain\n\n");
    printf("Hello, World!");

    return 0;

}

 

$ cc test.c

$ ls -ltr
total 15
-rw-r--r--   1 zhang    staff        130 11月  5日  17:46 test.c
-rwxr-xr-x   1 zhang    staff       9992 11月  7日  13:11 a.out

$ file a.out
a.out:          ELF 64-bit LSB executable AMD64 Version 1, dynamically linked, not stripped, no debugging information available

可见,使用gcc的别名产生的Object文件是64bit。

 

同理,使用make文件的编译链接也未见异常。

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn