安装在/usr/local/lib 中的静态库-lzita-resampler 在使用gcc 时找不到

问题描述 投票:0回答:0

我正在尝试从我的 Mac 上的源代码安装一个名为 audiowmark (link) 的二进制文件。说明说运行 ./configure 但是当我这样做时,我遇到了一个错误,声称:

checking for _Z28zita_resampler_major_versionv in -lzita-resampler... no
configure: error: You need to install libzita-resampler to build this package.

因此,我需要安装 libzita-resampler 库。作为 C/CMake/Make 的新手,这让我有些困惑。我认为我正在正确安装这个包(我在我的 libzita-resampler.a 中看到了 usr/local/lib),但我仍然收到上述错误。有人可以帮助指导我正确的方向以确保我安装正确吗?根据我的理解,/usr/local/lib 是在运行 gcc.

时检查库的默认路径

要安装 libzita-resampler,我找到了 GitHub 存储库(链接)并将源代码加载到我的计算机上。

我首先在这个库中创建了一个 build 目录,然后 cd-ed 进入了它:

mkdir build && cd build

安装了cmake后,我就可以运行了

cmake ..

为我的电脑创建了 Makefile,然后我用 Make 运行了以下命令

make

输出如下

jordan@Jordans-MBP-3 build % make
[ 20%] Building CXX object CMakeFiles/zita-resampler.dir/source/resampler.cc.o
[ 40%] Building CXX object CMakeFiles/zita-resampler.dir/source/vresampler.cc.o
[ 60%] Building CXX object CMakeFiles/zita-resampler.dir/source/resampler-table.cc.o
[ 80%] Building CXX object CMakeFiles/zita-resampler.dir/source/cresampler.cc.o
[100%] Linking CXX static library libzita-resampler.a
[100%] Built target zita-resampler

因此运行安装步骤

make install

哪个输出

jordan@Jordans-MBP-3 build % make install
[100%] Built target zita-resampler
Install the project...
-- Install configuration: ""
-- Installing: /usr/local/lib/libzita-resampler.a
-- Installing: /usr/local/lib/cmake/zita-resampler/zita-resamplerConfig.cmake
-- Installing: /usr/local/lib/cmake/zita-resampler/zita-resamplerConfigVersion.cmake
-- Installing: /usr/local/lib/cmake/zita-resampler/zita-resamplerTargets.cmake
-- Installing: /usr/local/lib/cmake/zita-resampler/zita-resamplerTargets-noconfig.cmake

成功将静态库 .a 添加到我的 lib 目录中。

所以有了这个设置,我假设我可以再次运行 audiowmark./configure 命令,但我仍然收到相同的错误,表明我没有正确安装这个库。是否有最后一步可以让 ./configure 步骤“找到”我安装的这个我错过的新库?

这是在./configure脚本中查找库的相关代码。我看到它正在添加 LIBS= -lzita-resampler 所以它现在应该在我的目录路径中找到它......对吗?

    { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for _Z28zita_resampler_major_versionv in -lzita-resampler" >&5
printf %s "checking for _Z28zita_resampler_major_versionv in -lzita-resampler... " >&6; }
if test ${ac_cv_lib_zita_resampler__Z28zita_resampler_major_versionv+y}
then :
  printf %s "(cached) " >&6
else $as_nop
  ac_check_lib_save_LIBS=$LIBS
LIBS="-lzita-resampler  $LIBS"
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h.  */

/* Override any GCC internal prototype to avoid an error.
   Use char because int might match the return type of a GCC
   builtin and then its argument prototype would still apply.  */
char _Z28zita_resampler_major_versionv ();
int
main (void)
{
return _Z28zita_resampler_major_versionv ();
  ;
  return 0;
}
_ACEOF
if ac_fn_c_try_link "$LINENO"
then :
  ac_cv_lib_zita_resampler__Z28zita_resampler_major_versionv=yes
else $as_nop
  ac_cv_lib_zita_resampler__Z28zita_resampler_major_versionv=no
fi
rm -f core conftest.err conftest.$ac_objext conftest.beam \
    conftest$ac_exeext conftest.$ac_ext
LIBS=$ac_check_lib_save_LIBS
fi
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_zita_resampler__Z28zita_resampler_major_versionv" >&5
printf "%s\n" "$ac_cv_lib_zita_resampler__Z28zita_resampler_major_versionv" >&6; }
if test "x$ac_cv_lib_zita_resampler__Z28zita_resampler_major_versionv" = xyes
then :
  printf "%s\n" "#define HAVE_LIBZITA_RESAMPLER 1" >>confdefs.h

  LIBS="-lzita-resampler $LIBS"

else $as_nop

        as_fn_error $? "You need to install libzita-resampler to build this package." "$LINENO" 5


fi

感谢您的指导,我在这里学习。

c gcc cmake makefile
© www.soinside.com 2019 - 2024. All rights reserved.