所以我在使用Fortran到C库时遇到了一些麻烦.现在,在我遇到问题之前,我可以告诉你我不能像某些论坛网站所建议的那样使用g2c.
现在,问题.当我尝试编译一个非常大的项目时,我得到以下内容:
[from the makefile...] g++ -L [~200 dirs] -l [~200 libs] -lf2c
/usr/lib/libf2c.so: undefined reference to 'MAIN__'
collect2: ld returned 1 exit status
make: *** [all] Error 1
现在,我检查了我的/usr/lib目录并提出了以下内容:
$locate libf2c
/usr/lib/libf2c.so
/usr/lib/libf2c.so.0
/usr/lib/libf2c.so.0.22
至少,它就在那里.我用谷歌,告诉我进入…
sudo rm /usr/lib/libf2c.so && sudo ln -s /usr/lib/libf2c.a /usr/lib/libf2c.so
…有助于.关于库的陈旧性的一些东西意味着gcc不再正确地链接到它,并且试图找到没有一个的主要方法.所以我做到了.但是,在我链接到.a库之后,g现在根本找不到该库.
g++ -L [~200 dirs] -l [~200 libs] -lf2c
/usr/bin/ld: cannot find -lf2c
collect2: ld returned 1 exit status
make: *** [all] Error 1
所以实际上我倒退了.任何人都有任何关于我应该从哪里去的想法?
编辑:所以我想我弄清楚了.我按照this重新安装了libs.现在它神奇地不抱怨fortran main不存在.谢谢你的帮助.
最佳答案
您应该更加关注第一条错误消息.链接器告诉你没有找到符号MAIN__,这就是f2c预期fortran main将被编译到某个地方的C或C代码中. f2c库本身运行得很好.
原始错误的解决方案是确保在代码中定义了正确的入口点.可能是通过使用C进行编译,您有名称错位问题,并且f2c库的正确入口点不存在.
现在通过搞乱f2c库,你完全破坏了你的f2c安装.重新安装并重新开始……
相关文章
- 编译器错误 - 在ubuntu 16.04上编译opencv 3链接错误:/usr/lib/x86_64-linux-gnu/libsoxr.so.0:未定义引用`GOMP_parallel@GOMP_4.0'
- c++ 链接器错误:“链接器输入文件未使用,因为链接未完成”,未定义对该文件中的函数的引用
- C链接器错误,应该从共享对象引用的项的未定义引用
- c - “未定义的符号”链接器错误与简单的模板类
- 链接静态C库与C代码时的“未定义引用”错误
- GCC C链接器错误:未定义引用'vtable for XXX',未定义引用'ClassName :: ClassName()'
- 链接器错误 - 链接错误:对icu_50 :: UnicodeString :: UnicodeString()的未定义引用
- c - 已在lib中定义的标准库,导致链接器错误
转载注明原文:c – 与Fortran到C库的链接器错误 – /usr/lib/libf2c.so:对’MAIN__’的未定义引用 - 代码日志