[Mesa-users] Statically linking and figuring out the build system
Chuck Atkins
chuck.atkins at kitware.com
Fri Nov 10 17:09:53 UTC 2017
Hi Reepca,
I want to compile llvmpipe and get a nice, shiny, libGL.so that I can
> toss on another machine I have little control over
This is a pretty typical use case and a well exercised one so you should be
in well-tested waters here.
>
> ran ./configure, ran "make linux-llvm" like
> the instructions said, and got the message
>
> make: *** No rule to make target 'llvm-linux'. Stop.
>
Just 'make' with no target name should be sufficient.
> - How to get a statically-linked libGL.so when building with make
>
You'll need to clarify that some. libGL.so is by it's very nature a shared
library so static doesn't apply there. If you mean a fully static library,
i.e. libGL.a, then you--enable-static shoudl do that. However, I suspect
what you actually want is to compile in the llvm libraries statically and
still get a shared libGL.so. In that case, I believe
--disable-llvm-shared-libs is what you're looking for. I typically use the
following configuration for a bare-bones libGL.so with llvmpipe (these are
the binaries we ship with ParaView):
$ ./configure \
--prefix=<INSTALL_DIR> \
--enable-opengl --disable-gles1 --disable-gles2 \
--disable-va --disable-gbm --disable-xvmc --disable-vdpau \
--enable-shared-glapi \
--disable-dri --with-dri-drivers= \
--enable-llvm --disable-llvm-shared-libs \
--with-gallium-drivers=swrast \
--disable-egl --disable-gbm \
--disable-gallium-osmesa --enable-glx --with-platforms=x11
Some of those options are automatic but I like to be explicit with them so
know for sure how they'll end up configuring. The end result is a libGL.so
with relatively few dependencies that should be available just about
everywhere at runtime:
$ readelf -d libGL.so
[chuck.atkins at hal9000 lib]$ readelf -d libGL.so
Dynamic section at offset 0x180aac8 contains 39 entries:
Tag Type Name/Value
0x0000000000000001 (NEEDED) Shared library: [libX11.so.6]
0x0000000000000001 (NEEDED) Shared library: [libXext.so.6]
0x0000000000000001 (NEEDED) Shared library: [libxcb.so.1]
0x0000000000000001 (NEEDED) Shared library: [librt.so.1]
0x0000000000000001 (NEEDED) Shared library: [libdl.so.2]
0x0000000000000001 (NEEDED) Shared library: [libtinfo.so.6]
0x0000000000000001 (NEEDED) Shared library: [libpthread.so.0]
0x0000000000000001 (NEEDED) Shared library: [libz.so.1]
0x0000000000000001 (NEEDED) Shared library: [libstdc++.so.6]
0x0000000000000001 (NEEDED) Shared library: [libm.so.6]
0x0000000000000001 (NEEDED) Shared library: [libc.so.6]
0x0000000000000001 (NEEDED) Shared library:
[ld-linux-x86-64.so.2]
0x0000000000000001 (NEEDED) Shared library: [libgcc_s.so.1]
...
I also typically build on a RHEL6 mahcine wth GCC4.9, and then the
resulting binary seems to be able to work everywhere (RHEL7, Ubuntu, SLES,
etc.).
- Chuck
- How to build llvmpipe with make
> - Most importantly, where can I find up-to-date information about this
> stuff if not at mesa3d.org?
>
> Thanks.
> _______________________________________________
> mesa-users mailing list
> mesa-users at lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/mesa-users
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.freedesktop.org/archives/mesa-users/attachments/20171110/d58b7f91/attachment.html>
More information about the mesa-users
mailing list