Невозможно скомпилировать примеры Gurobi в версии 7.5.1

Я только что обновил Gurobi до версии 7.5.1 для Linux (Ubuntu) — это самая новая доступная версия.

проблема Каждый раз, когда я пытаюсь скомпилировать любой код, который использует Gurobi — например, примеры, включенные в /opt/gurobi751/linux64/examplesЯ просто получаю строку с неопределенными ссылочными ошибками (например undefined reference to GRBModel::set(...)). Я считаю, что проблема будет решена, если я могу пойти в каталог /opt/gurobi751/linux64/examples/build и запустить команду make run_diet_c++ и пусть он скомпилируется и запустится.

Попытки исправить

(1) Я установил $GUROBI_HOME в моем .bashrc файл — он указывает на правильный каталог. $LD_LIBRARY_PATH а также $PATH были также обновлены. Все они указывают на правильные каталоги.

(2) У меня есть действующая лицензия Gurobi. Если я напишу .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 работает нормально, но почему-то он неправильно связывается с библиотекой?

Пожалуйста, дайте мне знать, если вам нужна дополнительная информация. Также, если неясно, я не очень разбираюсь в процессе компиляции и компоновки, что, вероятно, мешает мне здесь.

2

Решение

Вам нужно скомпилировать libgurobi_c ++ для вашей версии g ++.

Сначала зайдите в папку

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

make

Теперь вам нужно скопировать скомпилированный файл в папку lib:

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

Вы скомпилируете и запустите.

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]