2017-10-16 3 views
2

Linux (Ubuntu)에서 Gurobi를 버전 7.5.1로 업데이트했습니다. 사용 가능한 최신 버전입니다.버전 7.5.1에서 Gurobi 예제를 컴파일 할 수 없습니다.

내가 Gurobi를 사용하는 코드를 컴파일 할 때마다이 문제 - 예를 들어, 예 /opt/gurobi751/linux64/examples에 포함, 난 그냥 정의되지 않은 참조 오류의 문자열 (예를 들어,undefined reference to GRBModel::set(...))을 얻는다. /opt/gurobi751/linux64/examples/build 디렉토리로 가서 make run_diet_c++ 명령을 실행하여 컴파일하고 실행하면 문제가 해결된다고 생각합니다. 수정 시도

(1) 내 .bashrc 파일에 $GUROBI_HOME을 설정 한 - 그것은 올바른 디렉토리를 가리 킵니다. $LD_LIBRARY_PATH$PATH도 업데이트되었습니다. 그들은 모두 올바른 디렉토리를 가리 킵니다.

(2) 유효한 구로비 라이센스가 있습니다. .lp 파일을 작성하고 gurobi_cl model.lp처럼 실행하면 올바르게 실행됩니다. gurobi_cl --version을 실행하면 예상 출력 (, 즉 버전 7.5.1)이 표시됩니다.

(3) C 버전 (make run_diet_c)을 컴파일하려고하면 모든 것이 예상대로 작동합니다.

추가 정보는

가 내 홈 디렉토리에 다음과 같은 테스트 파일을 만든 :

#include <stdio.h> 
#include "gurobi_c++.h" 

int main(int argc, char **argv) 
{ 
    GRBVar x; 
    std::cout << "Hello, world!" << std::endl; 
    return 0; 
} 

내가 다음 명령 ++ g을 사용하여 컴파일 :

g++ -Wall test.cpp -o executable -I/opt/gurobi751/linux64/include -L/opt/gurobi751/linux64/lib -lgurobi_c++ -lgurobi75 

이것은 컴파일 불평하지 않고 달린다. 그러나이 예제를 시도한 :

#include <stdio.h> 
#include "gurobi_c++.h" 

int main(int argc, char **argv) 
{ 
    GRBEnv* env = 0; 
    try { 
     env = new GRBEnv(); 
     GRBModel model = GRBModel(*env); 
     model.addVar(0, 1.0, 1.0, GRB_CONTINUOUS, "TheVar"); 
     model.update(); 
     model.optimize(); 
    } catch (...) { 
     std::cout << "Exception during optimization" << std::endl; 
    } 

    delete env; 

    return 0; 
} 

및 해당 명령을 사용하여 컴파일 된 및 실패했습니다. 그래서 include 문이 잘 작동하는 것처럼 보이지만 어떻게 든 라이브러리에 올바르게 연결되어 있지 않은 것 같습니다.

자세한 정보가 필요하면 알려주십시오. 또한 명확하지 않은 경우 편집 및 연결 프로세스에 대해 잘 모릅니다. 따라서 여기에서 저를 방해 할 수 있습니다.

+0

우분투 릴리스? 기본 C++ 컴파일러의 변경 사항은 무엇입니까?C 예제가 Makefile에서 컴파일되어 실행됩니까? –

+0

@GregGlockner 우분투 16.04 LTS. 샘플 makefile에 들어있는 플래그가있는 표준'g ++'컴파일러 만 사용하면됩니다. C 예제는 컴파일하거나 실행하지 않습니다. –

+0

@GregGlockner C 예제에 대한 자세한 내용 : 공유 라이브러리를로드하는 동안 'libgurobi75.so : 공유 객체 파일을 열 수 없습니다 : 해당 파일이나 디렉토리가 없습니다.'라는 오류가 발생합니다. 그러나 (1)'libgurobi75.so'는'include' 디렉토리에 있습니다. 그리고 (2) 그것은 여전히 ​​올바르게 실행되는 실행 파일을 생성합니다 ... !! –

답변

1

g ++ 버전에 libgurobi_C++를 컴파일해야합니다.

첫째, 당신은 lib 폴더에 컴파일 된 파일을 복사해야합니다, 지금 폴더

cd /opt/gurobi751/linux64/src/build/ 

make 

로 이동 :

cp libgurobi_c++.a ../../lib/

당신은 컴파일 및 운영.

+1

이 질문에 대해 잊어 버렸습니다. 실제로 제 g ++은 제 깨닫지 ​​못하고 버전 5로 업데이트되었습니다. 이것이 문제의 원인이었습니다. –

관련 문제