在Oracle 11.2上用Gcc進行64bit編譯(Solaris 11, x86)

從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/[email protected]
pkg.summary     set      GCC Runtime libraries                                               pkg:/system/library/[email protected]
pkg.summary     set      GCC - 4.5 Compilers                                                 pkg:/developer/[email protected]
pkg.summary     set      GCC - 4.5 Runtime                                                   pkg:/system/library/[email protected]
basename        hardlink usr/sfw/bin/gcc                                                     pkg:/developer/[email protected]
basename        link     usr/bin/gcc                                                         pkg:/developer/[email protected]
pkg.description set      GCC Runtime - Shared libraries used by gcc and other gnu components pkg:/system/library/[email protected]
pkg.summary     set      gcc - The GNU C compiler                                            pkg:/developer/[email protected]
basename        dir      usr/gcc                                                             pkg:/system/library/[email protected]
basename        dir      usr/gcc/4.5/lib/gcc                                                 pkg:/system/library/[email protected]
basename        dir      usr/sfw/lib/gcc                                                     pkg:/developer/[email protected]
basename        dir      usr/sfw/libexec/gcc                                                 pkg:/developer/[email protected]
basename        dir      usr/gcc                                                             pkg:/developer/[email protected]
basename        dir      usr/gcc/4.5/lib/gcc                                                 pkg:/developer/[email protected]
basename        file     usr/gcc/4.5/bin/gcc                                                 pkg:/developer/[email protected]

這裏給出了好幾個版本的gcc Package信息。

 

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

# pkg install  pkg:/developer/[email protected]

 

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 <stdio.h>

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文件的編譯鏈接也未見異常。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章