2009-11-27 3 views
0

그래서 여기 이야기가 있습니다. 나는 리눅스와 더 많은 오픈 소스 툴 (btw ARM)을 사용하는이 장치를 가지고있다. 그리고 그걸로 마법의 계산원 응용 프로그램을 만드는 작업이 주어졌습니다.오라클 C++ 리눅스 이상한 것들

나는 그것을했으며 이제 나의 상사가 새로운 요청을했습니다. 그는 내가 그 물건 (장치)을 원격 데이터베이스 (바람직하게는 오라클)에 연결하기를 원합니다. 그래서 오라클 인스턴트 클라이언트의 가벼운 버전으로 시작한 것이지요. 내가 처음으로 인사 세계 실행까지 모든 것이 잘 시원한 :

#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, 스레드에 대한 연결을; 라이브러리 검색 경로를 다른 항목과 함께 설정하면 : $ {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 전 '을 실행하고을 컴파일하고 이것을 리눅스으로 컴파일하면 즉각적인 클라이언트 버전 인 다운로드 한 것은 Linux x86 (문제가 발생하거나 문제의 근원이 될 수 있다면 아이디어 없음)입니다.

2 수정 된 버전 이클립스을 사용하여 개발했습니다.

3 나는 그 사람들을 움직여야할지 전혀 모르겠다. 컴파일 후 장치에 libs가 있으면, 누군가 내가 그 방향을 제시 할 수 있다면, 나는 매우 감사 할 것이다.

TLDR : 위의 코드를 컴파일하지 않겠지 만 링크가되지 않습니다. 도와주세요.

편집가 : 두 개의 첫번째 답변을

, 아니 내가 어떤 특정 ARM 라이브러리를 발견하지 않았습니다, 나는 어떤 있다고 생각하지 않습니다.

누구든지 ARM 배포판과 비슷한 것을 찾을 수 있다면 감사하겠습니다. 이 유통이 RISC하지만 나는 그들이 ARM와 호환되는지 모르는 : 당신은 오라클 라이브러리의 ARM 버전이없는 경우

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

답변

1

, 당신이 완전히 운이있어 하나 (아마도 무료 드라이버가 있습니까?)를 얻거나 수동으로 유선 프로토콜을 구현해야합니다.

0

글쎄 Windows 컴퓨터에서 실행중인 경우 오라클 클라이언트의 Windows 버전이 필요하다고 확신합니다.

+0

내가 배포 할 Linux에서 어떻게 실행하게합니까? 라이브러리와 컴파일 된 소프트웨어간에 어떤 종류의 의존성이있을 것입니까? –

0
  1. -l 인수 전에 -L 인수를 이동해야합니다.
  2. x86 라이브러리가 아닌 장치에서 실행하려면 ARM 라이브러리가 필요하며 오라클이 제공하는 것이라면 전혀 알 수 없습니다.
  3. 장치를 데이터베이스에 직접 액세스하지 않으려는 경우 일 수 있습니다. 스택에 미들 티어 서버를 두어 장치가 XML-RPC 또는 다른 RPC 프로토콜을 통해 말하도록하는 것이 좋습니다.
+0

세 번째 옵션은 내 인생을 훨씬 쉽게 만들어 줄 것이지만, 왜 장치가 데이터베이스와 직접 대화하는 것을 원하지 않습니까? –

+0

http://en.wikipedia.org/wiki/Multitier_architecture 기본적으로 독립성을 허용합니다. 다른 하나를 변경하지 않고도 데이터베이스와 엔드 포인트를 모두 바꿀 수 있습니다. 귀하의 장치에 독점적 인 라이브러리가 필요하다는 점을 정확하게 피하십시오. –

1

Erm ... Linux + ARM 용 인스턴트 클라이언트 (또는 오라클 클라이언트)가 있습니까? 다운로드 페이지에 하나도 표시되지 않습니다.

그렇지 않은 경우 ODBC 또는 컴파일 할 수있는 오픈 소스 클라이언트가있는 다른 데이터베이스를 사용해야합니다.

1

java를 jdbc 드라이버와 함께 사용하는 방법은 어떻습니까? 오라클 - 씬 - 드라이버는 순수한 자바이므로 팔에서 작동해야합니다. 순수 java-app을 작성할 수없고 팔 장치에서 다른 라이브러리를 사용해야하는 경우 java의 JNI 호출을 사용하여 기본 팔 라이브러리를 사용할 수 있습니다.

0

가장 좋은 기회는 tjin에서 제안한대로 Java와 JDBC 드라이버를 사용하거나 데이터베이스에 직접 연결한다는 생각을 완전히 잊어 버릴 수 있습니다. 서버에서 웹 서비스를 생성하고이를 대신 사용하십시오.