When compiling, it ends with: make[3]: Entering directory `/home/dema1701/projects/mesa/mesa/src/gallium/targets/egl-static' /bin/bash ../../../../bin/mklib -o egl_gallium.so -noprefix -linker 'g++' \ -L../../../../x86_64-linux-gnu -ldflags '-Wl,--no-undefined ' \ -cplusplus -install ../../../../x86_64-linux-gnu/egl \ egl.o egl_pipe.o egl_st.o -Wl,--start-group ../../../../src/gallium/auxiliary/libgallium.a ../../../../src/gallium/drivers/identity/libidentity.a ../../../../src/gallium/drivers/r600/libr600.a ../../../../src/gallium/drivers/rbug/librbug.a ../../../../src/gallium/drivers/softpipe/libsoftpipe.a ../../../../src/gallium/drivers/trace/libtrace.a ../../../../src/gallium/state_trackers/egl/libegl.a ../../../../src/gallium/state_trackers/vega/libvega.a ../../../../src/gallium/winsys/r600/drm/libr600winsys.a ../../../../src/gallium/winsys/sw/xlib/libws_xlib.a ../../../../src/mesa/libmesagallium.a -Wl,--end-group \ -L/lib/x86_64-linux-gnu -L/usr/lib/x86_64-linux-gnu -lEGL -lOpenVG -lX11 -lXext -lXfixes -ldl -ldrm -ldrm_radeon -lglapi -lm -lpthread -lrt -ludev mklib: Making Linux shared library: egl_gallium.so ../../../../src/gallium/state_trackers/egl/libegl.a(egl_g3d_api.o): In function `egl_g3d_choose_config': /home/dema1701/projects/mesa/mesa/src/gallium/state_trackers/egl/common/egl_g3d_api.c:140: undefined reference to `_eglFilterConfigArray' collect2: ld returned 1 exit status mklib: Installing egl_gallium.so in ../../../../x86_64-linux-gnu/egl mv: cannot stat `egl_gallium.so': No such file or directory As asked, nm and grep give me: nm -D x86_64-linux-gnu/libEGL.so | grep _eglFilterConfigArray 0000000000009240 T _eglFilterConfigArray
The command for linking wrongly put the local library search path after the system's. It should be fixed with 24137af. Please test.
It is now fixed and I'm able to build properly. Thanks.
Reopening. When building 32bit on 64bit system, the same error appears: ../../../../src/gallium/state_trackers/egl/libegl.a(egl_g3d_api.o): In function `egl_g3d_choose_config': /home/dema1701/projects/mesa/mesa/src/gallium/state_trackers/egl/common/egl_g3d_api.c:140: undefined reference to `_eglFilterConfigArray' collect2: ld returned 1 exit status And doing: nm -D i386-linux-gnu/libEGL.so | grep _eglFilterConfigArray doesn't grep anything, even though removing grep ... does return many things.
Is your i386-linux-gnu/libEGL.so outdated? It should have the symbol. (another place to check is src/egl/main/eglconfig.o where the symbol is defined)
Obviously, after verifying, i386-linux-gnu/libEGL.so shouldn't be outdated since I always make a "make realclean" at the beginning and the file is then removed (checked). I understand the symbol should be there, but it seems it's not. _eglFilterArray is, but not _eglFilterConfigArray. How am I supposed to check if src/egl/main/eglconfig.o contains the symbol definition?
You can still use nm like $ nm src/egl/main/eglconfig.o Could you also attach your build log of building src/egl/main? It might shed some light.
I'll look at it when I'll get home tonight.
Here are some different results: -nm -D src/egl/main/eglconfig.o | grep eglFilter nm: src/egl/main/eglconfig.o: No symbols -nm src/egl/main/eglconfig.o | grep eglFilter U _eglFilterArray 00000c30 T _eglFilterConfigArray -nm i386-linux-gnu/libEGL.so | grep eglFilter 00000000000089c0 T _eglFilterArray and obviously nm -D i386-linux-gnu/libEGL.so | grep eglFilter 00000000000089c0 T _eglFilterArray I'll attach my log in a couple of minutes.
Created attachment 48539 [details] Full log using: make realclean ./autogen.sh --enable-32-bit with some other options make -j 12
"make realclean" did not seem to remove your i386-linux-gnu (it did "rm -rf lib*"). When building libEGL later, it failed because 32-bit xcb-{dri2,xfixes,shape} were missing. So you still got the outdated libEGL.
Yes, you are right, I now know mostly why. Last time libEGL was written was in April under i386. So it seems something is preventing libEGL from being recreated since then. I can't remember what I changed then. However, since I'm on a 64bit and compiling a 32bit version of mesa, it seems I'm now trapped with a new dependency problem. I can't install both 64 and 32bit dev files. I could use chroot probably, but I've never liked that solution. Well, if I want to be able to compile 32bit Mesa to let Wine play well, I don't see any other solution for now. I *could* rely on ia32 libs on Ubuntu, which is a real nightmare. Or I could try to build Wine64 instead, which is probably what I'll do. That said, thanks for everything. I'm closing the bug as it was before reopening since the original problem was a real bug. Note: "make realclean" should have removed the file libEGL.so.1.0 though, it would have pointed at the problem a lot sooner.
(In reply to comment #1) > The command for linking wrongly put the local library search path after the > system's. It should be fixed with 24137af. Please test. I am using Debian Sid amd64 but still can't compile the gallium EGL driver.I cloned the latest git and 'make' shows: /usr/bin/ld: error: cannot open ../../../../x86_64-linux-gnu/libEGL.so: No such file or directory --- mklib: Making Linux shared library: egl_gallium.so /usr/bin/ld: error: cannot open ../../../../x86_64-linux-gnu/libEGL.so: No such file or directory egl.c:98: error: undefined reference to '_eglLog' egl.c:150: error: undefined reference to '_eglLog' egl.c:150: error: undefined reference to '_eglLog' egl.c:78: error: undefined reference to '_eglLog' egl_st.c:79: error: undefined reference to '_eglSearchPathForEach' common/egl_g3d.c:469: error: undefined reference to '_eglReleaseDisplayResources' common/egl_g3d.c:472: error: undefined reference to '_eglDestroyArray' common/egl_g3d.c:476: error: undefined reference to '_eglDestroyArray' common/egl_g3d.c:480: error: undefined reference to '_eglCleanupDisplay' common/egl_g3d.c:186: error: undefined reference to '_eglInitScreen' common/egl_g3d.c:203: error: undefined reference to '_eglLinkScreen' common/egl_g3d.c:526: error: undefined reference to '_eglError' common/egl_g3d.c:581: error: undefined reference to '_eglError' common/egl_g3d.c:510: error: undefined reference to '_eglError' common/egl_g3d.c:429: error: undefined reference to '_eglInitConfig' common/egl_g3d.c:307: error: undefined reference to '_eglValidateConfig' common/egl_g3d.c:437: error: undefined reference to '_eglLinkConfig' common/egl_g3d.c:521: error: undefined reference to '_eglError' ../../../../src/egl/main/eglimage.h:127: error: undefined reference to '_eglCheckResource' common/egl_g3d_api.c:639: error: undefined reference to '_eglGetAPIContext' common/egl_g3d_api.c:584: error: undefined reference to '_eglGetCurrentContext' common/egl_g3d_api.c:126: error: undefined reference to '_eglParseConfigAttribList' common/egl_g3d_api.c:140: error: undefined reference to '_eglFilterConfigArray' common/egl_g3d_api.c:254: error: undefined reference to '_eglInitSurface' common/egl_g3d_api.c:353: error: undefined reference to '_eglInitSurface' common/egl_g3d_api.c:706: error: undefined reference to '_eglGetAPIContext' common/egl_g3d_api.c:619: error: undefined reference to '_eglGetCurrentContext' common/egl_g3d_api.c:552: error: undefined reference to '_eglGetCurrentContext' ../../../../src/egl/main/eglcontext.h:95: error: undefined reference to '_eglPutResource' common/egl_g3d_api.c:160: error: undefined reference to '_eglInitContext' ../../../../src/egl/main/eglsurface.h:118: error: undefined reference to '_eglPutResource' common/egl_g3d_api.c:493: error: undefined reference to '_eglBindContext' ../../../../src/egl/main/eglcontext.h:95: error: undefined reference to '_eglPutResource' ../../../../src/egl/main/eglsurface.h:118: error: undefined reference to '_eglPutResource' common/egl_g3d_api.c:531: error: undefined reference to '_eglBindContext' common/egl_g3d_api.c:823: error: undefined reference to '_eglInitDriverFallbacks' common/egl_g3d_api.c:103: error: undefined reference to '_eglCompareConfigs' common/egl_g3d_api.c:117: error: undefined reference to '_eglMatchConfig' cmklib: Making Linux shared library: egl_gallium.so /usr/bin/ld: error: cannot open ../../../../x86_64-linux-gnu/libEGL.so: No such file or directory egl.c:98: error: undefined reference to '_eglLog' egl.c:150: error: undefined reference to '_eglLog' egl.c:150: error: undefined reference to '_eglLog' egl.c:78: error: undefined reference to '_eglLog' egl_st.c:79: error: undefined reference to '_eglSearchPathForEach' common/egl_g3d.c:469: error: undefined reference to '_eglReleaseDisplayResources' common/egl_g3d.c:472: error: undefined reference to '_eglDestroyArray' common/egl_g3d.c:476: error: undefined reference to '_eglDestroyArray' common/egl_g3d.c:480: error: undefined reference to '_eglCleanupDisplay' common/egl_g3d.c:186: error: undefined reference to '_eglInitScreen' common/egl_g3d.c:203: error: undefined reference to '_eglLinkScreen' common/egl_g3d.c:526: error: undefined reference to '_eglError' common/egl_g3d.c:581: error: undefined reference to '_eglError' common/egl_g3d.c:510: error: undefined reference to '_eglError' common/egl_g3d.c:429: error: undefined reference to '_eglInitConfig' common/egl_g3d.c:307: error: undefined reference to '_eglValidateConfig' common/egl_g3d.c:437: error: undefined reference to '_eglLinkConfig' common/egl_g3d.c:521: error: undefined reference to '_eglError' ../../../../src/egl/main/eglimage.h:127: error: undefined reference to '_eglCheckResource' common/egl_g3d_api.c:639: error: undefined reference to '_eglGetAPIContext' common/egl_g3d_api.c:584: error: undefined reference to '_eglGetCurrentContext' common/egl_g3d_api.c:126: error: undefined reference to '_eglParseConfigAttribList' common/egl_g3d_api.c:140: error: undefined reference to '_eglFilterConfigArray' common/egl_g3d_api.c:254: error: undefined reference to '_eglInitSurface' common/egl_g3d_api.c:353: error: undefined reference to '_eglInitSurface' common/egl_g3d_api.c:706: error: undefined reference to '_eglGetAPIContext' common/egl_g3d_api.c:619: error: undefined reference to '_eglGetCurrentContext' common/egl_g3d_api.c:552: error: undefined reference to '_eglGetCurrentContext' ../../../../src/egl/main/eglcontext.h:95: error: undefined reference to '_eglPutResource' common/egl_g3d_api.c:160: error: undefined reference to '_eglInitContext' ../../../../src/egl/main/eglsurface.h:118: error: undefined reference to '_eglPutResource' common/egl_g3d_api.c:493: error: undefined reference to '_eglBindContext' ../../../../src/egl/main/eglcontext.h:95: error: undefined reference to '_eglPutResource' ../../../../src/egl/main/eglsurface.h:118: error: undefined reference to '_eglPutResource' common/egl_g3d_api.c:531: error: undefined reference to '_eglBindContext' common/egl_g3d_api.c:823: error: undefined reference to '_eglInitDriverFallbacks' common/egl_g3d_api.c:103: error: undefined reference to '_eglCompareConfigs' common/egl_g3d_api.c:117: error: undefined reference to '_eglMatchConfig' common/egl_g3d_sync.c:157: error: undefined reference to '_eglGetCurrentContext' common/egl_g3d_sync.c:172: error: undefined reference to '_eglInitSync' ../../../../src/egl/main/eglsync.h:71: error: undefined reference to '_eglGetResource' common/egl_g3d_image.c:220: error: undefined reference to '_eglInitImage' common/egl_g3d_image.c:144: error: undefined reference to '_eglParseImageAttribList' common/egl_g3d_image.c:297: error: undefined reference to '_eglInitImage' common/egl_g3d_image.c:76: error: undefined reference to '_eglParseImageAttribList' collect2: ld returned 1 exit status mklib: Installing egl_gallium.so in ../../../../x86_64-linux-gnu/egl mv: cannot stat `egl_gallium.so': No such file or directory make[3]: Leaving directory `/home/jos/src/xorg/git-master/mesa/src/gallium/targets/egl-static' make[2]: Leaving directory `/home/jos/src/xorg/git-master/mesa/src/gallium/targets' make[1]: Leaving directory `/home/jos/src/xorg/git-master/mesa/src' ommon/egl_g3d_sync.c:157: error: undefined reference to '_eglGetCurrentContext' common/egl_g3d_sync.c:172: error: undefined reference to '_eglInitSync' ../../../../src/egl/main/eglsync.h:71: error: undefined reference to '_eglGetResource' common/egl_g3d_image.c:220: error: undefined reference to '_eglInitImage' common/egl_g3d_image.c:144: error: undefined reference to '_eglParseImageAttribList' common/egl_g3d_image.c:297: error: undefined reference to '_eglInitImage' common/egl_g3d_image.c:76: error: undefined reference to '_eglParseImageAttribList' collect2: ld returned 1 exit status mklib: Installing egl_gallium.so in ../../../../x86_64-linux-gnu/egl mv: cannot stat `egl_gallium.so': No such file or directory make[3]: Leaving directory `/home/jos/src/xorg/git-master/mesa/src/gallium/targets/egl-static' make[2]: Leaving directory `/home/jos/src/xorg/git-master/mesa/src/gallium/targets' make[1]: Leaving directory `/home/jos/src/xorg/git-master/mesa/src' --- The configuration shows: EGL: yes EGL platforms: x11 EGL drivers: builtin:egl_glx builtin:egl_dri2 egl_gallium EGL Gallium STs: $(VG_LIB) $(GL_LIB) ---
(In reply to comment #12) > (In reply to comment #1) > > The command for linking wrongly put the local library search path after the > > system's. It should be fixed with 24137af. Please test. > > I am using Debian Sid amd64 but still can't compile the gallium EGL driver.I > cloned the latest git and 'make' shows: > /usr/bin/ld: error: cannot open ../../../../x86_64-linux-gnu/libEGL.so: No such > file or directory libEGL.so is missing. Could you switch to src/egl/main/ and "make" from that directory? > --- > mklib: Making Linux shared library: egl_gallium.so > /usr/bin/ld: error: cannot open ../../../../x86_64-linux-gnu/libEGL.so: No such > file or directory > egl.c:98: error: undefined reference to '_eglLog' > egl.c:150: error: undefined reference to '_eglLog' > egl.c:150: error: undefined reference to '_eglLog' > egl.c:78: error: undefined reference to '_eglLog' > egl_st.c:79: error: undefined reference to '_eglSearchPathForEach' > common/egl_g3d.c:469: error: undefined reference to > '_eglReleaseDisplayResources' > common/egl_g3d.c:472: error: undefined reference to '_eglDestroyArray' > common/egl_g3d.c:476: error: undefined reference to '_eglDestroyArray' > common/egl_g3d.c:480: error: undefined reference to '_eglCleanupDisplay' > common/egl_g3d.c:186: error: undefined reference to '_eglInitScreen' > common/egl_g3d.c:203: error: undefined reference to '_eglLinkScreen' > common/egl_g3d.c:526: error: undefined reference to '_eglError' > common/egl_g3d.c:581: error: undefined reference to '_eglError' > common/egl_g3d.c:510: error: undefined reference to '_eglError' > common/egl_g3d.c:429: error: undefined reference to '_eglInitConfig' > common/egl_g3d.c:307: error: undefined reference to '_eglValidateConfig' > common/egl_g3d.c:437: error: undefined reference to '_eglLinkConfig' > common/egl_g3d.c:521: error: undefined reference to '_eglError' > ../../../../src/egl/main/eglimage.h:127: error: undefined reference to > '_eglCheckResource' > common/egl_g3d_api.c:639: error: undefined reference to '_eglGetAPIContext' > common/egl_g3d_api.c:584: error: undefined reference to '_eglGetCurrentContext' > common/egl_g3d_api.c:126: error: undefined reference to > '_eglParseConfigAttribList' > common/egl_g3d_api.c:140: error: undefined reference to '_eglFilterConfigArray' > common/egl_g3d_api.c:254: error: undefined reference to '_eglInitSurface' > common/egl_g3d_api.c:353: error: undefined reference to '_eglInitSurface' > common/egl_g3d_api.c:706: error: undefined reference to '_eglGetAPIContext' > common/egl_g3d_api.c:619: error: undefined reference to '_eglGetCurrentContext' > common/egl_g3d_api.c:552: error: undefined reference to '_eglGetCurrentContext' > ../../../../src/egl/main/eglcontext.h:95: error: undefined reference to > '_eglPutResource' > common/egl_g3d_api.c:160: error: undefined reference to '_eglInitContext' > ../../../../src/egl/main/eglsurface.h:118: error: undefined reference to > '_eglPutResource' > common/egl_g3d_api.c:493: error: undefined reference to '_eglBindContext' > ../../../../src/egl/main/eglcontext.h:95: error: undefined reference to > '_eglPutResource' > ../../../../src/egl/main/eglsurface.h:118: error: undefined reference to > '_eglPutResource' > common/egl_g3d_api.c:531: error: undefined reference to '_eglBindContext' > common/egl_g3d_api.c:823: error: undefined reference to > '_eglInitDriverFallbacks' > common/egl_g3d_api.c:103: error: undefined reference to '_eglCompareConfigs' > common/egl_g3d_api.c:117: error: undefined reference to '_eglMatchConfig' > cmklib: Making Linux shared library: egl_gallium.so > /usr/bin/ld: error: cannot open ../../../../x86_64-linux-gnu/libEGL.so: No such > file or directory > egl.c:98: error: undefined reference to '_eglLog' > egl.c:150: error: undefined reference to '_eglLog' > egl.c:150: error: undefined reference to '_eglLog' > egl.c:78: error: undefined reference to '_eglLog' > egl_st.c:79: error: undefined reference to '_eglSearchPathForEach' > common/egl_g3d.c:469: error: undefined reference to > '_eglReleaseDisplayResources' > common/egl_g3d.c:472: error: undefined reference to '_eglDestroyArray' > common/egl_g3d.c:476: error: undefined reference to '_eglDestroyArray' > common/egl_g3d.c:480: error: undefined reference to '_eglCleanupDisplay' > common/egl_g3d.c:186: error: undefined reference to '_eglInitScreen' > common/egl_g3d.c:203: error: undefined reference to '_eglLinkScreen' > common/egl_g3d.c:526: error: undefined reference to '_eglError' > common/egl_g3d.c:581: error: undefined reference to '_eglError' > common/egl_g3d.c:510: error: undefined reference to '_eglError' > common/egl_g3d.c:429: error: undefined reference to '_eglInitConfig' > common/egl_g3d.c:307: error: undefined reference to '_eglValidateConfig' > common/egl_g3d.c:437: error: undefined reference to '_eglLinkConfig' > common/egl_g3d.c:521: error: undefined reference to '_eglError' > ../../../../src/egl/main/eglimage.h:127: error: undefined reference to > '_eglCheckResource' > common/egl_g3d_api.c:639: error: undefined reference to '_eglGetAPIContext' > common/egl_g3d_api.c:584: error: undefined reference to '_eglGetCurrentContext' > common/egl_g3d_api.c:126: error: undefined reference to > '_eglParseConfigAttribList' > common/egl_g3d_api.c:140: error: undefined reference to '_eglFilterConfigArray' > common/egl_g3d_api.c:254: error: undefined reference to '_eglInitSurface' > common/egl_g3d_api.c:353: error: undefined reference to '_eglInitSurface' > common/egl_g3d_api.c:706: error: undefined reference to '_eglGetAPIContext' > common/egl_g3d_api.c:619: error: undefined reference to '_eglGetCurrentContext' > common/egl_g3d_api.c:552: error: undefined reference to '_eglGetCurrentContext' > ../../../../src/egl/main/eglcontext.h:95: error: undefined reference to > '_eglPutResource' > common/egl_g3d_api.c:160: error: undefined reference to '_eglInitContext' > ../../../../src/egl/main/eglsurface.h:118: error: undefined reference to > '_eglPutResource' > common/egl_g3d_api.c:493: error: undefined reference to '_eglBindContext' > ../../../../src/egl/main/eglcontext.h:95: error: undefined reference to > '_eglPutResource' > ../../../../src/egl/main/eglsurface.h:118: error: undefined reference to > '_eglPutResource' > common/egl_g3d_api.c:531: error: undefined reference to '_eglBindContext' > common/egl_g3d_api.c:823: error: undefined reference to > '_eglInitDriverFallbacks' > common/egl_g3d_api.c:103: error: undefined reference to '_eglCompareConfigs' > common/egl_g3d_api.c:117: error: undefined reference to '_eglMatchConfig' > common/egl_g3d_sync.c:157: error: undefined reference to > '_eglGetCurrentContext' > common/egl_g3d_sync.c:172: error: undefined reference to '_eglInitSync' > ../../../../src/egl/main/eglsync.h:71: error: undefined reference to > '_eglGetResource' > common/egl_g3d_image.c:220: error: undefined reference to '_eglInitImage' > common/egl_g3d_image.c:144: error: undefined reference to > '_eglParseImageAttribList' > common/egl_g3d_image.c:297: error: undefined reference to '_eglInitImage' > common/egl_g3d_image.c:76: error: undefined reference to > '_eglParseImageAttribList' > collect2: ld returned 1 exit status > mklib: Installing egl_gallium.so in ../../../../x86_64-linux-gnu/egl > mv: cannot stat `egl_gallium.so': No such file or directory > make[3]: Leaving directory > `/home/jos/src/xorg/git-master/mesa/src/gallium/targets/egl-static' > make[2]: Leaving directory > `/home/jos/src/xorg/git-master/mesa/src/gallium/targets' > make[1]: Leaving directory `/home/jos/src/xorg/git-master/mesa/src' > ommon/egl_g3d_sync.c:157: error: undefined reference to '_eglGetCurrentContext' > common/egl_g3d_sync.c:172: error: undefined reference to '_eglInitSync' > ../../../../src/egl/main/eglsync.h:71: error: undefined reference to > '_eglGetResource' > common/egl_g3d_image.c:220: error: undefined reference to '_eglInitImage' > common/egl_g3d_image.c:144: error: undefined reference to > '_eglParseImageAttribList' > common/egl_g3d_image.c:297: error: undefined reference to '_eglInitImage' > common/egl_g3d_image.c:76: error: undefined reference to > '_eglParseImageAttribList' > collect2: ld returned 1 exit status > mklib: Installing egl_gallium.so in ../../../../x86_64-linux-gnu/egl > mv: cannot stat `egl_gallium.so': No such file or directory > make[3]: Leaving directory > `/home/jos/src/xorg/git-master/mesa/src/gallium/targets/egl-static' > make[2]: Leaving directory > `/home/jos/src/xorg/git-master/mesa/src/gallium/targets' > make[1]: Leaving directory `/home/jos/src/xorg/git-master/mesa/src' > --- > The configuration shows: > EGL: yes > EGL platforms: x11 > EGL drivers: builtin:egl_glx builtin:egl_dri2 egl_gallium > EGL Gallium STs: $(VG_LIB) $(GL_LIB) > ---
(In reply to comment #13) > libEGL.so is missing. Could you switch to src/egl/main/ and "make" from that > directory? > Switching to .../mesa/src/egl/main, "make" now properly builds libEGL.so and egl_gallium.so Thank you very much!
Use of freedesktop.org services, including Bugzilla, is subject to our Code of Conduct. How we collect and use information is described in our Privacy Policy.