Неопределенная ссылка на символы nlopt _... - PullRequest
0 голосов
/ 02 мая 2019

Я довольно новичок в Фортране, и это может звучать глупо. Я сталкиваюсь с ошибкой при компиляции кода на Фортране, который приведен в качестве примера в NLOPT Wiki.

Я компилирую в Ubuntu 18.04 LTS, используя следующую команду:

gfortran example-nlopt.f90 -o example-nlopt -I/usr/local/include/

В терминале выдается следующая ошибка:

/tmp/ccbAim6b.o: In function `MAIN__':
example-nlopt.f90:(.text+0x26): undefined reference to `nlo_create_'
example-nlopt.f90:(.text+0x42): undefined reference to `nlo_get_lower_bounds_'
example-nlopt.f90:(.text+0x67): undefined reference to `nlo_set_lower_bounds_'
example-nlopt.f90:(.text+0x8a): undefined reference to `nlo_set_min_objective_'
example-nlopt.f90:(.text+0xca): undefined reference to `nlo_add_inequality_constraint_'
example-nlopt.f90:(.text+0x10e): undefined reference to `nlo_add_inequality_constraint_'
example-nlopt.f90:(.text+0x12d): undefined reference to `nlo_set_xtol_rel_'
example-nlopt.f90:(.text+0x164): undefined reference to `nlo_optimize_'
example-nlopt.f90:(.text+0x305): undefined reference to `nlo_destroy_'
collect2: error: ld returned 1 exit status

1 Ответ

0 голосов
/ 03 мая 2019

Исходя из того, что я видел в документации nlopt (https://nlopt.readthedocs.io/en/latest/NLopt_Installation/#changing-the-installation-directory), похоже, вам просто нужно указать библиотеку для ссылки. Возможно, попробуйте это:

gfortran  -I/usr/local/include/ -L/usr/local/lib example-nlopt.f90 -o example-nlopt -lnlopt -lm

Это предполагает, что у вас естьlibnlopt.so в / usr / local / lib, если нет, то укажите его местоположение с опцией -L.

...