簡體   English   中英

在 Mac OS 10.16 (Big Sur) 中通過 homebrew 構建 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]: *** No rule to make target /usr/lib/libz.dylib', needed by `lib/libzip.5.3.dylib'. Stop. make[2]: *** No rule to make target /usr/lib/libz.dylib', needed by `lib/libzip.5.3.dylib'. Stop. ,但我有/usr/lib/libz.dylib作為軟鏈接,缺少真正的庫(libz.1.dylib)。

那么我該如何解決這個問題呢?

  1. output 從brew reinstall 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.

  1. 我的 /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

  1. 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)

感謝Stefano Mtangoo 的評論和回答,我通過手動將 cmake arguments 添加到公式文件來解決此問題。

  1. 從 homebrew 安裝 libzip 的依賴項。
brew install zlib bzip2
  1. 將自制程序庫添加到 CMake 定義中。

brew edit 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是我的自制前綴。)

  1. 重新安裝 libzip。
brew reinstall --verbose libzip

筆記:

您可以使用brew reinstall --verbose libzip --interactive來防止刪除工作目錄並檢查源代碼。

然后使用grep找到損壞的 cmake 定義並重新運行 *cmake... * 以測試設置。

我試過 set PATH / LD_LIBRARY_PATH ,但它不起作用。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM