【发布时间】:2013-10-09 12:18:56
【问题描述】:
我正在尝试链接使用 g++ 生成的 .o 文件和使用 gfortran 生成的另一个 .o 文件。
g++ -c mycppcode.cpp
生成文件mycppcode.o 和命令
gfortran -c myfortrancode.f
生成文件myfortrancode.o
当我链接这两个文件以获得输出文件时
g++ -O mycppcode.o myfortrancode.o
我收到以下错误
Undefined symbols for architecture x86_64:
"__gfortran_pow_c8_i4", referenced from:
有人可以帮我解决这个问题吗?我应该使用另一个编译器吗?另外,我想知道哪些函数或子例程调用“__gfortran_pow_c8_i4”,以便将来在fortran中尽量避免这些函数或子例程。
【问题讨论】:
-
在运行链接器时尝试添加
-lgfortran -
@SethMMorton 我得到以下信息:“ld: library not found for -lgfortran”
-
这很奇怪。我以前用 g++ 成功地使用过它。查看this answer 以确保您输入正确。
-
啊!您正在使用自制软件,这意味着您的 gcc 安装不知道您的 gfortran 安装(愚蠢的 Apple 不包括带有 XCode 的 fortran 编译器)。我假设您使用的是 linux,在这种情况下,
-lgfortran应该可以工作。 -
另外,出于好奇,如果你改为使用
gfortran -O mycppcode.o myfortrancode.o -lstdc++会发生什么?我敢打赌,在这种情况下您不需要添加库搜索路径。