Ama*_*rse 3 c++ fortran g++ linker-errors
所以我在使用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
Run Code Online (Sandbox Code Playgroud)
现在,我已经检查了我的/usr/lib目录并提出了以下内容:
$ locate libf2c
/usr/lib/libf2c.so
/usr/lib/libf2c.so.0
/usr/lib/libf2c.so.0.22
Run Code Online (Sandbox Code Playgroud)
至少,它就在那里.我用谷歌,告诉我进入...
sudo rm /usr/lib/libf2c.so && sudo ln -s /usr/lib/libf2c.a /usr/lib/libf2c.so
Run Code Online (Sandbox Code Playgroud)
...有助于.关于库的陈旧性的一些东西意味着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
Run Code Online (Sandbox Code Playgroud)
所以实际上我倒退了.任何人都有任何关于我应该从哪里去的想法?
编辑:所以我想我弄清楚了.我按照这个重新安装了libs.现在它神奇地不抱怨fortran main不存在.谢谢你的帮助.
您应该密切关注第一条错误消息.链接器告诉你没有MAIN__找到符号,这就是f2c预期fortran main将在你的C或C++代码中被编译到的地方.f2c库本身运行得很好.
原始错误的解决方案是确保在代码中定义了正确的入口点.可能是通过使用C++进行编译,您会出现名称错位问题,并且不存在f2c库的正确入口点.
现在通过搞乱f2c库,你完全破坏了你的f2c安装.重新安装并重新开始......
| 归档时间: |
|
| 查看次数: |
4293 次 |
| 最近记录: |