occi c++ /usr/bin/ld: не удается найти -locci collect2: ld вернул 1 ошибку времени компиляции состояния выхода при использовании makefile

Здесь у меня есть приложение occi C++ в операционной системе Centos. Когда я компилирую свое приложение с помощью файла make, я получил /usr/bin/ld: не могу найти -locci collect2: ld вернул 1 ошибку статуса выхода.

Файл Employees.cpp также: -

 #include "Employees.h"
    using namespace std;
    using namespace oracle::occi;

    int main (void)
    {
        Employees *pEmployees = new Employees();
        pEmployees->List();
        delete pEmployees;
        cout << "ENTER to continue...";
        cin.get();
        return 0;
    }

    Employees::Employees()
    {
        user = "sys";
        passwd = "sis123";
        db = "oel01:1521/OEL11GR1.SAND";
        env = Environment::createEnvironment(Environment::DEFAULT);
        try
       {
          con = env->createConnection(user, passwd, db);
       }
       catch (SQLException& ex)
       {
         cout << ex.getMessage();
       }
    }

    Employees::~Employees()
    {
        env->terminateConnection (con);
        Environment::terminateEnvironment (env);
    }

    void Employees::List()
    {
      /*
       * simple test method to select data from
       * the employees table and display the results
       */
        Statement *stmt = NULL;
        ResultSet *rs = NULL;
        string sql = "select employee_id, first_name, last_name " \
                   "from employees order by last_name, first_name";

        try
       {
         stmt = con->createStatement(sql);
       }
       catch (SQLException& ex)
      {
        cout << ex.getMessage();
       }
      if (stmt)
      {
        try
        {
          stmt->setPrefetchRowCount(32);
          rs = stmt->executeQuery();
        }
        catch (SQLException& ex)
        {
          cout << ex.getMessage();
        }
        con->terminateStatement(stmt);
      }
   }

======================

здесь также файл Employees.h

#include <occi.h>
#include <iostream>
#include <iomanip>
using namespace oracle::occi;
using namespace std;
class Employees {
    public:
    Employees();
    virtual ~Employees();
    void List();
    private:
    Environment *env;
    Connection  *con;
    string user;
    string passwd;
    string db;
};

Мой файл make: -

Employees: Employees.cpp
    g++ -o Employees Employees.cpp \
    -I$(ORACLE_HOME)//usr/include/oracle/11.1/client \
    -L$(ORACLE_HOME) -lclntsh -locci

debug: Employees.cpp
    g++ -ggdb3 -o Employees Employees.cpp \
    -I$(ORACLE_HOME)/usr/include/oracle/11.1/client \
    -L$(ORACLE_HOME) -lclntsh -locci
clean:
    rm -f Employees

Библиотека sqlclient occi уже установлена ​​в каталоге /usr/include/oracle/11.1/client Centos. Проблема заключается в создании файла, пожалуйста, помогите мне.


person Sisay Zinabu    schedule 06.10.2014    source источник
comment
Где находится библиотека libocci.a/libocci.so?   -  person Etan Reisner    schedule 06.10.2014
comment
/usr/include/oracle/11.1/client в этом каталоге   -  person Sisay Zinabu    schedule 06.10.2014


Ответы (1)


Если путь к заголовкам оракула - $(ORACLE_HOME)//usr/include/oracle/11.1/client (из аргумента -I в вашем make-файле), то я считаю маловероятным, что путь к библиотекам - $(ORACLE_HOME) (из аргумента -L в вашем make-файле), и мне кажется гораздо более вероятным, что быть $(ORACLE_HOME)//usr/lib/oracle/11.1/client (или что-то в этом роде).

person Etan Reisner    schedule 06.10.2014
comment
Я делаю это, но это то же самое? - person Sisay Zinabu; 06.10.2014
comment
@sis Тогда это может быть неправильный путь. Вам нужно найти правильный путь и использовать его. Учитывая ваш ответ на мой комментарий, путь будет выглядеть как /usr/include/oracle/11.1/client (хотя это немного странно, но, возможно, именно так работает оракул). - person Etan Reisner; 06.10.2014
comment
какой обычный путь вы знаете в библиотеке Centos occi? - person Sisay Zinabu; 06.10.2014
comment
или мне снова установить мгновенный клиент, если вы скажете «да», дайте мне какой-нибудь соответствующий способ установки в Centos. Спасибо. - person Sisay Zinabu; 06.10.2014
comment
@sis Я ничего не знаю об Oracle. Но эта проблема не специфична для оракула. У вас есть библиотека в нестандартном месте, поэтому вам нужно сообщить компилятору/компоновщику об этом пути. Вот для чего нужен -L. Укажите правильный путь (путь, содержащий файл libocci.a или libocci.so), и он должен работать. - person Etan Reisner; 06.10.2014