kinu-garage / hut_10sqft

Computer setup tools for my own environment, and public discussion place holder.
Apache License 2.0
2 stars 1 forks source link

CSE167x: HW0 #1052

Closed 130s closed 2 days ago

130s commented 3 days ago

Cont'd from https://github.com/kinu-garage/hut_10sqft/issues/1010#issuecomment-2199204246 toward a bigger goal https://github.com/kinu-garage/essay_in_idleness/issues/150

130s commented 3 days ago

glut is missing on my platform.

$ make 
g++ -g -DGL_GLEXT_PROTOTYPES  -I./glm-0.9.7.1 -I./include/ -I/usr/X11R6/include -I/sw/include -I/usr/sww/include -I/usr/sww/pkg/Mesa/include -c mytest3.cpp 
g++ -g -DGL_GLEXT_PROTOTYPES  -I./glm-0.9.7.1 -I./include/ -I/usr/X11R6/include -I/sw/include -I/usr/sww/include -I/usr/sww/pkg/Mesa/include -c shaders.cpp 
g++ -g -DGL_GLEXT_PROTOTYPES  -o mytest3 shaders.o mytest3.o -I./glm-0.9.7.1 -I./include/ -I/usr/X11R6/include -I/sw/include -I/usr/sww/include -I/usr/sww/pkg/Mesa/include -L./lib/nix -L/usr/X11R6/lib -L/sw/lib -L/usr/sww/lib -L/usr/sww/bin -L/usr/sww/pkg/Mesa/lib -lGLEW -lglut -lGLU -lGL -lX11 -lfreeimage 
/usr/bin/ld: cannot find -lglut: No such file or directory
collect2: error: ld returned 1 exit status
make: *** [Makefile:18: mytest3] Error 1

I might want to keep the host environment so may do this on Docker.

130s commented 3 days ago

Building instruction/FAQ

If you are using a synaptic-based distribution, like Ubuntu, run:

sudo apt-get install freeglut3-dev glew-utils libglew1.6-dev libfreeimage-dev

Don't want to corrupt the host too much so going for Docker. https://qiita.com/asuka1975/items/5384ff4c20accb87cdca is helpful.

On host

export PATH_LOCAL_WS=/home/noodler/link/ROS/130s/prooving_grounds/mooc/edx.org_CSE167x-UCSD_ComputerGraphics
export SRC_DOCKERIMG=nvidia/opengl:1.0-glvnd-devel-ubuntu22.04
export RESULT_DOCKERIMG=d130s/mooc:edx.org_CSE167x-UCSD_ComputerGraphics
docker run --network host  \
  -v $PATH_LOCAL_WS:/cws/src  \
  -v /dev:/dev  \
  -it $DOCKERIMG bash

docker run -it --rm \
        --gpus all \
        --hostname=gltest \
    --volume $PATH_LOCAL_WS:/cws/src  \
        -e DISPLAY=$DISPLAY \
        -e NVIDIA_DRIVER_CAPABILITIES=all \
        -v /tmp/.X11-unix:/tmp/.X11-unix \
    $SRC_DOCKERIMG

Then in container,

# apt update && apt-get install -y build-essential \
 freeglut3-dev \
 glew-utils \
 libglew1.6-dev \
 libfreeimage-dev

This won't become my Colcon/ROS2 project and also it'll be better to eliminate external dependencies so just following basic path without relying on Colcon, rosdep etc.

libglew1.6-dev doesn't seem to be found. But a newer version is already installed. Maybe nvidia's Docker image already installs it?

# apt-get install -y libglew2.2
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
libglew2.2 is already the newest version (2.2.0-4).
libglew2.2 set to manually installed.
0 upgraded, 0 newly installed, 0 to remove and 72 not upgraded.
# cd /cws/src/hw0-linux_osx
# make
g++ -g -DGL_GLEXT_PROTOTYPES  -o mytest3 shaders.o mytest3.o -I./glm-0.9.7.1 -I./include/ -I/usr/X11R6/include -I/sw/include -I/usr/sww/include -I/usr/sww/pkg/Mesa/include -L./lib/nix -L/usr/X11R6/lib -L/sw/lib -L/usr/sww/lib -L/usr/sww/bin -L/usr/sww/pkg/Mesa/lib -lGLEW -lglut -lGLU -lGL -lX11 -lfreeimage 
/usr/bin/ld: ./lib/nix/libGLEW.a(glew.o): relocation R_X86_64_32S against `.rodata' can not be used when making a PIE object; recompile with -fPIE
/usr/bin/ld: failed to set dynamic section sizes: bad value
collect2: error: ld returned 1 exit status
make: *** [Makefile:18: mytest3] Error 1
130s commented 3 days ago

https://learning.edx.org/course/course-v1:UCSanDiegoX+CSE167x+2T2018/block-v1:UCSanDiegoX+CSE167x+2T2018+type@sequential+block@Homework_0/block-v1:UCSanDiegoX+CSE167x+2T2018+type@vertical+block@vertical_f674cf213c3e says this:

If your source files compile, but you have link errors, such as /usr/bin/ld: final link failed: Nonrepresentable section on output, it is likely our libraries, provided for convenience, are outdated, and don't work with your modern Linux distribution. Try removing the -L./lib/nix in the Makefile (and possibly the -I./include although this is not required). This will ensure the code simply uses the system libraries. If successful, you will need to make this change for all homeworks in the course.

So omitted the included lib files.

#INCFLAGS = -I./glm-0.9.7.1 -I./include/ -I/usr/X11R6/include -I/sw/include \
INCFLAGS = -I./glm-0.9.7.1 -I/usr/X11R6/include -I/sw/include \
        -I/usr/sww/include -I/usr/sww/pkg/Mesa/include
#LDFLAGS = -L./lib/nix -L/usr/X11R6/lib -L/sw/lib -L/usr/sww/lib \
LDFLAGS = -L/usr/X11R6/lib -L/sw/lib -L/usr/sww/lib \
        -L/usr/sww/bin -L/usr/sww/pkg/Mesa/lib -lGLEW -lglut -lGLU -lGL -lX11 -lfreeimage
Then got different, lengthy error: ``` # make g++ -g -DGL_GLEXT_PROTOTYPES -o mytest3 shaders.o mytest3.o -I./glm-0.9.7.1 -I./include/ -I/usr/X11R6/include -I/sw/include -I/usr/sww/include -I/usr/sww/pkg/Mesa/include /usr/bin/ld: mytest3.o: warning: relocation against `__glewUniform3fv' in read-only section `.text' /usr/bin/ld: shaders.o: in function `programerrors(int)': /home/noodler/hw0-linux_osx/shaders.cpp:44: undefined reference to `__glewGetProgramiv' /usr/bin/ld: /home/noodler/hw0-linux_osx/shaders.cpp:46: undefined reference to `__glewGetProgramInfoLog' /usr/bin/ld: shaders.o: in function `shadererrors(int)': /home/noodler/hw0-linux_osx/shaders.cpp:53: undefined reference to `__glewGetShaderiv' /usr/bin/ld: /home/noodler/hw0-linux_osx/shaders.cpp:55: undefined reference to `__glewGetShaderInfoLog' /usr/bin/ld: shaders.o: in function `initshaders(unsigned int, char const*)': /home/noodler/hw0-linux_osx/shaders.cpp:64: undefined reference to `__glewCreateShader' /usr/bin/ld: /home/noodler/hw0-linux_osx/shaders.cpp:68: undefined reference to `__glewShaderSource' /usr/bin/ld: /home/noodler/hw0-linux_osx/shaders.cpp:69: undefined reference to `__glewCompileShader' /usr/bin/ld: /home/noodler/hw0-linux_osx/shaders.cpp:70: undefined reference to `__glewGetShaderiv' /usr/bin/ld: shaders.o: in function `initprogram(unsigned int, unsigned int)': /home/noodler/hw0-linux_osx/shaders.cpp:80: undefined reference to `__glewCreateProgram' /usr/bin/ld: /home/noodler/hw0-linux_osx/shaders.cpp:82: undefined reference to `__glewAttachShader' /usr/bin/ld: /home/noodler/hw0-linux_osx/shaders.cpp:83: undefined reference to `__glewAttachShader' /usr/bin/ld: /home/noodler/hw0-linux_osx/shaders.cpp:84: undefined reference to `__glewLinkProgram' /usr/bin/ld: /home/noodler/hw0-linux_osx/shaders.cpp:85: undefined reference to `__glewGetProgramiv' /usr/bin/ld: /home/noodler/hw0-linux_osx/shaders.cpp:86: undefined reference to `__glewUseProgram' /usr/bin/ld: mytest3.o: in function `initobject(unsigned int, float*, int, float*, int, unsigned char*, int, unsigned int)': /home/noodler/hw0-linux_osx/geometry3.h:84: undefined reference to `__glewBindVertexArray' /usr/bin/ld: /home/noodler/hw0-linux_osx/geometry3.h:85: undefined reference to `__glewBindBuffer' /usr/bin/ld: /home/noodler/hw0-linux_osx/geometry3.h:86: undefined reference to `__glewBufferData' /usr/bin/ld: /home/noodler/hw0-linux_osx/geometry3.h:88: undefined reference to `__glewEnableVertexAttribArray' /usr/bin/ld: /home/noodler/hw0-linux_osx/geometry3.h:89: undefined reference to `__glewVertexAttribPointer' /usr/bin/ld: /home/noodler/hw0-linux_osx/geometry3.h:91: undefined reference to `__glewBindBuffer' /usr/bin/ld: /home/noodler/hw0-linux_osx/geometry3.h:92: undefined reference to `__glewBufferData' /usr/bin/ld: /home/noodler/hw0-linux_osx/geometry3.h:94: undefined reference to `__glewEnableVertexAttribArray' /usr/bin/ld: /home/noodler/hw0-linux_osx/geometry3.h:95: undefined reference to `__glewVertexAttribPointer' /usr/bin/ld: /home/noodler/hw0-linux_osx/geometry3.h:96: undefined reference to `__glewBindBuffer' /usr/bin/ld: /home/noodler/hw0-linux_osx/geometry3.h:97: undefined reference to `__glewBufferData' /usr/bin/ld: /home/noodler/hw0-linux_osx/geometry3.h:101: undefined reference to `__glewBindVertexArray' /usr/bin/ld: mytest3.o: in function `inittexture(char const*, unsigned int)': /home/noodler/hw0-linux_osx/geometry3.h:118: undefined reference to `glGenTextures' /usr/bin/ld: /home/noodler/hw0-linux_osx/geometry3.h:119: undefined reference to `__glewBindVertexArray' /usr/bin/ld: /home/noodler/hw0-linux_osx/geometry3.h:120: undefined reference to `__glewBindBuffer' /usr/bin/ld: /home/noodler/hw0-linux_osx/geometry3.h:121: undefined reference to `__glewBufferData' /usr/bin/ld: /home/noodler/hw0-linux_osx/geometry3.h:123: undefined reference to `__glewEnableVertexAttribArray' /usr/bin/ld: /home/noodler/hw0-linux_osx/geometry3.h:124: undefined reference to `__glewVertexAttribPointer' /usr/bin/ld: /home/noodler/hw0-linux_osx/geometry3.h:126: undefined reference to `__glewActiveTexture' /usr/bin/ld: /home/noodler/hw0-linux_osx/geometry3.h:127: undefined reference to `glEnable' /usr/bin/ld: /home/noodler/hw0-linux_osx/geometry3.h:129: undefined reference to `glBindTexture' /usr/bin/ld: /home/noodler/hw0-linux_osx/geometry3.h:130: undefined reference to `glTexImage2D' /usr/bin/ld: /home/noodler/hw0-linux_osx/geometry3.h:132: undefined reference to `glTexParameterf' /usr/bin/ld: /home/noodler/hw0-linux_osx/geometry3.h:133: undefined reference to `glTexParameterf' /usr/bin/ld: /home/noodler/hw0-linux_osx/geometry3.h:134: undefined reference to `glTexParameteri' /usr/bin/ld: /home/noodler/hw0-linux_osx/geometry3.h:135: undefined reference to `glTexParameteri' /usr/bin/ld: /home/noodler/hw0-linux_osx/geometry3.h:136: undefined reference to `__glewBindVertexArray' /usr/bin/ld: /home/noodler/hw0-linux_osx/geometry3.h:139: undefined reference to `__glewGetUniformLocation' /usr/bin/ld: /home/noodler/hw0-linux_osx/geometry3.h:142: undefined reference to `__glewUniform1i' /usr/bin/ld: /home/noodler/hw0-linux_osx/geometry3.h:143: undefined reference to `__glewGetUniformLocation' /usr/bin/ld: mytest3.o: in function `initcubes(unsigned int, float*, int, unsigned char*, int, unsigned int)': /home/noodler/hw0-linux_osx/geometry3.h:152: undefined reference to `__glewBindVertexArray' /usr/bin/ld: /home/noodler/hw0-linux_osx/geometry3.h:155: undefined reference to `__glewBindBuffer' /usr/bin/ld: /home/noodler/hw0-linux_osx/geometry3.h:156: undefined reference to `__glewBufferData' /usr/bin/ld: /home/noodler/hw0-linux_osx/geometry3.h:158: undefined reference to `__glewEnableVertexAttribArray' /usr/bin/ld: /home/noodler/hw0-linux_osx/geometry3.h:159: undefined reference to `__glewVertexAttribPointer' /usr/bin/ld: /home/noodler/hw0-linux_osx/geometry3.h:161: undefined reference to `__glewBindBuffer' /usr/bin/ld: /home/noodler/hw0-linux_osx/geometry3.h:162: undefined reference to `__glewBufferData' /usr/bin/ld: /home/noodler/hw0-linux_osx/geometry3.h:164: undefined reference to `__glewEnableVertexAttribArray' /usr/bin/ld: /home/noodler/hw0-linux_osx/geometry3.h:165: undefined reference to `__glewVertexAttribPointer' /usr/bin/ld: /home/noodler/hw0-linux_osx/geometry3.h:166: undefined reference to `__glewBindBuffer' /usr/bin/ld: /home/noodler/hw0-linux_osx/geometry3.h:167: undefined reference to `__glewBufferData' /usr/bin/ld: /home/noodler/hw0-linux_osx/geometry3.h:171: undefined reference to `__glewBindVertexArray' /usr/bin/ld: mytest3.o: in function `drawcolor(unsigned int, unsigned int)': /home/noodler/hw0-linux_osx/geometry3.h:177: undefined reference to `__glewBindVertexArray' /usr/bin/ld: /home/noodler/hw0-linux_osx/geometry3.h:178: undefined reference to `glDrawElements' /usr/bin/ld: /home/noodler/hw0-linux_osx/geometry3.h:179: undefined reference to `__glewBindVertexArray' /usr/bin/ld: mytest3.o: in function `drawtexture(unsigned int, unsigned int)': /home/noodler/hw0-linux_osx/geometry3.h:184: undefined reference to `glBindTexture' /usr/bin/ld: /home/noodler/hw0-linux_osx/geometry3.h:185: undefined reference to `__glewBindVertexArray' /usr/bin/ld: /home/noodler/hw0-linux_osx/geometry3.h:186: undefined reference to `glDrawElements' /usr/bin/ld: /home/noodler/hw0-linux_osx/geometry3.h:187: undefined reference to `__glewBindVertexArray' /usr/bin/ld: mytest3.o: in function `drawobject(unsigned int)': /home/noodler/hw0-linux_osx/geometry3.h:191: undefined reference to `__glewBindVertexArray' /usr/bin/ld: /home/noodler/hw0-linux_osx/geometry3.h:192: undefined reference to `glDrawElements' /usr/bin/ld: /home/noodler/hw0-linux_osx/geometry3.h:193: undefined reference to `__glewBindVertexArray' /usr/bin/ld: mytest3.o: in function `loadteapot()': /home/noodler/hw0-linux_osx/geometry3.h:250: undefined reference to `__glewBindVertexArray' /usr/bin/ld: /home/noodler/hw0-linux_osx/geometry3.h:252: undefined reference to `__glewBindBuffer' /usr/bin/ld: /home/noodler/hw0-linux_osx/geometry3.h:253: undefined reference to `__glewBufferData' /usr/bin/ld: /home/noodler/hw0-linux_osx/geometry3.h:254: undefined reference to `__glewEnableVertexAttribArray' /usr/bin/ld: /home/noodler/hw0-linux_osx/geometry3.h:255: undefined reference to `__glewVertexAttribPointer' /usr/bin/ld: /home/noodler/hw0-linux_osx/geometry3.h:256: undefined reference to `__glewBindBuffer' /usr/bin/ld: /home/noodler/hw0-linux_osx/geometry3.h:257: undefined reference to `__glewBufferData' /usr/bin/ld: /home/noodler/hw0-linux_osx/geometry3.h:258: undefined reference to `__glewEnableVertexAttribArray' /usr/bin/ld: /home/noodler/hw0-linux_osx/geometry3.h:259: undefined reference to `__glewVertexAttribPointer' /usr/bin/ld: /home/noodler/hw0-linux_osx/geometry3.h:260: undefined reference to `__glewBindBuffer' /usr/bin/ld: /home/noodler/hw0-linux_osx/geometry3.h:261: undefined reference to `__glewBufferData' /usr/bin/ld: /home/noodler/hw0-linux_osx/geometry3.h:263: undefined reference to `__glewBindBuffer' /usr/bin/ld: /home/noodler/hw0-linux_osx/geometry3.h:264: undefined reference to `__glewBindVertexArray' /usr/bin/ld: mytest3.o: in function `drawteapot()': /home/noodler/hw0-linux_osx/geometry3.h:269: undefined reference to `__glewBindVertexArray' /usr/bin/ld: /home/noodler/hw0-linux_osx/geometry3.h:270: undefined reference to `glDrawElements' /usr/bin/ld: /home/noodler/hw0-linux_osx/geometry3.h:271: undefined reference to `__glewBindVertexArray' /usr/bin/ld: mytest3.o: in function `deleteBuffers()': /home/noodler/hw0-linux_osx/mytest3.cpp:79: undefined reference to `__glewDeleteVertexArrays' /usr/bin/ld: /home/noodler/hw0-linux_osx/mytest3.cpp:80: undefined reference to `__glewDeleteVertexArrays' /usr/bin/ld: /home/noodler/hw0-linux_osx/mytest3.cpp:81: undefined reference to `__glewDeleteBuffers' /usr/bin/ld: /home/noodler/hw0-linux_osx/mytest3.cpp:82: undefined reference to `__glewDeleteBuffers' /usr/bin/ld: mytest3.o: in function `display()': /home/noodler/hw0-linux_osx/mytest3.cpp:89: undefined reference to `glClear' /usr/bin/ld: /home/noodler/hw0-linux_osx/mytest3.cpp:97: undefined reference to `__glewUniform1i' /usr/bin/ld: /home/noodler/hw0-linux_osx/mytest3.cpp:98: undefined reference to `__glewUniform1i' /usr/bin/ld: /home/noodler/hw0-linux_osx/mytest3.cpp:102: undefined reference to `__glewUniformMatrix4fv' /usr/bin/ld: /home/noodler/hw0-linux_osx/mytest3.cpp:103: undefined reference to `__glewUniform3f' /usr/bin/ld: /home/noodler/hw0-linux_osx/mytest3.cpp:105: undefined reference to `__glewUniform1i' /usr/bin/ld: /home/noodler/hw0-linux_osx/mytest3.cpp:115: undefined reference to `__glewUniformMatrix4fv' /usr/bin/ld: /home/noodler/hw0-linux_osx/mytest3.cpp:116: undefined reference to `__glewUniform3fv' /usr/bin/ld: /home/noodler/hw0-linux_osx/mytest3.cpp:123: undefined reference to `__glewUniformMatrix4fv' /usr/bin/ld: /home/noodler/hw0-linux_osx/mytest3.cpp:124: undefined reference to `__glewUniform3fv' /usr/bin/ld: /home/noodler/hw0-linux_osx/mytest3.cpp:131: undefined reference to `__glewUniformMatrix4fv' /usr/bin/ld: /home/noodler/hw0-linux_osx/mytest3.cpp:132: undefined reference to `__glewUniform3fv' /usr/bin/ld: /home/noodler/hw0-linux_osx/mytest3.cpp:139: undefined reference to `__glewUniformMatrix4fv' /usr/bin/ld: /home/noodler/hw0-linux_osx/mytest3.cpp:140: undefined reference to `__glewUniform3fv' /usr/bin/ld: /home/noodler/hw0-linux_osx/mytest3.cpp:167: undefined reference to `__glewUniform3fv' /usr/bin/ld: /home/noodler/hw0-linux_osx/mytest3.cpp:168: undefined reference to `__glewUniform4fv' /usr/bin/ld: /home/noodler/hw0-linux_osx/mytest3.cpp:169: undefined reference to `__glewUniform4fv' /usr/bin/ld: /home/noodler/hw0-linux_osx/mytest3.cpp:170: undefined reference to `__glewUniform4fv' /usr/bin/ld: /home/noodler/hw0-linux_osx/mytest3.cpp:173: undefined reference to `__glewUniform4fv' /usr/bin/ld: /home/noodler/hw0-linux_osx/mytest3.cpp:174: undefined reference to `__glewUniform4fv' /usr/bin/ld: mytest3.o:/home/noodler/hw0-linux_osx/mytest3.cpp:175: more undefined references to `__glewUniform4fv' follow /usr/bin/ld: mytest3.o: in function `display()': /home/noodler/hw0-linux_osx/mytest3.cpp:176: undefined reference to `__glewUniform1fv' /usr/bin/ld: /home/noodler/hw0-linux_osx/mytest3.cpp:183: undefined reference to `__glewUniform1i' /usr/bin/ld: /home/noodler/hw0-linux_osx/mytest3.cpp:187: undefined reference to `__glewUniform3f' /usr/bin/ld: /home/noodler/hw0-linux_osx/mytest3.cpp:199: undefined reference to `__glewUniformMatrix4fv' /usr/bin/ld: /home/noodler/hw0-linux_osx/mytest3.cpp:215: undefined reference to `glutSwapBuffers' /usr/bin/ld: /home/noodler/hw0-linux_osx/mytest3.cpp:216: undefined reference to `glFlush' /usr/bin/ld: mytest3.o: in function `animation()': /home/noodler/hw0-linux_osx/mytest3.cpp:227: undefined reference to `glutPostRedisplay' /usr/bin/ld: mytest3.o: in function `mouse(int, int, int, int)': /home/noodler/hw0-linux_osx/mytest3.cpp:254: undefined reference to `__glewUniformMatrix4fv' [5/2590] /usr/bin/ld: /home/noodler/hw0-linux_osx/mytest3.cpp:255: undefined reference to `glutPostRedisplay' /usr/bin/ld: mytest3.o: in function `mousedrag(int, int)': /home/noodler/hw0-linux_osx/mytest3.cpp:268: undefined reference to `__glewUniformMatrix4fv' /usr/bin/ld: /home/noodler/hw0-linux_osx/mytest3.cpp:269: undefined reference to `glutPostRedisplay' /usr/bin/ld: mytest3.o: in function `saveScreenshot()': /home/noodler/hw0-linux_osx/mytest3.cpp:286: undefined reference to `glReadBuffer' /usr/bin/ld: /home/noodler/hw0-linux_osx/mytest3.cpp:287: undefined reference to `glReadPixels' /usr/bin/ld: /home/noodler/hw0-linux_osx/mytest3.cpp:289: undefined reference to `FreeImage_ConvertFromRawBits' /usr/bin/ld: /home/noodler/hw0-linux_osx/mytest3.cpp:293: undefined reference to `FreeImage_Save' /usr/bin/ld: mytest3.o: in function `keyboard(unsigned char, int, int)': /home/noodler/hw0-linux_osx/mytest3.cpp:313: undefined reference to `__glewUniformMatrix4fv' /usr/bin/ld: /home/noodler/hw0-linux_osx/mytest3.cpp:317: undefined reference to `glutIdleFunc' /usr/bin/ld: /home/noodler/hw0-linux_osx/mytest3.cpp:318: undefined reference to `glutPostRedisplay' /usr/bin/ld: /home/noodler/hw0-linux_osx/mytest3.cpp:325: undefined reference to `glutIdleFunc' /usr/bin/ld: /home/noodler/hw0-linux_osx/mytest3.cpp:326: undefined reference to `glutIdleFunc' /usr/bin/ld: /home/noodler/hw0-linux_osx/mytest3.cpp:330: undefined reference to `glutPostRedisplay' /usr/bin/ld: /home/noodler/hw0-linux_osx/mytest3.cpp:334: undefined reference to `glutPostRedisplay' /usr/bin/ld: mytest3.o: in function `reshape(int, int)': /home/noodler/hw0-linux_osx/mytest3.cpp:346: undefined reference to `glViewport' /usr/bin/ld: /home/noodler/hw0-linux_osx/mytest3.cpp:351: undefined reference to `__glewUniformMatrix4fv' /usr/bin/ld: mytest3.o: in function `checkOpenGLVersion()': /home/noodler/hw0-linux_osx/mytest3.cpp:355: undefined reference to `glGetString' /usr/bin/ld: /home/noodler/hw0-linux_osx/mytest3.cpp:382: undefined reference to `glGetString' /usr/bin/ld: /home/noodler/hw0-linux_osx/mytest3.cpp:384: undefined reference to `glGetString' /usr/bin/ld: /home/noodler/hw0-linux_osx/mytest3.cpp:386: undefined reference to `glGetString' /usr/bin/ld: mytest3.o: in function `init()': /home/noodler/hw0-linux_osx/mytest3.cpp:403: undefined reference to `glClearColor' /usr/bin/ld: /home/noodler/hw0-linux_osx/mytest3.cpp:414: undefined reference to `__glewCreateProgram' /usr/bin/ld: /home/noodler/hw0-linux_osx/mytest3.cpp:417: undefined reference to `__glewGetProgramiv' /usr/bin/ld: /home/noodler/hw0-linux_osx/mytest3.cpp:420: undefined reference to `__glewGetUniformLocation' /usr/bin/ld: /home/noodler/hw0-linux_osx/mytest3.cpp:421: undefined reference to `__glewGetUniformLocation' /usr/bin/ld: /home/noodler/hw0-linux_osx/mytest3.cpp:422: undefined reference to `__glewGetUniformLocation' /usr/bin/ld: /home/noodler/hw0-linux_osx/mytest3.cpp:423: undefined reference to `__glewGetUniformLocation' /usr/bin/ld: /home/noodler/hw0-linux_osx/mytest3.cpp:424: undefined reference to `__glewGetUniformLocation' /usr/bin/ld: mytest3.o:/home/noodler/hw0-linux_osx/mytest3.cpp:425: more undefined references to `__glewGetUniformLocation' follow /usr/bin/ld: mytest3.o: in function `init()': /home/noodler/hw0-linux_osx/mytest3.cpp:436: undefined reference to `__glewGenVertexArrays' /usr/bin/ld: /home/noodler/hw0-linux_osx/mytest3.cpp:437: undefined reference to `__glewGenVertexArrays' /usr/bin/ld: /home/noodler/hw0-linux_osx/mytest3.cpp:438: undefined reference to `__glewGenBuffers' /usr/bin/ld: /home/noodler/hw0-linux_osx/mytest3.cpp:439: undefined reference to `__glewGenBuffers' /usr/bin/ld: /home/noodler/hw0-linux_osx/mytest3.cpp:450: undefined reference to `glEnable' /usr/bin/ld: /home/noodler/hw0-linux_osx/mytest3.cpp:451: undefined reference to `glDepthFunc' /usr/bin/ld: mytest3.o: in function `main': /home/noodler/hw0-linux_osx/mytest3.cpp:457: undefined reference to `FreeImage_Initialise' /usr/bin/ld: /home/noodler/hw0-linux_osx/mytest3.cpp:459: undefined reference to `glutInit' /usr/bin/ld: /home/noodler/hw0-linux_osx/mytest3.cpp:469: undefined reference to `glutInitDisplayMode' /usr/bin/ld: /home/noodler/hw0-linux_osx/mytest3.cpp:472: undefined reference to `glutInitWindowSize' /usr/bin/ld: /home/noodler/hw0-linux_osx/mytest3.cpp:473: undefined reference to `glutCreateWindow' /usr/bin/ld: /home/noodler/hw0-linux_osx/mytest3.cpp:476: undefined reference to `glewInit' /usr/bin/ld: /home/noodler/hw0-linux_osx/mytest3.cpp:478: undefined reference to `glewGetString' /usr/bin/ld: /home/noodler/hw0-linux_osx/mytest3.cpp:485: undefined reference to `glutDisplayFunc' /usr/bin/ld: /home/noodler/hw0-linux_osx/mytest3.cpp:486: undefined reference to `glutReshapeFunc' /usr/bin/ld: /home/noodler/hw0-linux_osx/mytest3.cpp:487: undefined reference to `glutKeyboardFunc' /usr/bin/ld: /home/noodler/hw0-linux_osx/mytest3.cpp:488: undefined reference to `glutMouseFunc' /usr/bin/ld: /home/noodler/hw0-linux_osx/mytest3.cpp:489: undefined reference to `glutMotionFunc' /usr/bin/ld: /home/noodler/hw0-linux_osx/mytest3.cpp:491: undefined reference to `glutMainLoop' /usr/bin/ld: /home/noodler/hw0-linux_osx/mytest3.cpp:492: undefined reference to `FreeImage_DeInitialise' /usr/bin/ld: warning: creating DT_TEXTREL in a PIE collect2: error: ld returned 1 exit status make: *** [Makefile:19: mytest3] Error 1 ```
130s commented 3 days ago

A lot of lines mention grew so I suspect it missing. However I'm told before even running very first make:

# apt-get install -y libglew2.2
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
libglew2.2 is already the newest version (2.2.0-4).
0 upgraded, 0 newly installed, 0 to remove and 71 not upgraded.

libglew-dev is available on Ubuntu 22.04, which shows the same version 2.2.0-4 as the one above so this may not matter.

So I'm not yet sure where the error is arising from. I guess it's the linker who's shedding errors as I see errors only occurring with /usr/bin/ld AFAICT.

To continue narrowing down, I removed the libs I installed and reverted makefile content.

apt purge libfreeimage-dev libglew2.2-dev && apt autoremove

INCFLAGS = -I./glm-0.9.7.1 -I./include/ -I/usr/X11R6/include -I/sw/include \
#INCFLAGS = -I./glm-0.9.7.1 -I/usr/X11R6/include -I/sw/include \
        -I/usr/sww/include -I/usr/sww/pkg/Mesa/include
LDFLAGS = -L./lib/nix -L/usr/X11R6/lib -L/sw/lib -L/usr/sww/lib \
#LDFLAGS = -L/usr/X11R6/lib -L/sw/lib -L/usr/sww/lib \
        -L/usr/sww/bin -L/usr/sww/pkg/Mesa/lib -lGLEW -lglut -lGLU -lGL -lX11 -lfreeimage
Still get the similar errors. ``` root@gltest:/cws/src/hw0-linux_osx# make g++ -g -DGL_GLEXT_PROTOTYPES -o mytest3 shaders.o mytest3.o -I./glm-0.9.7.1 -I./include/ -I/usr/X11R6/include -I/sw/include -L./lib/nix -L/usr/X11R6/lib -L/sw/lib -L/usr/sww/lib /usr/bin/ld: mytest3.o: warning: relocation against `__glewUniform3fv' in read-only section `.text' /usr/bin/ld: shaders.o: in function `programerrors(int)': /home/noodler/hw0-linux_osx/shaders.cpp:44: undefined reference to `__glewGetProgramiv' /usr/bin/ld: /home/noodler/hw0-linux_osx/shaders.cpp:46: undefined reference to `__glewGetProgramInfoLog' /usr/bin/ld: shaders.o: in function `shadererrors(int)': /home/noodler/hw0-linux_osx/shaders.cpp:53: undefined reference to `__glewGetShaderiv' /usr/bin/ld: /home/noodler/hw0-linux_osx/shaders.cpp:55: undefined reference to `__glewGetShaderInfoLog' /usr/bin/ld: shaders.o: in function `initshaders(unsigned int, char const*)': /home/noodler/hw0-linux_osx/shaders.cpp:64: undefined reference to `__glewCreateShader' /usr/bin/ld: /home/noodler/hw0-linux_osx/shaders.cpp:68: undefined reference to `__glewShaderSource' /usr/bin/ld: /home/noodler/hw0-linux_osx/shaders.cpp:69: undefined reference to `__glewCompileShader' /usr/bin/ld: /home/noodler/hw0-linux_osx/shaders.cpp:70: undefined reference to `__glewGetShaderiv' /usr/bin/ld: shaders.o: in function `initprogram(unsigned int, unsigned int)': /home/noodler/hw0-linux_osx/shaders.cpp:80: undefined reference to `__glewCreateProgram' /usr/bin/ld: /home/noodler/hw0-linux_osx/shaders.cpp:82: undefined reference to `__glewAttachShader' /usr/bin/ld: /home/noodler/hw0-linux_osx/shaders.cpp:83: undefined reference to `__glewAttachShader' /usr/bin/ld: /home/noodler/hw0-linux_osx/shaders.cpp:84: undefined reference to `__glewLinkProgram' /usr/bin/ld: /home/noodler/hw0-linux_osx/shaders.cpp:85: undefined reference to `__glewGetProgramiv' /usr/bin/ld: /home/noodler/hw0-linux_osx/shaders.cpp:86: undefined reference to `__glewUseProgram' /usr/bin/ld: mytest3.o: in function `initobject(unsigned int, float*, int, float*, int, unsigned char*, int, unsigned int)': /home/noodler/hw0-linux_osx/geometry3.h:84: undefined reference to `__glewBindVertexArray' /usr/bin/ld: /home/noodler/hw0-linux_osx/geometry3.h:85: undefined reference to `__glewBindBuffer' /usr/bin/ld: /home/noodler/hw0-linux_osx/geometry3.h:86: undefined reference to `__glewBufferData' /usr/bin/ld: /home/noodler/hw0-linux_osx/geometry3.h:88: undefined reference to `__glewEnableVertexAttribArray' /usr/bin/ld: /home/noodler/hw0-linux_osx/geometry3.h:89: undefined reference to `__glewVertexAttribPointer' /usr/bin/ld: /home/noodler/hw0-linux_osx/geometry3.h:91: undefined reference to `__glewBindBuffer' /usr/bin/ld: /home/noodler/hw0-linux_osx/geometry3.h:92: undefined reference to `__glewBufferData' /usr/bin/ld: /home/noodler/hw0-linux_osx/geometry3.h:94: undefined reference to `__glewEnableVertexAttribArray' /usr/bin/ld: /home/noodler/hw0-linux_osx/geometry3.h:95: undefined reference to `__glewVertexAttribPointer' /usr/bin/ld: /home/noodler/hw0-linux_osx/geometry3.h:96: undefined reference to `__glewBindBuffer' /usr/bin/ld: /home/noodler/hw0-linux_osx/geometry3.h:97: undefined reference to `__glewBufferData' /usr/bin/ld: /home/noodler/hw0-linux_osx/geometry3.h:101: undefined reference to `__glewBindVertexArray' /usr/bin/ld: mytest3.o: in function `inittexture(char const*, unsigned int)': /home/noodler/hw0-linux_osx/geometry3.h:118: undefined reference to `glGenTextures' /usr/bin/ld: /home/noodler/hw0-linux_osx/geometry3.h:119: undefined reference to `__glewBindVertexArray' /usr/bin/ld: /home/noodler/hw0-linux_osx/geometry3.h:120: undefined reference to `__glewBindBuffer' /usr/bin/ld: /home/noodler/hw0-linux_osx/geometry3.h:121: undefined reference to `__glewBufferData' /usr/bin/ld: /home/noodler/hw0-linux_osx/geometry3.h:123: undefined reference to `__glewEnableVertexAttribArray' /usr/bin/ld: /home/noodler/hw0-linux_osx/geometry3.h:124: undefined reference to `__glewVertexAttribPointer' /usr/bin/ld: /home/noodler/hw0-linux_osx/geometry3.h:126: undefined reference to `__glewActiveTexture' /usr/bin/ld: /home/noodler/hw0-linux_osx/geometry3.h:127: undefined reference to `glEnable' /usr/bin/ld: /home/noodler/hw0-linux_osx/geometry3.h:129: undefined reference to `glBindTexture' /usr/bin/ld: /home/noodler/hw0-linux_osx/geometry3.h:130: undefined reference to `glTexImage2D' /usr/bin/ld: /home/noodler/hw0-linux_osx/geometry3.h:132: undefined reference to `glTexParameterf' /usr/bin/ld: /home/noodler/hw0-linux_osx/geometry3.h:133: undefined reference to `glTexParameterf' /usr/bin/ld: /home/noodler/hw0-linux_osx/geometry3.h:134: undefined reference to `glTexParameteri' /usr/bin/ld: /home/noodler/hw0-linux_osx/geometry3.h:135: undefined reference to `glTexParameteri' /usr/bin/ld: /home/noodler/hw0-linux_osx/geometry3.h:136: undefined reference to `__glewBindVertexArray' /usr/bin/ld: /home/noodler/hw0-linux_osx/geometry3.h:139: undefined reference to `__glewGetUniformLocation' /usr/bin/ld: /home/noodler/hw0-linux_osx/geometry3.h:142: undefined reference to `__glewUniform1i' /usr/bin/ld: /home/noodler/hw0-linux_osx/geometry3.h:143: undefined reference to `__glewGetUniformLocation' /usr/bin/ld: mytest3.o: in function `initcubes(unsigned int, float*, int, unsigned char*, int, unsigned int)': /home/noodler/hw0-linux_osx/geometry3.h:152: undefined reference to `__glewBindVertexArray' /usr/bin/ld: /home/noodler/hw0-linux_osx/geometry3.h:155: undefined reference to `__glewBindBuffer' /usr/bin/ld: /home/noodler/hw0-linux_osx/geometry3.h:156: undefined reference to `__glewBufferData' /usr/bin/ld: /home/noodler/hw0-linux_osx/geometry3.h:158: undefined reference to `__glewEnableVertexAttribArray' /usr/bin/ld: /home/noodler/hw0-linux_osx/geometry3.h:159: undefined reference to `__glewVertexAttribPointer' /usr/bin/ld: /home/noodler/hw0-linux_osx/geometry3.h:161: undefined reference to `__glewBindBuffer' /usr/bin/ld: /home/noodler/hw0-linux_osx/geometry3.h:162: undefined reference to `__glewBufferData' /usr/bin/ld: /home/noodler/hw0-linux_osx/geometry3.h:164: undefined reference to `__glewEnableVertexAttribArray' /usr/bin/ld: /home/noodler/hw0-linux_osx/geometry3.h:165: undefined reference to `__glewVertexAttribPointer' /usr/bin/ld: /home/noodler/hw0-linux_osx/geometry3.h:166: undefined reference to `__glewBindBuffer' /usr/bin/ld: /home/noodler/hw0-linux_osx/geometry3.h:167: undefined reference to `__glewBufferData' /usr/bin/ld: /home/noodler/hw0-linux_osx/geometry3.h:171: undefined reference to `__glewBindVertexArray' /usr/bin/ld: mytest3.o: in function `drawcolor(unsigned int, unsigned int)': /home/noodler/hw0-linux_osx/geometry3.h:177: undefined reference to `__glewBindVertexArray' /usr/bin/ld: /home/noodler/hw0-linux_osx/geometry3.h:178: undefined reference to `glDrawElements' /usr/bin/ld: /home/noodler/hw0-linux_osx/geometry3.h:179: undefined reference to `__glewBindVertexArray' /usr/bin/ld: mytest3.o: in function `drawtexture(unsigned int, unsigned int)': /home/noodler/hw0-linux_osx/geometry3.h:184: undefined reference to `glBindTexture' /usr/bin/ld: /home/noodler/hw0-linux_osx/geometry3.h:185: undefined reference to `__glewBindVertexArray' /usr/bin/ld: /home/noodler/hw0-linux_osx/geometry3.h:186: undefined reference to `glDrawElements' /usr/bin/ld: /home/noodler/hw0-linux_osx/geometry3.h:187: undefined reference to `__glewBindVertexArray' /usr/bin/ld: mytest3.o: in function `drawobject(unsigned int)': /home/noodler/hw0-linux_osx/geometry3.h:191: undefined reference to `__glewBindVertexArray' /usr/bin/ld: /home/noodler/hw0-linux_osx/geometry3.h:192: undefined reference to `glDrawElements' /usr/bin/ld: /home/noodler/hw0-linux_osx/geometry3.h:193: undefined reference to `__glewBindVertexArray' /usr/bin/ld: mytest3.o: in function `loadteapot()': /home/noodler/hw0-linux_osx/geometry3.h:250: undefined reference to `__glewBindVertexArray' /usr/bin/ld: /home/noodler/hw0-linux_osx/geometry3.h:252: undefined reference to `__glewBindBuffer' /usr/bin/ld: /home/noodler/hw0-linux_osx/geometry3.h:253: undefined reference to `__glewBufferData' /usr/bin/ld: /home/noodler/hw0-linux_osx/geometry3.h:254: undefined reference to `__glewEnableVertexAttribArray' /usr/bin/ld: /home/noodler/hw0-linux_osx/geometry3.h:255: undefined reference to `__glewVertexAttribPointer' /usr/bin/ld: /home/noodler/hw0-linux_osx/geometry3.h:256: undefined reference to `__glewBindBuffer' /usr/bin/ld: /home/noodler/hw0-linux_osx/geometry3.h:257: undefined reference to `__glewBufferData' /usr/bin/ld: /home/noodler/hw0-linux_osx/geometry3.h:258: undefined reference to `__glewEnableVertexAttribArray' /usr/bin/ld: /home/noodler/hw0-linux_osx/geometry3.h:259: undefined reference to `__glewVertexAttribPointer' /usr/bin/ld: /home/noodler/hw0-linux_osx/geometry3.h:260: undefined reference to `__glewBindBuffer' /usr/bin/ld: /home/noodler/hw0-linux_osx/geometry3.h:261: undefined reference to `__glewBufferData' /usr/bin/ld: /home/noodler/hw0-linux_osx/geometry3.h:263: undefined reference to `__glewBindBuffer' /usr/bin/ld: /home/noodler/hw0-linux_osx/geometry3.h:264: undefined reference to `__glewBindVertexArray' /usr/bin/ld: mytest3.o: in function `drawteapot()': /home/noodler/hw0-linux_osx/geometry3.h:269: undefined reference to `__glewBindVertexArray' /usr/bin/ld: /home/noodler/hw0-linux_osx/geometry3.h:270: undefined reference to `glDrawElements' /usr/bin/ld: /home/noodler/hw0-linux_osx/geometry3.h:271: undefined reference to `__glewBindVertexArray' /usr/bin/ld: mytest3.o: in function `deleteBuffers()': /home/noodler/hw0-linux_osx/mytest3.cpp:79: undefined reference to `__glewDeleteVertexArrays' /usr/bin/ld: /home/noodler/hw0-linux_osx/mytest3.cpp:80: undefined reference to `__glewDeleteVertexArrays' /usr/bin/ld: /home/noodler/hw0-linux_osx/mytest3.cpp:81: undefined reference to `__glewDeleteBuffers' /usr/bin/ld: /home/noodler/hw0-linux_osx/mytest3.cpp:82: undefined reference to `__glewDeleteBuffers' /usr/bin/ld: mytest3.o: in function `display()': /home/noodler/hw0-linux_osx/mytest3.cpp:89: undefined reference to `glClear' /usr/bin/ld: /home/noodler/hw0-linux_osx/mytest3.cpp:97: undefined reference to `__glewUniform1i' /usr/bin/ld: /home/noodler/hw0-linux_osx/mytest3.cpp:98: undefined reference to `__glewUniform1i' /usr/bin/ld: /home/noodler/hw0-linux_osx/mytest3.cpp:102: undefined reference to `__glewUniformMatrix4fv' /usr/bin/ld: /home/noodler/hw0-linux_osx/mytest3.cpp:103: undefined reference to `__glewUniform3f' /usr/bin/ld: /home/noodler/hw0-linux_osx/mytest3.cpp:105: undefined reference to `__glewUniform1i' /usr/bin/ld: /home/noodler/hw0-linux_osx/mytest3.cpp:115: undefined reference to `__glewUniformMatrix4fv' /usr/bin/ld: /home/noodler/hw0-linux_osx/mytest3.cpp:116: undefined reference to `__glewUniform3fv' /usr/bin/ld: /home/noodler/hw0-linux_osx/mytest3.cpp:123: undefined reference to `__glewUniformMatrix4fv' /usr/bin/ld: /home/noodler/hw0-linux_osx/mytest3.cpp:124: undefined reference to `__glewUniform3fv' /usr/bin/ld: /home/noodler/hw0-linux_osx/mytest3.cpp:131: undefined reference to `__glewUniformMatrix4fv' /usr/bin/ld: /home/noodler/hw0-linux_osx/mytest3.cpp:132: undefined reference to `__glewUniform3fv' /usr/bin/ld: /home/noodler/hw0-linux_osx/mytest3.cpp:139: undefined reference to `__glewUniformMatrix4fv' /usr/bin/ld: /home/noodler/hw0-linux_osx/mytest3.cpp:140: undefined reference to `__glewUniform3fv' /usr/bin/ld: /home/noodler/hw0-linux_osx/mytest3.cpp:167: undefined reference to `__glewUniform3fv' /usr/bin/ld: /home/noodler/hw0-linux_osx/mytest3.cpp:168: undefined reference to `__glewUniform4fv' /usr/bin/ld: /home/noodler/hw0-linux_osx/mytest3.cpp:169: undefined reference to `__glewUniform4fv' /usr/bin/ld: /home/noodler/hw0-linux_osx/mytest3.cpp:170: undefined reference to `__glewUniform4fv' /usr/bin/ld: /home/noodler/hw0-linux_osx/mytest3.cpp:173: undefined reference to `__glewUniform4fv' /usr/bin/ld: /home/noodler/hw0-linux_osx/mytest3.cpp:174: undefined reference to `__glewUniform4fv' /usr/bin/ld: mytest3.o:/home/noodler/hw0-linux_osx/mytest3.cpp:175: more undefined references to `__glewUniform4fv' follow /usr/bin/ld: mytest3.o: in function `display()': /home/noodler/hw0-linux_osx/mytest3.cpp:176: undefined reference to `__glewUniform1fv' /usr/bin/ld: /home/noodler/hw0-linux_osx/mytest3.cpp:183: undefined reference to `__glewUniform1i' /usr/bin/ld: /home/noodler/hw0-linux_osx/mytest3.cpp:187: undefined reference to `__glewUniform3f' /usr/bin/ld: /home/noodler/hw0-linux_osx/mytest3.cpp:199: undefined reference to `__glewUniformMatrix4fv' /usr/bin/ld: /home/noodler/hw0-linux_osx/mytest3.cpp:215: undefined reference to `glutSwapBuffers' /usr/bin/ld: /home/noodler/hw0-linux_osx/mytest3.cpp:216: undefined reference to `glFlush' /usr/bin/ld: mytest3.o: in function `animation()': /home/noodler/hw0-linux_osx/mytest3.cpp:227: undefined reference to `glutPostRedisplay' /usr/bin/ld: mytest3.o: in function `mouse(int, int, int, int)': /home/noodler/hw0-linux_osx/mytest3.cpp:254: undefined reference to `__glewUniformMatrix4fv' /usr/bin/ld: /home/noodler/hw0-linux_osx/mytest3.cpp:255: undefined reference to `glutPostRedisplay' /usr/bin/ld: mytest3.o: in function `mousedrag(int, int)': /home/noodler/hw0-linux_osx/mytest3.cpp:268: undefined reference to `__glewUniformMatrix4fv' /usr/bin/ld: /home/noodler/hw0-linux_osx/mytest3.cpp:269: undefined reference to `glutPostRedisplay' /usr/bin/ld: mytest3.o: in function `saveScreenshot()': /home/noodler/hw0-linux_osx/mytest3.cpp:286: undefined reference to `glReadBuffer' /usr/bin/ld: /home/noodler/hw0-linux_osx/mytest3.cpp:287: undefined reference to `glReadPixels' /usr/bin/ld: /home/noodler/hw0-linux_osx/mytest3.cpp:289: undefined reference to `FreeImage_ConvertFromRawBits' /usr/bin/ld: /home/noodler/hw0-linux_osx/mytest3.cpp:293: undefined reference to `FreeImage_Save' /usr/bin/ld: mytest3.o: in function `keyboard(unsigned char, int, int)': /home/noodler/hw0-linux_osx/mytest3.cpp:313: undefined reference to `__glewUniformMatrix4fv' /usr/bin/ld: /home/noodler/hw0-linux_osx/mytest3.cpp:317: undefined reference to `glutIdleFunc' /usr/bin/ld: /home/noodler/hw0-linux_osx/mytest3.cpp:318: undefined reference to `glutPostRedisplay' /usr/bin/ld: /home/noodler/hw0-linux_osx/mytest3.cpp:325: undefined reference to `glutIdleFunc' /usr/bin/ld: /home/noodler/hw0-linux_osx/mytest3.cpp:326: undefined reference to `glutIdleFunc' /usr/bin/ld: /home/noodler/hw0-linux_osx/mytest3.cpp:330: undefined reference to `glutPostRedisplay' /usr/bin/ld: /home/noodler/hw0-linux_osx/mytest3.cpp:334: undefined reference to `glutPostRedisplay' /usr/bin/ld: mytest3.o: in function `reshape(int, int)': /home/noodler/hw0-linux_osx/mytest3.cpp:346: undefined reference to `glViewport' /usr/bin/ld: /home/noodler/hw0-linux_osx/mytest3.cpp:351: undefined reference to `__glewUniformMatrix4fv' /usr/bin/ld: mytest3.o: in function `checkOpenGLVersion()': /home/noodler/hw0-linux_osx/mytest3.cpp:355: undefined reference to `glGetString' : ```

This indicates either:

130s commented 3 days ago

Well at least I can say the 2nd line is also commented out when the 1st line is commented.

INCFLAGS = -I./glm-0.9.7.1 -I./include/ -I/usr/X11R6/include -I/sw/include \
#INCFLAGS = -I./glm-0.9.7.1 -I/usr/X11R6/include -I/sw/include \
        -I/usr/sww/include -I/usr/sww/pkg/Mesa/include
LDFLAGS = -L./lib/nix -L/usr/X11R6/lib -L/sw/lib -L/usr/sww/lib \
#LDFLAGS = -L/usr/X11R6/lib -L/sw/lib -L/usr/sww/lib \
        -L/usr/sww/bin -L/usr/sww/pkg/Mesa/lib -lGLEW -lglut -lGLU -lGL -lX11 -lfreeimage

I confirmed that by removing the commented line then the output became different, which is the one at the bottom of https://github.com/kinu-garage/hut_10sqft/issues/1052#issuecomment-2199319735 that complains something about the included libs incompatibility.

/usr/bin/ld: ./lib/nix/libGLEW.a(glew.o): relocation R_X86_64_32S against `.rodata' can not be used when making a PIE object; recompile with -fPIE
/usr/bin/ld: failed to set dynamic section sizes: bad value
130s commented 3 days ago

Now different, more classic error.

#INCFLAGS = -I./glm-0.9.7.1 -I./include/ -I/usr/X11R6/include -I/sw/include \
        -I/usr/sww/include -I/usr/sww/pkg/Mesa/include
INCFLAGS = -I./glm-0.9.7.1 -I/usr/X11R6/include -I/sw/include -I/usr/sww/include -I/usr/sww/pkg/Mesa/include
#LDFLAGS = -L./lib/nix -L/usr/X11R6/lib -L/sw/lib -L/usr/sww/lib \
        -L/usr/sww/bin -L/usr/sww/pkg/Mesa/lib -lGLEW -lglut -lGLU -lGL -lX11 -lfreeimage
LDFLAGS = -L/usr/X11R6/lib -L/sw/lib -L/usr/sww/lib -L/usr/sww/bin -L/usr/sww/pkg/Mesa/lib -lGLEW -lglut -lGLU -lGL -lX11 -lfreeimage
# apt-get install -y libglew2.2 libfreeimage-dev

# make
g++ -g -DGL_GLEXT_PROTOTYPES  -o mytest3 shaders.o mytest3.o -I./glm-0.9.7.1 -I/usr/X11R6/include -I/sw/include -I/usr/sww/include -I/usr/sww/pkg/Mesa/include -L/usr/X11R6/lib -L/sw/lib -L/usr/sww/lib -L/usr/sww/bin -L/usr/sww/pkg/Mesa/lib -lGLEW -lglut -lGLU -lGL -lX11 -lfreeimage          
/usr/bin/ld: cannot find -lGLEW: No such file or directory
collect2: error: ld returned 1 exit status
make: *** [Makefile:22: mytest3] Error 1
130s commented 3 days ago

I guess make ended w/o errors. I think libglew2.2 is not supposed to be installed manually (install libglew-dev instead)?

# apt purge -y libglew2.2 && apt-get install -y libglew-dev
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
The following additional packages will be installed:
  libglew2.2
Suggested packages:
  glew-utils
The following NEW packages will be installed:
  libglew-dev libglew2.2
0 upgraded, 2 newly installed, 0 to remove and 71 not upgraded.
Need to get 483 kB of archives.
After this operation, 3641 kB of additional disk space will be used.
Get:1 http://archive.ubuntu.com/ubuntu jammy/universe amd64 libglew2.2 amd64 2.2.0-4 [196 kB]
Get:2 http://archive.ubuntu.com/ubuntu jammy/universe amd64 libglew-dev amd64 2.2.0-4 [287 kB]
Fetched 483 kB in 2s (253 kB/s)       
debconf: delaying package configuration, since apt-utils is not installed
Selecting previously unselected package libglew2.2:amd64.
(Reading database ... 37572 files and directories currently installed.)
Preparing to unpack .../libglew2.2_2.2.0-4_amd64.deb ...
Unpacking libglew2.2:amd64 (2.2.0-4) ...
Selecting previously unselected package libglew-dev:amd64.
Preparing to unpack .../libglew-dev_2.2.0-4_amd64.deb ...
Unpacking libglew-dev:amd64 (2.2.0-4) ...
Setting up libglew2.2:amd64 (2.2.0-4) ...
Setting up libglew-dev:amd64 (2.2.0-4) ...
Processing triggers for libc-bin (2.35-0ubuntu3.1) ...
root@gltest:/cws/src/hw0-linux_osx# find /usr -iname *glew*
/usr/lib/x86_64-linux-gnu/pkgconfig/glew.pc
/usr/lib/x86_64-linux-gnu/libGLEW.so.2.2.0
/usr/lib/x86_64-linux-gnu/libGLEW.a
/usr/lib/x86_64-linux-gnu/libGLEW.so.2.2
/usr/lib/x86_64-linux-gnu/libGLEW.so
/usr/include/GL/glew.h
/usr/include/GL/wglew.h
/usr/share/doc/libglew2.2
/usr/share/doc/libglew-dev

root@gltest:/cws/src/hw0-linux_osx# make
g++ -g -DGL_GLEXT_PROTOTYPES  -o mytest3 shaders.o mytest3.o -I./glm-0.9.7.1 -I/usr/X11R6/include -I/sw/include -I/usr/sww/include -I/usr/sww/pkg/Mesa/include -L/usr/X11R6/lib -L/sw/lib -L/usr/sww/lib -L/usr/sww/bin -L/usr/sww/pkg/Mesa/lib -lGLEW -lglut -lGLU -lGL -lX11 -lfreeimage          

root@gltest:/cws/src/hw0-linux_osx# 
130s commented 2 days ago

H/W0 submitted but ran into tech issue, requested support.

130s commented 2 days ago

Done.