1. opengl on linux.
- Posted by petelomax Nov 27, 2016
- 1443 views
I've tried a few things on this, and started going round in circles on google. To cut a long story short,
$ locate -e libGL.so /usr/lib/i386-linux-gnu/libGL.so /usr/lib/i386-linux-gnu/mesa/libGL.so /usr/lib/i386-linux-gnu/mesa/libGL.so.1 /usr/lib/i386-linux-gnu/mesa/libGL.so.1.2However:
$ ./phix demo/pGUI/gears.exw Error! Can't find /usr/lib/x86_64-linux-gnu/libGL.soError! Can't find glAccum(). Press any key..I have no idea where it is getting x86_64-linux-gnu from, no such directory, it is a 32 bit OS (Ubuntu running in VirtualBox on a 64-bit machine)
Any ideas?
Pete
2. Re: opengl on linux.
- Posted by ghaberek (admin) Nov 28, 2016
- 1391 views
What happens when you run this?
$ LD_LIBRARY_PATH=/usr/lib/i386-linux-gnu/ ./phix demo/pGUI/gears.exw
-Greg
3. Re: opengl on linux.
- Posted by petelomax Nov 28, 2016
- 1420 views
What happens when you run this?
$ LD_LIBRARY_PATH=/usr/lib/i386-linux-gnu/ ./phix demo/pGUI/gears.exw
-Greg
No change. As I understand it, Ubuntu does not like LD_LIBRARY_PATH anyway, and you have to use /etc/ld.so.conf.d, which in my case contains 3 files:
i386-linux-gnu_GL.conf: /usr/lib/i386-linux-gnu/mesa i686-linux-gnu.conf: # Multiarch support /lib/i386-linux-gnu /usr/lib/i386-linux-gnu /lib/i686-linux-gnu /usr/lib/i686-linux-gnu libc.conf: # libc default configuration /usr/local/libWhich ought to cover it... but it don't (even after re-running sudo ldconfig)
I have just run an strace (damn report had 140,000 pigging getpid() in it) and at the end of it:
open("/home/pete/phix/demo/pGUI/pfindany.e", O_RDONLY) = -1 ENOENT (No such file or directory) open("/home/pete/phix/pfindany.e", O_RDONLY) = -1 ENOENT (No such file or directory) open("/home/pete/phix/builtins/VM/pfindany.e", O_RDONLY) = -1 ENOENT (No such file or directory) open("/home/pete/phix/builtins/pfindany.e", O_RDONLY) = 3 _llseek(3, 0, [0], SEEK_SET) = 0 fstat64(3, {st_mode=S_IFREG|0777, st_size=425, ...}) = 0 read(3, "--\r\n-- pfindany.e\r\n--\r\n-- Phix "..., 425) = 425 close(3) = 0 brk(0x90c2000) = 0x90c2000 brk(0x90e3000) = 0x90e3000 brk(0x910d000) = 0x910d000 mmap2(NULL, 200704, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x971000 mmap2(NULL, 200704, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x43c000 getcwd("/home/pete/phix", 512) = 16 chdir("/home/pete/phix/demo/pGUI/") = 0 time(NULL) = 1480359050 open("/usr/lib/x86_64-linux-gnu/libGL.so", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory) write(1, "Error! Can't find /usr/lib/x86_6"..., 52) = 52 write(1, "Error! Can't find glAccum().\nPre"..., 44) = 44 ioctl(0, SNDCTL_TMR_TIMEBASE or TCGETS, {B38400 opost isig icanon echo ...}) = 0 ioctl(0, SNDCTL_TMR_START or TCSETS, {B38400 opost isig -icanon -echo ...}) = 0 read(0, "\n", 1) = 1 ioctl(0, SNDCTL_TMR_START or TCSETS, {B38400 opost isig icanon echo ...}) = 0 _exit(0) = ?So I can see ptok.e having a good hunt around for pfindany.e, then pemit2.e allocating space for code and data, then pGUI.e doing it's chdir, then it ought to be open_dll("libiup.so"), via libdl/dlopen, going straight for a directory which does not exist, is not in the list of places where I think it should be looking, and giving up immediately. I have found "libGL.so.1" (but absolutely no sign of that path) hiding in libiupgl.so, which I am opening a bit later, maybe the strace is not showing dlopen that hit the cache? Anyway, still completely stuck. Maybe I need to create /usr/lib/x86_64-linux-gnu and put a softlink(?) in it? Which is also still a bit above my pay grade.
4. Re: opengl on linux.
- Posted by ghaberek (admin) Nov 28, 2016
- 1373 views
Anyway, still completely stuck.
I am at a loss as well. Not sure what else to suggest.
Maybe I need to create /usr/lib/x86_64-linux-gnu and put a softlink(?) in it? Which is also still a bit above my pay grade.
That I can help with.
$ mkdir /usr/lib/x86_64-linux-gnu $ cd /usr/lib/x86_64-linux-gnu $ ln -s ../i386-linux-gnu/libGL.so
-Greg
5. Re: opengl on linux.
- Posted by petelomax Nov 29, 2016
- 1351 views
That I can help with.
$ mkdir /usr/lib/x86_64-linux-gnu $ cd /usr/lib/x86_64-linux-gnu $ ln -s ../i386-linux-gnu/libGL.so
Well, that moves me on to
Error! Can't find wglGetProcAddress().Not to worry - maybe someone can fix this when I get this release out, or maybe it will just work for them anyway (mind you, 64-bit c_func still needs a few tweaks for opengl).
Pete
6. Re: opengl on linux.
- Posted by ghaberek (admin) Nov 29, 2016
- 1372 views
Well, that moves me on to
Error! Can't find wglGetProcAddress().Not to worry - maybe someone can fix this when I get this release out, or maybe it will just work for them anyway (mind you, 64-bit c_func still needs a few tweaks for opengl).
I don't think that function is defined on Linux. The "w" part makes me think it's Windows-specific. There is a GLX function available though:
$ grep GetProcAddress /usr/include/GL/glxext.h __GLXextFuncPtr glXGetProcAddress (const GLubyte *procName); __GLXextFuncPtr glXGetProcAddressARB (const GLubyte *procName);
$ nm -D /usr/lib/x86_64-linux-gnu/libGL.so | grep "GetProcAddress" 000000000001a640 T glXGetProcAddress 000000000001a640 T glXGetProcAddressARB
-Greg
7. Re: opengl on linux.
- Posted by petelomax Dec 01, 2016
- 1304 views
SUCCESS!
I just got gears.exw to run on Linux!