在 Debian 上安装 Mesa3D - 配置 autoconf 找不到 LIBDRM

在 Debian 上安装 Mesa3D - 配置 autoconf 找不到 LIBDRM

我正在尝试从源代码编译并安装 mesa3D 。 (ftp://ftp.freedesktop.org/pub/mesa/11.0.0/mesa-11.0.0-rc3.tar.gz

我在台阶configure

./configure \
CXXFLAGS="-O2 -g -DDEFAULT_SOFTWARE_DEPTH_BITS=31" \
CFLAGS="-O2 -g -DDEFAULT_SOFTWARE_DEPTH_BITS=31" \
--disable-xvmc \
--disable-glx \
--disable-dri \
--with-dri-drivers="" \
--with-gallium-drivers="swrast" \
--enable-texture-float \
--disable-shared-glapi \
--disable-egl \
--with-egl-platforms="" \
--enable-gallium-osmesa \
--enable-gallium-llvm=yes \
--with-llvm-shared-libs \
--prefix=/opt/mesa/11.0.0/llvmpip

configure我不断收到有关找不到LIBDRM库的错误

checking for LIBDRM... no
configure: error: shared GLAPI required when building two or more of
                      the following APIs - opengl, gles1 gles2

尽管图书馆众所周知ldconfig

ldconfig -p | grep drm
libdrm_radeon.so.1 (libc6,x86-64) => /usr/lib/x86_64-linux-gnu/libdrm_radeon.so.1
libdrm_radeon.so (libc6,x86-64) => /usr/lib/x86_64-linux-gnu/libdrm_radeon.so
libdrm_nouveau.so.1 (libc6,x86-64) => /usr/lib/x86_64-linux-gnu/libdrm_nouveau.so.1
libdrm_nouveau.so (libc6,x86-64) => /usr/lib/x86_64-linux-gnu/libdrm_nouveau.so
libdrm_intel.so.1 (libc6,x86-64) => /usr/lib/x86_64-linux-gnu/libdrm_intel.so.1
libdrm_intel.so (libc6,x86-64) => /usr/lib/x86_64-linux-gnu/libdrm_intel.so
libdrm.so.2 (libc6,x86-64) => /usr/lib/x86_64-linux-gnu/libdrm.so.2
libdrm.so (libc6,x86-64) => /usr/lib/x86_64-linux-gnu/libdrm.so

我尝试使用LDFLAGSenv 变量但没有成功

LDFLAGS='-L/usr/lib/x86_64-linux-gnu/' ./configure <my configure parameters here>

或者

export LDFLAGS="-L/usr/lib/x86_64-linux-gnu/" && ./configure <my configure parameters here> 

这是配置脚本中的部分(我假设是)生成此错误

# Check for libdrm

pkg_failed=no
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for LIBDRM" >&5
$as_echo_n "checking for LIBDRM... " >&6; }

if test -n "$LIBDRM_CFLAGS"; then
    pkg_cv_LIBDRM_CFLAGS="$LIBDRM_CFLAGS"
 elif test -n "$PKG_CONFIG"; then
    if test -n "$PKG_CONFIG" && \
    { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"libdrm >= \$LIBDRM_REQUIRED\""; } >&5
  ($PKG_CONFIG --exists --print-errors "libdrm >= $LIBDRM_REQUIRED") 2>&5
  ac_status=$?
  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
  test $ac_status = 0; }; then
  pkg_cv_LIBDRM_CFLAGS=`$PKG_CONFIG --cflags "libdrm >= $LIBDRM_REQUIRED" 2>/dev/null`
                      test "x$?" != "x0" && pkg_failed=yes
else
  pkg_failed=yes
fi
 else
    pkg_failed=untried
fi

您能否提供一些建议或提示来解决这个问题?

谢谢

答案1

看到的库ldconfig用于运行时链接;编译需要额外的符号链接(大多数情况下还需要头文件)。在这种情况下,您需要安装libdrm-dev,可能-dev还需要安装其他软件包。

你可能会发现如何建造台面有用;它详细解释了如何在 Debian 中从源代码构建 Mesa。

答案2

运行时库已安装,但根据您的评论响应,开发包未安装 - 这就是错误./configure所抱怨的。我不确定确切的包名称,您可能需要apt-cache search为其执行一个操作,但如果您安装-devlibDRM 的包,应该可以解决此问题。您可能会遇到另一个-dev软件包未安装错误,只需继续安装所需的-dev软件包直到./configure运行完成。

答案3

以下是我如何在 Debian 上从源代码安装 Mesa3D。感谢所有人的回答和评论。

首先,我必须安装libdrm-dev软件包。

# apt-get install libdrm-dev

然后,检查头文件和lib文件的安装位置

# dpkg-query -L libdrm-dev
...
/usr/include/libdrm/drm.h
...
/usr/lib/x86_64-linux-gnu/libdrm.a
...

之后,导出configure链接到libdrmhttps://stackoverflow.com/questions/24644211/mesa3d-install-cant-find-libdrm

# export LIBDRM_CFLAGS="-I/usr/include/libdrm/"
# export LIBDRM_LIBS="-L/usr/lib/x86_64-linux-gnu/"

最后,configuremakemake install

# ./configure <parameters here>
# make -j24 # running on a 24 cores machine
# make -j24 install

否则,我遇到的第二个错误,

configure: error: shared GLAPI required when building two or more of
                  the following APIs - opengl, gles1 gles2

没有链接到libdrm.这是因为libgalpi运行时不应该被禁用configure

相关内容