您好,欢迎访问一九零五行业门户网

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

从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文件的编译链接也未见异常。
其它类似信息

推荐信息