[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