【发布时间】:2016-01-22 07:13:14
【问题描述】:
// f.for is a Fortran source file
// c.c is a C source file
# gfortran -c f.for // produce f.o
# gcc -c c.c // produce c.o
因为 f.for 从 c.c 调用了一些函数。如何生成第三个目标文件 fc.o,稍后将使用它来生成带有另一个 C 源代码的可执行文件。解释:
# gcc/gfortran? (or other) -?? f.o c.o -o fc.o
# gcc -o executable source.c fc.o
谢谢
我做了什么但没有工作:
# ar rvs fc.a f.o c.o
# gcc -o executable source.c fc.a
但它向我显示如下错误:undefined reference to 'function_name_X'. function_name_X is in f.for
【问题讨论】:
-
ar rvs fc.a f.o c.o将为您提供一个静态库 (fc.a),您可以将其用作通过合并f.o和c.o生成的目标文件。 -
PSkocik:是的,我会再试一次这个解决方案,也许它是唯一的解决方案
-
你试过
ld -r f.o c.o -o fc.o吗? (Dark Falcon 的链接) -
您可能问错了问题。如果您在同一个构建过程中生成所有这些目标文件,那么您不需要制作组合目标文件。您可以将所有需要的目标文件链接在一起以生成最终的可执行文件。
-
John Bollinger -> 我有这样的想法:如果 a.o 依赖于 b.o,c.c 依赖于 a.o ,那么 # gcc -o exe c.c a.o b.o 会起作用吗?
标签: c gcc fortran static-linking gfortran