From: Max L. <ma...@is...> - 2004-08-29 14:15:15
|
Dear all First off, a big thank you to all developers and maintainers of FreeGlut. It's cool that somebody took the initiative. Unfortunately, freeglut (as well as openglut) are giving me a hard time. I am using the most recent release of Cygwin and g++ version 3.4.1. I managed to compile freeglut 2.2.0 using this setup. The examples run without any problems whatsoever. That's cool. Now I am desperately trying to re-compile one of my applications that uses the original version of glut for freeglut. As a test I am trying to re-compile "hello.c", which comes as an example. It doesn't seem to work, and I get various kinds of linker problems. I am sure that the problem is my ignorance (despite having some experience with linux, it's the first time I am using cygwin). Here my Makefile.win (I am using Dev-C++): # Project: testsdl # Makefile created by Dev-C++ 4.9.9.0 CPP = g++.exe CC = gcc.exe WINDRES = windres.exe RES = OBJ = hello.o $(RES) LINKOBJ = hello.o $(RES) LIBS = -L"C:/cygwin/usr/local/lib" -L"C:/cygwin/usr/X11R6/lib" -lstdc++ -lmingw32 -lopengl32 -lglu -lX11 -lglut -mwindows -mno-cygwin INCS = -I"C:/cygwin/usr/include" -I"C:/cygwin/usr/local/include" CXXINCS = -I"C:/cygwin/usr/include" -I"C:/cygwin/usr/local/include" BIN = TestFreeGlut.exe CXXFLAGS = $(CXXINCS) -Uunix -mno-cygwin -D_WIN32 CFLAGS = $(INCS) .PHONY: all all-before all-after clean clean-custom all: all-before TestFreeGlut.exe all-after clean: clean-custom rm -f $(OBJ) $(BIN) $(BIN): $(OBJ) $(CPP) $(LINKOBJ) -o "TestFreeGlut.exe" $(LIBS) hello.o: hello.c $(CPP) -c hello.c -o hello.o $(CXXFLAGS) And here the error messages for this particular Makefile: $ make -f Makefile.win g++.exe -c hello.c -o hello.o -I"C:/cygwin/usr/include" -I"C:/cygwin/usr/local/include" -Uunix -mno-cygwin -D_WIN32 g++.exe hello.o -o "TestFreeGlut.exe" -L"C:/cygwin/usr/local/lib" -L"C:/cygwin/usr/X11R6/lib" -lstdc++ -lmingw32 -lopengl32 -lglu -lX11 -lglut -mwindows -mno-cygwin hello.o(.text+0x1ae):hello.c: undefined reference to `__imp__glutInit@8' hello.o(.text+0x1bf):hello.c: undefined reference to `__imp__glutInitDisplayMode@4' hello.o(.text+0x1d8):hello.c: undefined reference to `__imp__glutInitWindowSize@8' hello.o(.text+0x1f1):hello.c: undefined reference to `__imp__glutInitWindowPosition@8' hello.o(.text+0x202):hello.c: undefined reference to `__imp__glutCreateWindow@4' hello.o(.text+0x218):hello.c: undefined reference to `__imp__glutDisplayFunc@4' hello.o(.text+0x229):hello.c: undefined reference to `__imp__glutKeyboardFunc@4' hello.o(.text+0x233):hello.c: undefined reference to `__imp__glutMainLoop@0' collect2: ld returned 1 exit status make: *** [TestFreeGlut.exe] Error 1 I would really appreciate any form of feedback. Really. Thank you very much! Best regards. Max |
From: Richard R. <sf...@ol...> - 2004-08-29 16:57:14
|
On Sun, Aug 29, 2004 at 11:15:00PM +0900, Max Lungarella wrote: [...] > Now I am desperately trying to re-compile one of my applications that=20 > uses the original version of glut for freeglut. As a test I am trying to= =20 > re-compile "hello.c", which comes as an example. It doesn't seem to=20 > work, and I get various kinds of linker problems. I am sure that the=20 [...] > g++.exe hello.o -o "TestFreeGlut.exe" -L"C:/cygwin/usr/local/lib"=20 > -L"C:/cygwin/usr/X11R6/lib" -lstdc++ -lmingw32 -lopengl32 -lglu -lX11= =20 > -lglut -mwindows -mno-cygwin > hello.o(.text+0x1ae):hello.c: undefined reference to `__imp__glutInit@8' > hello.o(.text+0x1bf):hello.c: undefined reference to=20 > `__imp__glutInitDisplayMode@4' I'll be a bit wishy-washy about freeglut/OpenGLUT since you mention both projects. Two possibilities come to mind: * You may not have told GCC where to find the GLUT/freeglut/OpenGLUT library. The -L"C:/cygwin/usr/local/lib" may or may not be sufficient. In my setup, CygWIN does not see the "C:..." type paths at all, though that may depend upon how you have configured CygWIN. Try adding this instead of the C:... info: -L/usr/local -Wl,-R/usr/local (And if using OpenGLUT, make sure that you link with -lopenglut rather than -lglut. Unlike freeglut, OpenGLUT defaults to living peacably with GLUT (and freeglut).) The "-Wl,-R..." bit may not be required. But it is required on some systems, and does not cause harm where it is not required. * If you are using mingw32 (is that what "-mwindows -mno-cygwin" does?), you may be tripping over a mingw32 bug. I don't know the exact problem, but I gather that it tends to have trouble with shared-object (a.k.a. dynamic link) libraries. Try static linking. Link (and maybe recompile) with: -static ...added to the options. I don't know if either of the above will be of any help, but it doesn't hurt to suggest them. Good luck. --=20 "I probably don't know what I'm talking about." http://www.olib.org/~rkr/ |
From: Max L. <ma...@is...> - 2004-08-30 02:34:40
|
Dear Richard Thank you very much for the feedback! I tried what you suggested. It took me a while, but in the end I managed to get it to work. That's great! As you can see, I don't use the -static option. I also got rid of the "-mno-cygwin -mwindows" options. $ make -f Makefile.win g++.exe -c hello.c -o hello.o -I/usr/X11R6/include -I/usr/local/include -Uunix g++.exe hello.o -o "TestFreeGlut.exe" -L/usr/X11R6/lib -Wl,--rpath /usr/local/lib/ -lGL -lGLU -lX11 -lglut Thanks a lot again, I will immediately try to port my application to it. Best regards. Max >>Now I am desperately trying to re-compile one of my applications that >>uses the original version of glut for freeglut. As a test I am trying to >>re-compile "hello.c", which comes as an example. It doesn't seem to >>work, and I get various kinds of linker problems. I am sure that the > > > [...] > > >>g++.exe hello.o -o "TestFreeGlut.exe" -L"C:/cygwin/usr/local/lib" >>-L"C:/cygwin/usr/X11R6/lib" -lstdc++ -lmingw32 -lopengl32 -lglu -lX11 >>-lglut -mwindows -mno-cygwin >>hello.o(.text+0x1ae):hello.c: undefined reference to `__imp__glutInit@8' >>hello.o(.text+0x1bf):hello.c: undefined reference to >>`__imp__glutInitDisplayMode@4' > > > I'll be a bit wishy-washy about freeglut/OpenGLUT since you mention both > projects. > > Two possibilities come to mind: > > * You may not have told GCC where to find the GLUT/freeglut/OpenGLUT > library. The -L"C:/cygwin/usr/local/lib" may or may not be > sufficient. In my setup, CygWIN does not see the "C:..." type > paths at all, though that may depend upon how you have configured > CygWIN. > > Try adding this instead of the C:... info: > > -L/usr/local -Wl,-R/usr/local > > (And if using OpenGLUT, make sure that you link with > -lopenglut rather than -lglut. Unlike freeglut, OpenGLUT > defaults to living peacably with GLUT (and freeglut).) > > The "-Wl,-R..." bit may not be required. But it is required > on some systems, and does not cause harm where it is not required. > > * If you are using mingw32 (is that what "-mwindows -mno-cygwin" > does?), you may be tripping over a mingw32 bug. I don't know > the exact problem, but I gather that it tends to have trouble > with shared-object (a.k.a. dynamic link) libraries. Try static > linking. Link (and maybe recompile) with: > > -static > > ...added to the options. > > > I don't know if either of the above will be of any help, but it doesn't > hurt to suggest them. > > Good luck. > |
From: Richard R. <sf...@ol...> - 2004-08-30 03:59:30
|
On Mon, Aug 30, 2004 at 11:34:34AM +0900, Max Lungarella wrote: > Dear Richard >=20 > Thank you very much for the feedback! I tried what you suggested. It=20 > took me a while, but in the end I managed to get it to work. That's great! Always glad to be of assistance. I hope that my answer to your other email is also helpful. Good luck. --=20 "I probably don't know what I'm talking about." http://www.olib.org/~rkr/ |