英特尔编译器未定义对符号“for_inquire”的引用
Posted
技术标签:
【中文标题】英特尔编译器未定义对符号“for_inquire”的引用【英文标题】:Intel compiler undefined reference to symbol 'for_inquire' 【发布时间】:2019-02-07 23:59:42 【问题描述】:我正在运行一个给我的 Makefile 来编译一些 Fortran 代码和一些 C++ 代码。这是使用 intel 编译器在 CentOS 上编译的。我没有编写任何代码或 Makefile,也不知道我在做什么。
当我运行 Makefile 脚本时,尝试使用 Fortran 代码“libStuff”执行某些操作时出现以下错误:
ld: /home/myProject/trunk/libStuff/lib/libStuff.a(stuff.o): undefined reference to symbol 'for_inquire'
/opt/intel2019/compilers_and_libraries_2019.0.117/linux/compiler/lib/intel64_lin/libifcore.so.5: error adding symbols: DSO missing from command line
make[1]: *** [myProject] Error 1
我玩过 Makefile,发现我需要在特定行中添加一个标志
MYFORTRANCODE=-L$(MYFORTRANCODE_LIB) -lSTUFF -lmpi_usempif08 -lmpi_mpifh -l_I_NEED_TO_ADD_SOMETHING_HERE
问题是我不知道要添加哪个标志,并且在英特尔网站上找不到任何有用的文档。我也不知道“for_inquire”是什么意思。
有人有什么想法吗?
【问题讨论】:
也就是说,@ajh1111 我们肯定遗漏了这里的重要信息,例如 Makefile 的相关部分、更多输出和生成错误消息的实际命令。请收下tour 并阅读How to Ask 和minimal reproducible example。 @VladimirF:你在 Fortran 方面的经验比我丰富得多。我会听从你的判断并取消我的近距离投票。没问题。 :-) 我也清理了我的 cmets,所以它们不会误导其他人。发帖人仍然需要向 MCVE 提供 makefile 和命令行。 请求的符号是 Fortran 编译器运行时的一部分。正如其他人所说,您需要告诉我们更多关于您如何编译/链接的信息,以便我们告诉您如何将链接器指向该运行时。如果您使用 ifort 进行链接,那么这与使用 g++(或直接使用 ld)进行链接的问题非常不同。 【参考方案1】:我需要添加的标志是 -lifcore。我想通了。
【讨论】:
如果不附加请求的详细信息,此答案对其他人来说不是很有用。因此,我投票结束了这个问题。我们甚至不知道您使用的是哪个命令。 将 'for_inquire' 错误与编译器开关 -lifcore 相关联本身似乎非常有用。 -lifcore,顾名思义,是英特尔 Fortran 的“核心”运行时库。这是所有 Fortran 语言支持的地方,包括 I/O。通常建议使用“ifort”将应用程序与 Fortran 代码链接,并让它提供正确的库。还有其他可能需要的(例如 ifport)。以上是关于英特尔编译器未定义对符号“for_inquire”的引用的主要内容,如果未能解决你的问题,请参考以下文章
gfortran使用`-dec-math`给`dacosd_`提供未定义的引用
在 python 的 c 扩展中包括外部共享英特尔的 mkl 库
对符号“sem_close@@GLIBC_2.2.5”的未定义引用
fglut/libfglut.a(freeglut_state.o):未定义对符号“XGetWindowAttributes”的引用