2011-12-15 4 views
3

이것은 내 첫 번째 질문입니다. 앞으로 잘 작성되지 않거나 바보가 아니더라도 앞으로 유감입니다. C++로 옥타브 라이브러리를 사용하는 방법

나는 처음에는 몇 가지 정의되지 않은 참조 오류를 가지고에서 우분투 (리눅스 멍청한 놈)에 내가의 Qt Creator를 사용하고 C++

와 옥타브 라이브러리

#include "octave/oct.h" 

int main(int argc, char *argv[]) 
{ 
    QApplication a(argc, argv); 

    Matrix matrix(3,4); 

    return a.exec(); 
} 

를 사용하는 것을 시도하고있다. 프로그램에 라이브러리가 없으므로 라이브러리 "liboctave.so"를 찾았습니다. usr/lib/octave-3.2.4에서 찾았습니다. 더 정확하게 말하면 "liboctave.so"라는 파일명을 가리키는 심볼릭 링크가있었습니다. QtCreators의 "라이브러리 추가"기능을 사용하여 라이브러리를 프로젝트에 추가했습니다. 프로그램이 내 .pro 파일에서이 코드를 생성했습니다.

unix:!macx:!symbian: LIBS += -L$$PWD/../../../../usr/lib/octave-3.2.4/ -loctave 

INCLUDEPATH += $$PWD/../../../../usr/lib/octave-3.2.4 
DEPENDPATH += $$PWD/../../../../usr/lib/octave-3.2.4 

프로그램이 오류없이 작성되었습니다. 정의되지 않은 참조에 대해서도 불평하지 않습니다. 내가 그것을 실행할 때하지만

/home/martin/Projects/test-build-desktop/test: error while loading shared libraries: liboctave.so: cannot open shared object file: No such file or directory 
/home/martin/Projects/test-build-desktop/test exited with code 127 

나는 그것이 파일을 찾을 수 없습니다 이유를 알아낼 수 없습니다 ...

시작/홈/마틴/프로젝트/테스트 빌드 - 바탕 화면/테스트를 얻을. 맨눈으로 파일을보고 있습니다.

나는이 문제가 허가가 될 수 있으므로 "liboctave.so.3.2.4"파일을 프로젝트 위치에 복사하고 이름을 "liboctave.so"로 변경하고 모두에게 모든 권한을 추가했음을 알았습니다. 그런 다음 Qtcreator "라이브러리 추가"기능을 사용하여이 라이브러리를 추가했지만 여전히 동일한 오류가 발생합니다. 당신이 당신의 povide 불명 실행 시간 그러나 매개 변수 -L$$PWD/../../../../usr/lib/octave-3.2.4/ 컴파일 할 때

나에게

답변

2

liboctave 표준 위치에 설치되지 않습니다, 도와주세요.

  1. 환경 LD_LIBRARY_PATH=/full/path/to/usr/lib/octave-3.2.4 변수 다음 실행 프로그램 제공 :

    export LD_LIBRARY_PATH=/full/path/to/usr/lib/octave-3.2.4 
    
  2. 하드 코딩 추가 옵션 사용 excutable withing에 경로 : -Wl,-rpath=$$PWD/../../../../usr/lib/octave-3.2.4/

    그래서 두 가지 옵션이 있습니다 그리고이 위치에서 검색 할 것입니다.

+0

고맙습니다! 첫 번째 선택이 효과가 있습니다. 그러나 나는 환경 변수를 선언 한 동일한 쉘 세션으로 실행 파일을 실행해야한다. QtCreator로 실행 파일을 실행하려고하면 작동하지 않습니다. 하지만 그것은 리눅스 지식이 부족한 것입니다. –