请问我自已编写的这个Makefile哪儿不对呢?

编译打包和其他
回复
头像
Patrick_DJ
帖子: 110
注册时间: 2010-08-15 8:46

请问我自已编写的这个Makefile哪儿不对呢?

#1

帖子 Patrick_DJ » 2010-09-18 8:38

做了一个类似于Hellowold的sample,为其编写Makefile文件

main.cpp 代码如下:

代码: 全选

  1 #include <stdio.h>
  2 #include <GL/glut.h>
  3 
  4 int main(int argc, char** argv)
  5 {
  6     glutInit(&argc,argv);
  7     printf("Hello World\n");
  8 }
Makefile 内容如下:

代码: 全选

  1 CC = g++
  2 OBJS = main.o
  3 CFLAGS = -Wall -O -g -lGL -lGLU -lglut
  4 INCDIR = /usr/include/
  5 
  6 main: $(OBJS)
  7     $(CC) $(OBJS) -o main
  8     
  9 main.o: main.cpp
 10     $(CC) $(FLAGS) -I $(INCDIR) -c main.cpp -o main.o
 11 
 12 clean:
 13     rm -rf *.o main
编译错误内容如下:

代码: 全选

g++ main.o -o main
main.o: In function `main':
main.cpp:(.text+0x17): undefined reference to `glutInit'
collect2: ld returned 1 exit status
make: *** [main] Error 1
我用的是ubuntu10.4, glut.h文件路径是 /usr/include/GL/glut.h. 而且在我机子上编译一些开源的Opengl项目并且运行也没有问题。

另外直接用g++ -Wall -O -g -lGL -lGLU -lglut main.cpp -o main 来编译是成功的.

请问我的Makefile是哪儿不对呢? :)
头像
wzssyqa
帖子: 4010
注册时间: 2008-04-07 17:36
来自: 泰安人在阜新

Re: 请问我自已编写的这个Makefile哪儿不对呢?

#2

帖子 wzssyqa » 2010-09-18 23:10

是不是因为 $(CC) $(OBJS) -o main
没有加

$(FLAGS) ?
头像
adam8157
帖子: 2794
注册时间: 2009-03-05 16:31
联系:

Re: 请问我自已编写的这个Makefile哪儿不对呢?

#3

帖子 adam8157 » 2010-09-18 23:18

-l是链接的时候的参数, 恰恰有链接的最后一步没给参数
头像
Patrick_DJ
帖子: 110
注册时间: 2010-08-15 8:46

Re: 请问我自已编写的这个Makefile哪儿不对呢?

#4

帖子 Patrick_DJ » 2010-09-21 22:31

谢谢2楼和3楼。按照你们的方法解决了...
我怎么当时就没想到,失败...
我竟然还是写了4年代码的人了, 真是...@_@
回复