在 MacOS 上使用共享库 dylib 构建和安装 BZip2

时间:2021-04-20 13:19:09

标签: macos makefile bzip2

'试图在 MacOS (10.13.4 - High Sierra) 上构建/安装 BZip2,但我能找到的所有说明 [包括来自 README] 的说明都在以下位置:

wget -c https://sourceware.org/pub/bzip2/bzip2-1.0.8.tar.gz
tar -zxf bzip2-1.0.8.tar.gz
cd bzip2-1.0.8
sudo make install PREFIX=/usr/local

这会在 .dylib 目录中安装没有带有 ./lib 扩展名的共享库文件的包。包中包含的说明适用于 Linux 环境。

如何安装共享库?

1 个答案:

答案 0 :(得分:0)

事实证明,这样做需要更新 Makefile。

软件包 [bzip2 v1.0.8] 附带一个 Makefile-libbz2_so 文件,用于为 Linux 创建共享库文件。要为 MacOS 做同样的事情,需要一个单独的 Makefile。

以下是有效的更新说明。点击 Makefile-libbz2_dylib 的链接了解 Makefile 的内容。

# Download BZip2
wget -c https://sourceware.org/pub/bzip2/bzip2-1.0.8.tar.gz

# Extract and enter directory
tar -zxf bzip2-1.0.8.tar.gz
cd bzip2-1.0.8

# create variable
export PREFIX="/usr/local"

# install - change PREFIX is required
sudo make install PREFIX=$PREFIX

# Make dynamic libraries for MACOS
wget -c https://gist.githubusercontent.com/obihill/3278c17bcee41c0c8b59a41ada8c0d35/raw/3bf890e2ad40d0af358e153395c228326f0b44d5/Makefile-libbz2_dylib
make -f Makefile-libbz2_dylib

# Do below only if your PREFIX is not /usr/local
# Create symlinks for bin
sudo ln -s $PREFIX/bin/bunzip2 /usr/local/bin/
sudo ln -s $PREFIX/bin/bzcat /usr/local/bin/
sudo ln -s $PREFIX/bin/bzcmp /usr/local/bin/
sudo ln -s $PREFIX/bin/bzdiff /usr/local/bin/
sudo ln -s $PREFIX/bin/bzegrep /usr/local/bin/
sudo ln -s $PREFIX/bin/bzfgrep /usr/local/bin/
sudo ln -s $PREFIX/bin/bzgrep /usr/local/bin/
sudo ln -s $PREFIX/bin/bzip2 /usr/local/bin/
sudo ln -s $PREFIX/bin/bzip2recover /usr/local/bin/
sudo ln -s $PREFIX/bin/bzless /usr/local/bin/
sudo ln -s $PREFIX/bin/bzmore /usr/local/bin/

# Create symlinks for lib
sudo ln -s $PREFIX/lib/libbz2.a /usr/local/lib/
sudo ln -s $PREFIX/lib/libbz2.dylib /usr/local/lib/

# Create symlinks for include
sudo ln -s $PREFIX/include/bzlib.h /usr/local/include/

如果您的 Mac 上没有 wget,您可以在此 community post 上找到设置说明。

来自 herehere 的 Makefile 灵感。