一个奇怪的重定义问题: multiple definition of main

liufenglai 2008-02-14 05:58:32
老板给我一个由C和fortran混合写的程序,其中主程序来自于C,是一个叫做ab_initio . c的程序。
程序在编译完之后,链接时给出了如下提示:
/home/liufenglai/mine/myprogram/fortran/ab_initio/src/PConly/ab_initio.c:32: multiple definition of `main'
/opt/intel/fc/10.1.008/lib/for_main.o:/users/nbtester/x86linux_nightly/branch-10_1/20070914_000000/libdev/frtl/src/libfor/for_main.c:
(.text+0x0): first defined here

似乎主程序被链接到了intel的库函数之中去了。这个问题时怎样引起的?我应该怎样来修正这个问题??
请求高手们帮助!!!
...全文
7437 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
技术小黑屋 2010-10-25
  • 打赏
  • 举报
回复 1
解决方法:因为你同意工程中有两个文件都包含main函数,删除另一个文件,即可正常运行!
arong1234 2008-02-15
  • 打赏
  • 举报
回复
从报错看显然有一个,但这不等于你直接把函数写在for_main.c中,实际上,如果函数在ab_initio.c中实现,而for_main.c #include这个文件,或者间接#include,都会导致这个问题,当然,这样的话用grep肯定找不到俩
liufenglai 2008-02-15
  • 打赏
  • 举报
回复
对于for_main.o里是否也有个main,我不太清楚。
但是老板给出的这一堆源文件中,的确只有一个main函数。我们通过
grep -irn "main" *
进行过搜索,能够证明。
同时,如果我采用其他的编译器进行编译;例如sunstudio;编译结果是没有这个提示的。所以可以确定不会同时存在两个main函数。

这里顺便抱怨一下:老板给的代码实在实在是太太垃圾!!!居然没有一个编译器能够编译过去的;很多fortran的代码编译过程中就会报错!!代码写的也是乱七八糟,同一个函数居然在不同的源文件中都有出现;改来改去真是让我头疼死了。。。。
唐巧 2008-02-14
  • 打赏
  • 举报
回复
你有两个文件里面都定义了main函数。
arong1234 2008-02-14
  • 打赏
  • 举报
回复
for_main.o里也有个main?你不会在for_main.c中包含你那个有main函数的c文件了吧?

69,382

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧