本文介绍了未定义对nlopt _...符号的引用的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我对Fortran还是很陌生,这听起来像是一个愚蠢的问题.在编译作为示例发布在NLOPT Wiki中的Fortran代码时,我遇到错误.

I am fairly new to Fortran and this may sound like a silly question. I encounter an error when compiling the Fortran code that is posted as an example in the NLOPT Wiki.

我使用以下命令在Ubuntu 18.04 LTS中进行编译:

I compile in Ubuntu 18.04 LTS using the following command:

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

在终端中产生以下错误:

The following error is produced in the terminal:

/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

推荐答案

基于我在nlopt文档中看到的内容( https://nlopt.readthedocs.io/en/latest/NLopt_Installation/#changing-the-installation-directory ),看起来您只需要指定要链接的库.也许试试这个:

Based on what I saw in nlopt's documentation (https://nlopt.readthedocs.io/en/latest/NLopt_Installation/#changing-the-installation-directory) it looks like you just need to specify the library to link against. Maybe try this:

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

这假定您在/usr/local/lib中有libnlopt.so,如果没有,则使用-L选项指向它的位置.

This assumes you have the libnlopt.so in /usr/local/lib, if not then point to its location with the -L option.

这篇关于未定义对nlopt _...符号的引用的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

08-05 01:44