// 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
但它显示错误如:对'function_name_X'的未定义引用。 function_name_X在f.for
中答案 0 :(得分:1)
信用:PSkocik,John Bollinger
我的评论:
我心中有这个想法:如果a.o依赖于b.o,c.c取决于 在a.o上,#gcc -o exe c.c a.o b.o会起作用吗?
应该有效。事实上,我列出了 f.o :
中的所有功能 # nm f.o
我发现Fortran在每个函数名的末尾添加了下划线'_',因为我从C调用这些函数而不在末尾添加下划线,这个错误发生了。 根据此question:我在生成 f.o
时,将 -fno -incoring 添加到 gfortran 编译器# gfortran -c f.for -fno-underscoring
# nm f.o
此时,最后没有下划线 回答问题:
# gcc -o executable source.c f.o c.o // not need fc.o