我正在尝试在 MacOS Monterey 上构建 libcamera,因为它是 raspberrypi/libcamera-apps 所需的依赖项。
meson build
,如here所述,遇到错误src/libcamera/meson.build:68:0: ERROR: C shared or static library 'gnutls' not found
。
为了解决这个问题,我通过自制程序安装了 gnutls。由于这没有帮助,我还尝试通过 MacPorts 安装 gnutls-devel。这也没有帮助。
执行
pkg-config --list-all | grep gnutls
返回
gnutls GnuTLS - Transport Security Layer implementation for the GNU system
。
有谁知道如何解决吗?我还想了解在 MacOS 下进行 Linux 开发时管理类似依赖项的首选方法是什么。
谢谢!
为了解决上述问题,我已经找到了 MacBook 上 gnutls 的位置。下一步,我通过执行
LIBRARY_PATH
将环境变量 export LIBRARY_PATH=/opt/local/lib
设置到此位置。
如果介子找不到软件包并且您已经安装了它,您可能只需要链接它即可。
以下是大多数此类库的一般步骤:
第 1 步:请勿尝试通过
ls
或 cd
手动查找库(除非您是新用户并且想要探索根目录)。
第 2 步:使用
find
命令查找匹配的 .dylib
文件。
find / -name "*[library name]*.dylib" 2> /dev/null
# Since we are looking for the gnutls library:
find / -name "*gnutls*.dylib" 2> /dev/null
输出:
/usr/local/Caskroom/miniconda/base/lib/python3.11/site-packages/cv2/.dylibs/libgnutls.30.dylib
/usr/local/Caskroom/miniconda/base/envs/metagpt/lib/python3.10/site-packages/cv2/.dylibs/libgnutls.30.dylib
/usr/local/lib/libgnutls.30.dylib
/usr/local/lib/libgnutlsxx.dylib
/usr/local/lib/libgnutls.dylib
/usr/local/lib/python3.10/site-packages/cv2/.dylibs/libgnutls.30.dylib
/usr/local/lib/libgnutls-dane.dylib
/usr/local/lib/libgnutlsxx.30.dylib
/usr/local/lib/libgnutls-dane.0.dylib
/usr/local/Cellar/gnutls/3.8.4/lib/libgnutls.30.dylib
/usr/local/Cellar/gnutls/3.8.4/lib/libgnutlsxx.dylib
/usr/local/Cellar/gnutls/3.8.4/lib/libgnutls.dylib
/usr/local/Cellar/gnutls/3.8.4/lib/libgnutls-dane.dylib
/usr/local/Cellar/gnutls/3.8.4/lib/libgnutlsxx.30.dylib
/usr/local/Cellar/gnutls/3.8.4/lib/libgnutls-dane.0.dylib
...
/
告诉find搜索整个根目录,这需要很长时间。如果您使用 gnutls
安装了 brew install gnutls
,则难以捉摸的 .dylib
应位于 /usr/local
(Intel Mac) 或 /opt/local
(Apple Silicon) 下。因此,只需单独运行这些命令即可:
find /usr/local -name "*gnutls*.dylib" 2> /dev/null
find /opt/local -name "*gnutls*.dylib" 2> /dev/null
第3步:正如OP在他的回答中提到的:将包含(在我的例子中)
libgnutls.30.dylib
的目录添加到您的LIBRARY_PATH
中,如下所示:
export LIBRARY_PATH=$LIBRARY_PATH:/usr/local
# -------------
# Very Important!
应添加
$LIBRARY_PATH:
,以防 LIBRARY_PATH
环境变量已存在。添加它会将我们的新路径附加到列表中,而不是完全覆盖它。