Oracle C ++ Linux и более странные вещи - PullRequest
0 голосов
/ 27 ноября 2009

Так вот история. У меня есть это устройство, которое использует Linux и другие инструменты с открытым исходным кодом (между прочим, ARM ). И мне дали задание создать какое-нибудь волшебное приложение для кассира.

Я сделал это, и теперь мой начальник сделал новый запрос. Он хочет, чтобы я подключил это устройство (устройство) к удаленной базе данных (предпочтительно Oracle ). Это то, что я начал делать с облегченной версией мгновенного клиента oracle. Все хорошо и круто, пока я не запустил свой первый привет мир:

#include <occi.h>

using namespace oracle::occi;

int main(){
  Environment *env = Environment::createEnvironment();
  Connection *conn = env->createConnection("HR", "password");
  env->terminateConnection(conn);
  Environment::terminateEnvironment(env);
  return 0;
}

Связывание с occi, clntsh, thread ; И установить путь поиска в библиотеке, наряду с другими вещами: « $ {workspace_loc: / OracleTest / instantclient_10_2} », который является каталогом, в котором хранятся мои файлы .so ;

Вот команда компиляции:

ucfront-g++ -Wl,-elf2flt="r" -static -o OracleTest  ./main.o   -locci -lclntsh -lthread -L/usr/local/arm-elf/lib -L"C:\workspace\OracleTest\instantclient_10_2" -L/usr/local/fit-libs/lib

А вот и ошибка:

/usr/local/arm-elf/bin/ld.real: cannot find -locci collect2: ld returned 1 exit status

И есть несколько вещей, которые я хотел бы упомянуть:

1 - я запускаю windows и скомпилирую это для linux , загруженная мной мгновенная версия клиента для linux x86 (не знаю, будет ли это работать или если это может быть источником проблемы).

2 - Я использую модифицированную версию eclipse для разработки, специфичную для этого устройства.

3- Я понятия не имею, стоит ли мне переместить эти Oracle libs на устройство после компиляции, поэтому, если кто-нибудь сможет дать мне ориентир на это, я буду очень благодарен.

TLDR: Я не хочу компилировать приведенный выше код, но он не может связать, помогите, пожалуйста!

EDIT

На два первых ответа: нет, я не нашел никаких конкретных библиотек ARM, я не думаю, что они есть.

Вот ссылка, если кто-нибудь может найти что-то, что напоминает дистрибутив ARM, я был бы благодарен. Существует два дистрибутива RISC , но я не знаю, совместимы ли они с ARM :

Instant Client for HP-UX PA-RISC (64-bit)
Instant Client for HP-UX PA-RISC (32-bit) 

Ответы [ 6 ]

1 голос
/ 07 января 2010

Как насчет использования java с драйвером jdbc? Oracle-thin-driver является чисто Java, поэтому он должен работать на руку. Если вы не можете написать чистое java-приложение и вам нужно использовать другие библиотеки на вашем arm-устройстве, вы можете использовать JNI-вызовы из java для использования собственных библиотек arm.

1 голос
/ 27 ноября 2009

Эмм ... есть ли мгновенный клиент (или любой клиент Oracle) для Linux + ARM вообще? Я не вижу ни одного на странице загрузок.

Если нет, вам придется использовать ODBC или другую базу данных, имеющую клиент с открытым исходным кодом, который вы можете скомпилировать.

1 голос
/ 27 ноября 2009

Если у вас нет ARM-версий библиотеки Oracle, вам совершенно не повезло, и вам нужно было бы ее приобрести (возможно, есть бесплатный драйвер?) Или внедрить протокол связи вручную.

0 голосов
/ 07 января 2010

Ваши лучшие шансы - либо использовать Java и драйвер JDBC, как предложено tjin, либо полностью забыть идею прямого подключения к базе данных; создайте веб-сервис на сервере и используйте его вместо этого.

0 голосов
/ 27 ноября 2009
  1. Вам необходимо переместить -L аргументы перед -l аргументами.
  2. Вам понадобятся библиотеки ARM для запуска на устройстве, а не библиотеки x86, не знаю, если Oracle их предоставит.
  3. Возможно, вы не хотите, чтобы устройство напрямую обращалось к базе данных. Было бы лучше поместить сервер среднего уровня в стек и заставить устройства взаимодействовать с ним (через XML-RPC или другой протокол RPC).
0 голосов
/ 27 ноября 2009

Ну, я уверен, что вам понадобится Windows-версия Oracle Client, если вы работаете на Windows-машине.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...