在Mac OS 10.16(Big Sur)中通过自制程序构建libzip时找不到libz.dylib [英] Can not find libz.dylib when build libzip by homebrew in Mac OS 10.16 (Big Sur)
问题描述
在通过自制软件(Mac OS 10.16)构建libzip时,它会抱怨 make [2]:***没有规则可以使目标文件/usr/lib/libz.dylib'被lib/libzip.5.3所需要..dylib".停止.
,但是我有/usr/lib/libz.dylib 作为软链接,缺少真正的lib(libz.1.dylib).
When building libzip by homebrew (Mac OS 10.16), it complains make[2]: *** No rule to make target /usr/lib/libz.dylib', needed by `lib/libzip.5.3.dylib'. Stop.
, but I have /usr/lib/libz.dylib as a soft link, the real lib (libz.1.dylib) is missing.
那我该如何解决呢?
-
brew重新安装libzip
的输出
==> Installing php dependency: libzip
==> cmake .
==> make install
cd /tmp/libzip-20200703-7227-so8a0v/libzip-1.7.1/lib && /usr/local/homebrew/Library/Homebrew/shims/mac/super/clang -DHAVE_CONFIG_H -Dzip_EXPORTS -I/tmp/libzip-20200703-7227-so8a0v/libzip-1.7.1 -I/tmp/libzip-20200703-7227-so8a0v/libzip-1.7.1/lib -DNDEBUG -isysroot /Library/Developer/CommandLineTools/SDKs/MacOSX10.16.sdk -fPIC -fvisibility=hidden -o CMakeFiles/zip.dir/zip_winzip_aes.c.o -c /tmp/libzip-20200703-7227-so8a0v/libzip-1.7.1/lib/zip_winzip_aes.c
[ 85%] Building C object lib/CMakeFiles/zip.dir/zip_source_winzip_aes_decode.c.o
cd /tmp/libzip-20200703-7227-so8a0v/libzip-1.7.1/lib && /usr/local/homebrew/Library/Homebrew/shims/mac/super/clang -DHAVE_CONFIG_H -Dzip_EXPORTS -I/tmp/libzip-20200703-7227-so8a0v/libzip-1.7.1 -I/tmp/libzip-20200703-7227-so8a0v/libzip-1.7.1/lib -DNDEBUG -isysroot /Library/Developer/CommandLineTools/SDKs/MacOSX10.16.sdk -fPIC -fvisibility=hidden -o CMakeFiles/zip.dir/zip_source_winzip_aes_decode.c.o -c /tmp/libzip-20200703-7227-so8a0v/libzip-1.7.1/lib/zip_source_winzip_aes_decode.c
[ 87%] Building C object lib/CMakeFiles/zip.dir/zip_source_winzip_aes_encode.c.o
cd /tmp/libzip-20200703-7227-so8a0v/libzip-1.7.1/lib && /usr/local/homebrew/Library/Homebrew/shims/mac/super/clang -DHAVE_CONFIG_H -Dzip_EXPORTS -I/tmp/libzip-20200703-7227-so8a0v/libzip-1.7.1 -I/tmp/libzip-20200703-7227-so8a0v/libzip-1.7.1/lib -DNDEBUG -isysroot /Library/Developer/CommandLineTools/SDKs/MacOSX10.16.sdk -fPIC -fvisibility=hidden -o CMakeFiles/zip.dir/zip_source_winzip_aes_encode.c.o -c /tmp/libzip-20200703-7227-so8a0v/libzip-1.7.1/lib/zip_source_winzip_aes_encode.c
[ 87%] Building C object lib/CMakeFiles/zip.dir/zip_mkstempm.c.o
cd /tmp/libzip-20200703-7227-so8a0v/libzip-1.7.1/lib && /usr/local/homebrew/Library/Homebrew/shims/mac/super/clang -DHAVE_CONFIG_H -Dzip_EXPORTS -I/tmp/libzip-20200703-7227-so8a0v/libzip-1.7.1 -I/tmp/libzip-20200703-7227-so8a0v/libzip-1.7.1/lib -DNDEBUG -isysroot /Library/Developer/CommandLineTools/SDKs/MacOSX10.16.sdk -fPIC -fvisibility=hidden -o CMakeFiles/zip.dir/zip_mkstempm.c.o -c /tmp/libzip-20200703-7227-so8a0v/libzip-1.7.1/lib/zip_mkstempm.c
[ 87%] Building C object lib/CMakeFiles/zip.dir/zip_source_file_stdio_named.c.o
cd /tmp/libzip-20200703-7227-so8a0v/libzip-1.7.1/lib && /usr/local/homebrew/Library/Homebrew/shims/mac/super/clang -DHAVE_CONFIG_H -Dzip_EXPORTS -I/tmp/libzip-20200703-7227-so8a0v/libzip-1.7.1 -I/tmp/libzip-20200703-7227-so8a0v/libzip-1.7.1/lib -DNDEBUG -isysroot /Library/Developer/CommandLineTools/SDKs/MacOSX10.16.sdk -fPIC -fvisibility=hidden -o CMakeFiles/zip.dir/zip_source_file_stdio_named.c.o -c /tmp/libzip-20200703-7227-so8a0v/libzip-1.7.1/lib/zip_source_file_stdio_named.c
make[2]: *** No rule to make target `/usr/lib/libz.dylib', needed by `lib/libzip.5.3.dylib'. Stop.
- 在我的/usr/lib 中只有到
libz.1.dylib
的软链接
~$ ls -l /usr/lib/libz.*
lrwxr-xr-x 1 root wheel 12 Jan 1 2020 /usr/lib/libz.1.1.3.dylib -> libz.1.dylib lrwxr-xr-x 1 root wheel 12 Jan 1 2020 /usr/lib/libz.1.2.11.dylib -> libz.1.dylib
lrwxr-xr-x 1 root wheel 12 Jan 1 2020 /usr/lib/libz.1.2.5.dylib -> libz.1.dylib
lrwxr-xr-x 1 root wheel 12 Jan 1 2020 /usr/lib/libz.1.2.8.dylib -> libz.1.dylib
lrwxr-xr-x 1 root wheel 12 Jan 1 2020 /usr/lib/libz.dylib -> libz.1.dylib
-
libz.1.dylib
丢失.
~$ sudo find / -name "libz.1.dylib"
/usr/local/homebrew/Cellar/zlib/1.2.11/lib/libz.1.dylib
/System/Volumes/Data/usr/local/homebrew/Cellar/zlib/1.2.11/lib/libz.1.dylib
...
(lib.1.dylib from CoreSimulator)
推荐答案
Thanks to Stefano Mtangoo's comment and answer, I fixed this by manually add cmake arguments to the fomula file.
- 从自制软件安装libzip的依赖项.
brew install zlib bzip2
- 将自制程序库添加到CMake定义.
brew编辑libzip.rb
将L22更改为
system "cmake", ".", *std_cmake_args
到
system "cmake", ".", *std_cmake_args, "-DZLIB_LIBRARY_RELEASE=/usr/local/homebrew/opt/zlib/lib/libz.dylib","-DBZIP2_LIBRARY_RELEASE=/usr/local/homebrew/opt/bzip2/lib/libbz2.a"
(/usr/local/homebrew 是我的自制前缀.)
- 重新安装libzip.
brew reinstall --verbose libzip
注释:
您可以使用 brew reinstall --verbose libzip --interactive
来防止删除工作目录并检查源代码.
You can use brew reinstall --verbose libzip --interactive
to prevent the deletion of working directory and inspect the source.
然后使用 grep 查找损坏的cmake定义,然后重新运行* cmake ... *以测试设置.
Then use grep to find the broken cmake definitions and rerun *cmake ... * to test the settings.
我尝试设置 PATH / LD_LIBRARY_PATH ,但是它不起作用.
I have tried set PATH/LD_LIBRARY_PATH, but it not works.
这篇关于在Mac OS 10.16(Big Sur)中通过自制程序构建libzip时找不到libz.dylib的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!