Ubuntu 12.10 x64 Oracle11g Pro *c/c++ 環境配置

來源:互聯網
上載者:User

一開始在Oracle的bin目錄中調用proc會有很多錯誤,找不到庫,然後編譯錯誤等等。下面說一下我的環境配置過程:

1)設定動態庫路徑:

可以到etc/profile裡面加入,不過我是寫到~/.bashrc檔案裡的,加入下面的語句:

LD_LIBRARY_PATH=$ORACLE_HOME/lib:/usr/lib:/usr/local/lib;
export LD_LIBRARY_PATH

重新開啟終端就可以了。

2)編譯問題有點多,我這裡唯寫我目前遇到的問題,和我的解決辦法

首先是編譯跳出N多屏長度的error,終端上捲軸托會頂部也顯示不完,最後只好編譯的時候$ORACLE_HOME/bin/proc file.pc | more

分屏顯示,看到有很多.h檔案找不到,在網上查資料,發現需要去配置如下檔案:

$ORACLE_HOME/precomp/admin/pcscfg.cfg

進去一看,include裡麵包含了很多redhat和suse的路徑,我這裡可是用的ubuntu喔,果斷把redhat和suse相關的路徑都刪除,但是這個時候我該寫什麼路徑了,看看剛才編譯的報錯,有一個叫stddef.h的檔案,這不是c的標準庫的定義檔案嘛,說明proc需要調用c語言的標準庫,這不就好辦了嘛,方法如下:

找標準庫的標頭檔路徑:

sudo find / -name "stddef.h"

我的搜尋結果如下:

/usr/lib/gcc/x86_64-linux-gnu/4.7/include/stddef.h
/usr/lib/gcc/x86_64-linux-gnu/4.4/include/stddef.h
/usr/lib/syslinux/com32/include/bitsize/stddef.h
/usr/lib/syslinux/com32/include/stddef.h
/usr/src/linux-headers-3.5.0-17/include/linux/stddef.h
/usr/include/linux/stddef.h

第一個路徑就是我需要的,其他的應該不是喔。當然我沒有實驗過,但是gcc的肯定沒錯,所以我這裡使用第一個,將路徑寫道pcscfg.cfg檔案中去即可。

 

好了繼續編譯...

這次proc filename.pc檔案沒有問題,proc產生了.c的c語言源檔案,然後使用gcc filename.c -o main 又是錯誤,提示“致命錯誤:sqlca.h:沒有那個檔案或目錄”,所以我馬上使用find命令找到了這個檔案的路徑,然後gcc filename.c -I $ORACLE_HOME/precomp/public -o main依然錯誤,這次是login.c:(.text+0x1b9):對‘sqlcxt’未定義的引用,這一看應該還是沒有連結到庫檔案。最後查資料,果然還有庫檔案需要說明,最後成功通過編譯的完整命令如下:

gcc login.c -I $ORACLE_HOME/precomp/public -L$ORACLE_HOME/lib -lclntsh -o main

最後執行main,成功運行...

好的這樣就完成了pro*c/c++的環境搭建了。過兩天再看看windows下的環境搭建,先寫到這裡。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.