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 문이 잘 작동하는 것처럼 보이지만 어떻게 든 라이브러리에 올바르게 연결되어 있지 않은 것 같습니다.
자세한 정보가 필요하면 알려주십시오. 또한 명확하지 않은 경우 편집 및 연결 프로세스에 대해 잘 모릅니다. 따라서 여기에서 저를 방해 할 수 있습니다.
우분투 릴리스? 기본 C++ 컴파일러의 변경 사항은 무엇입니까?C 예제가 Makefile에서 컴파일되어 실행됩니까? –
@GregGlockner 우분투 16.04 LTS. 샘플 makefile에 들어있는 플래그가있는 표준'g ++'컴파일러 만 사용하면됩니다. C 예제는 컴파일하거나 실행하지 않습니다. –
@GregGlockner C 예제에 대한 자세한 내용 : 공유 라이브러리를로드하는 동안 'libgurobi75.so : 공유 객체 파일을 열 수 없습니다 : 해당 파일이나 디렉토리가 없습니다.'라는 오류가 발생합니다. 그러나 (1)'libgurobi75.so'는'include' 디렉토리에 있습니다. 그리고 (2) 그것은 여전히 올바르게 실행되는 실행 파일을 생성합니다 ... !! –