1. 程式人生 > >[C++]linux下使用occi連線oracle遇到的兩個錯誤

[C++]linux下使用occi連線oracle遇到的兩個錯誤

--

我的makefile如下:

[plain] view plaincopyprint?
  1. includepath=${ORACLE_HOME}/precomp/public  
  2. occpath=${ORACLE_HOME}/oci/include  
  3. libpath=${ORACLE_HOME}/lib  
  4. libfile=-L${libpath} #/usr/lib/libstdc++.so.5  
  5. incfile=-I${includepath}  
  6. occifile=-I${occpath}  
  7. cppOra:cppOra.cc  
  8.         g++ -o cppOra cppOra.cc  ${occifile} ${incfile} ${libfile} -lclntsh -locci -Wall -O -g  
  9. clean:  
  10.         rm cppOra  

PS:-I是指定include路徑,-L是指定lib路徑

linux下我unzip後的路徑為: /home/oracle/cry/instantclient_11_2

1.編譯錯誤:
/usr/bin/ld: warning: libnnz11.so, needed by /usr/lib/oracle/11.1/client/lib/libclntsh.so, not found (try using -rpath or -rpath-link)
/usr/lib/oracle/11.1/client/lib/libclntsh.so: undefined reference to `nztSetSqlnetFunc'
/usr/lib/oracle/11.1/client/lib/libclntsh.so: undefined reference to `nztSetAppDefaultLocation'
/usr/lib/oracle/11.1/client/lib/libclntsh.so: undefined reference to `nzos_DisableClientAuthentication'

..

解決方法:

還是庫連線的問題,在/etc/ld.so.conf中新增 /home/oracle/cry/instantclient_11_2  後正常.

2.執行錯誤:

./cppOra: error while loading shared libraries: libnnz11.so: cannot open shared object file: No such file or directory

解決:

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

其實質還是lib庫檔案連結的問題.

最後執行正常如下:

[[email protected] cry]$ ./cppOra
debug1
7369  AND  SMITH
2013-07-14 02:00:29
7499  AND  ALLEN
2013-07-14 02:00:29
7521  AND  WARD
2013-07-14 02:00:29
7566  AND  JONES
2013-07-14 02:00:29
7654  AND  MARTIN
2013-07-14 02:00:29
7698  AND  BLAKE
2013-07-14 02:00:29
7782  AND  CLARK
2013-07-14 02:00:29
7788  AND  SCOTT
2013-07-14 02:00:29
7839  AND  KING
2013-07-14 02:00:29
7844  AND  TURNER
2013-07-14 02:00:29
7876  AND  ADAMS
2013-07-14 02:00:29
7900  AND  JAMES
2013-07-14 02:00:29
7902  AND  FORD
2013-07-14 02:00:29
7934  AND  MILLER
2013-07-14 02:00:29
SELECT  SUCCESS

相關推薦

LinuxPython連線Oracle 報cx_Oracle.DatabaseError: DPI-1047: 64-bit Oracle Client library cannot be load

在Linux上使用python執行資料庫指令碼的時候報:cx_Oracle.DatabaseError: DPI-1047: 64-bit Oracle Client library cannot be loaded解決方法 這個導致這個問題的原因是本機的Pytho

linux用scp命令在服務器之間傳輸文件,利用php_scp函數進行文件傳輸

evc 在操作 path send 返回值 遠程 false cal 上傳 在linux下利用scp進行文件傳輸, 從服務器下載文件 scp [email protected]/* */:/path/filename /path/filename 上傳

Linuxqt 禁止程式執行

Linux系統下qt防止同一程式在系統中執行兩個例項,直接上程式碼:    QEventLoop loop;    connect(&process,SIGNAL(readyReadStandardOutput()),&loop,SLOT(quit())); 

[C++]linux使用occi連線oracle遇到的錯誤

-- 我的makefile如下: [plain] view plaincopyprint? includepath=${ORACLE_HOME}/precomp/public   occpath=${ORACLE_HOME}/oci/include 

linuxc++使用occi連線oracle資料庫步驟,及出現的問題和解決

1. 所需安裝包 (64 位 ) oracle-instantclient-basic-10.2.0.3-1.x86_64.rpm oracle-instantclient-devel-10.2.0.3-1.x86_64.rpm 2. 安裝 安裝後,庫檔案路

Linux環境Python連線Oracle

       最近公司要求在linux下對Mysql,Oracle進行增加使用者,使用者改密等操作。Mysql資料庫實現起來比較簡單,這個Oracle讓我頭疼了一陣。於是從網上查閱資料,經自己的測試以後終於成功,現將方法總結如下:python資料庫介面python DB AP

LinuxPHP開啟Oracle支持(oci8)

找到 11.2.0.3 com 文本文 des 1.2 download 編譯 執行命令 使用php的常見問題是:編譯php時忘記加入某擴展,後來想加入擴展,可是由

c++ linux 匯編分析傳參以及返回值

傳遞 {} UNC 而不是 pub x86 target 訪問 開始 註意:都是在沒有優化的情況下編譯的。因為只要開-O1或是-O2,那麽匯編代碼就少的可憐了,都被優化掉了 編譯器版本:x86-64 gcc 5.5 1 POD類型傳參 1.1 一個pod參數,p

linux重新啟動oracle

media iat med rtu 連接數 關閉數據庫 linux下 oracl -a 第一步、以Oracle帳戶進入Linux系統 第二步、執行以下命令查看數據庫監聽器的狀況: lsnrctl status 或者查看數據庫端口是否被監聽(默認1521) netstat -

linux執行python指令碼的種方式

1、直接使用python xxxx.py執行。其中python可以寫成python的絕對路徑。使用which python進行查詢。 2、在檔案的頭部(第一行)寫上#!/usr/bin/python2.7,這個地方使用python的絕對路徑,就是上面用which python查詢來的結果

Linux解除安裝Oracle 11g

第一種方法: 使用oracle自帶的runInstaller 解除安裝 [[email protected]_0_14_centos deinstall]$ cd $ORACLE_HOME [[email protected]_0_14_centos 11.2.0]$ cd dei

linux快速安裝oracle client 12

前言: 之前裝過一次 oracle client 11 但是oracle 資料庫是 12 後來出現亂碼問題 怎麼也解決不了 發現系統和navicat 都是相同的字元編碼 所以猜測資料庫的編碼應該是沒有問

linux啟動/關閉oracle

一、Linux下啟動Oracle   Linux下啟動Oracle分為兩步:   1)啟動監聽;   2)啟動資料庫例項; 1.登入伺服器,切換到oracle使用者,或者以oracle使用者登入 [[email protected] ~]$ su -

Linux啟動/關閉Oracle正確順序

一、Linux下啟動Oracle   Linux下啟動Oracle分為兩步:   1)啟動監聽;   2)啟動資料庫例項; 1.登入伺服器,切換到oracle使用者,或者以oracle使用者登入 [[email protected] ~]$ su - or

linux重啟oracle 命令

-- linux 下對 oracle 資料庫的操作  1. linux下啟動 oracle su - oracle (切換到oracle使用者下) sqlplus /nolog conn /as sysdba startup exit 資料庫啟動使用startup命令,它有

C++使用POCO庫連線oracle資料庫(ODBC)

POCO庫是個功能很強大的工具庫,這次專案中就用到了POCO庫中的DATA連線資料庫的方式,直接上程式碼!         //使用ODBC的方式連線oracle資料庫 ODBC::Connector::registerConnector();//註冊 Ses

linux重啟oracle服務

在linux下重啟oracle資料庫及監聽器: 方法1: 用root以ssh登入到linux,開啟終端輸入以下命令: cd $ORACLE_HOME   #進入到oracle的安裝目錄  dbstart           #重啟伺服器  lsnrctl star

嵌入式第一天(linuxminicom連線開發板)

本人使用linux,而天嵌科技的開發板的開發工具全都是基於windows的,本人又不想重回windows, 所以板子買來之後一直擱置了好幾個月,基於各種原因,今天特意花了一點時間來研究linux下如何連線 開發板。 條件:宿主機T400,linux2.6,usb2.0介面,

分享一個Linux安裝ASM+ORACLE的自動化指令碼(一)

    近期在脫產參加Oracle技術培訓,專家級講師說Oracle資料庫60%的問題都是出在安裝過程不規範,讓我們多練習資料庫的安裝,孰能生巧,並且可以對以後安裝資料庫時可能遇到的問題進行及時準確地定位。     Linux下安裝Oracle資料庫不同於Windows,最

Linux重啟Oracle資料庫

原文連結     https://www.2cto.com/database/201709/680889.html 1、Linux下以Oracle帳戶進入Linux系統。 2、執行以下命令檢視資料庫監聽器的狀況: lsnrctl status 3、執行以