首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在MacOS10.16中用自制软件构建libzip时找不到libz.dylib (Big )

在MacOS10.16中用自制软件构建libzip时找不到libz.dylib (Big )
EN

Stack Overflow用户
提问于 2020-07-03 16:00:57
回答 1查看 4K关注 0票数 2

当通过自制(MacOS10.16)构建libzip时,它会抱怨make[2]: *** No rule to make target /usr/lib/libz.dylib', needed by `lib/libzip.5.3.dylib'. Stop.,但是我将/usr/ lib /libz.dylib作为一个软链接,缺少真正的lib (libz.1.dylib)。

那我怎么解决这个问题呢?

brew reinstall libzip

  1. 输出

代码语言:javascript
复制
==> 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. 在my /usr/lib

中只有到libz.1.dylib的软链接

代码语言:javascript
复制
~$ 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不见了,

代码语言:javascript
复制
~$ 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)
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-07-05 10:53:53

感谢Stefano Mtangoo的评论和answer,我通过手动向fomula文件添加cmake参数来修复这个问题。

安装libzip的依赖项

代码语言:javascript
复制
brew install zlib bzip2

  1. 将自制库添加到CMake定义中.

brew edit libzip.rb

将L22改为

代码语言:javascript
复制
    system "cmake", ".", *std_cmake_args

代码语言:javascript
复制
    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.

代码语言:javascript
复制
brew reinstall --verbose libzip

注:

您可以使用brew reinstall --verbose libzip --interactive防止删除工作目录并检查源。

然后使用grep查找损坏的cmake定义,并重新运行*cmake .*来测试设置。

我尝试过set PATH/LD_LIBRARY_PATH,但它不起作用。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62719000

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档