makefile 当有c++/c的头文件时如何解决

shunan 2007-04-02 12:55:24
有一个main.cpp 包含了first.h文件和iostream.h文件
一个first.cpp文件包含了first.h文件
如果上面没有iostream.h文件,我可以搞定makefile,刚刚初识makefile,看了一点介绍,大概了解了依赖,编译,链接等用法。但是有了iostream.h后就一直有问题,是不是还要加路径什么的啊,请高人指点
我的makefile文件:
all:main.o first.o ;cc -o main.o first.o
main.o:main.cpp first.h ;cc -c main.cpp
first.o:first.cpp first.h;cc -c first.cpp

用make执行时会有下面这个错误:
cc -o main.o first.o
/usr/lib/gcc-lib/i386-redhat-linux/3.2.2/../../../crt1.o(.text+0x18): In function `_start':
../sysdeps/i386/elf/start.S:77: undefined reference to `main'
collect2: ld returned 1 exit status
...全文
470 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
shunan 2007-04-02
  • 打赏
  • 举报
回复
我也刚试了,可以,汗死,刚才一直莫名其妙出现上面的错误。还一直以为跟c++/c的头文件有关,原来真是没有关系。
谢谢以上各位兄弟姐妹的帮助
keard 2007-04-02
  • 打赏
  • 举报
回复
把main.cpp first.cpp first.h放在同一目录下,
makefile如下:

all: main.o first.o
(TAB)g++ -o test main.o first.o
main.o: main.cpp
(TAB)g++ -c main.cpp
first.o: first.cpp
(TAB)g++ -c first.cpp
clean:
(TAB)rm -rf test
(TAB)rm -rf *.o

试过了,可以....
不然你用anjuta直接生成
shunan 2007-04-02
  • 打赏
  • 举报
回复
g++试过,还是不行!至于那个参数,无法识别:no rule to make target '-lstdc++'
哪位牛人帮我实现一下把,我找了很多资料,都没提到这个问题,貌似跟库的头文件没有关系啊。
first.h:
#ifndef FIRST_
#define FIRST_
class first
{
private:
int a;
int b;
public:
first(int x=0,int y=0){a=x;b=y;}
~first(){}
int dis();
};
#endif
first.cpp:
#include"first.h"
int first::dis()
{
return a*a + b*b;
}
main.cpp
#include<stdio.h>
#include"first.h"
int main()
{
first ff(3,2);
int b=ff.dis();
printf("%d\n",b);
return 0;
}
以上三个文件实现的程序我只是想用来编个makefile的,没想到stdio一直出错,跟iostream.h一样。哪位大哥帮我写个,让我参考下把。实在是没辙了。。。万分感谢
无知者无谓 2007-04-02
  • 打赏
  • 举报
回复
改用g++
或者加入-lstdc++参数
pan7861 2007-04-02
  • 打赏
  • 举报
回复
make
shunan 2007-04-02
  • 打赏
  • 举报
回复
我加了路径也不行啊,还是上面提到的错误 make -I /usr/include
shunan 2007-04-02
  • 打赏
  • 举报
回复
是iostream.h的路径吗?
能说详细点吗?
晨星 2007-04-02
  • 打赏
  • 举报
回复
要加include路径。编译器的命令行参数应该是:-I。

23,121

社区成员

发帖
与我相关
我的任务
社区描述
Linux/Unix社区 应用程序开发区
社区管理员
  • 应用程序开发区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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