构建使用自定义 liblzma.dylib 库的 bsdtar
Build bsdtar that uses custom liblzma.dylib library
可能是一件很明显的事情,但我一直在尝试构建一个使用 [=52 的自定义构建版本的 bsdtar =],所以我可以一起共享 bsdtar 二进制文件和 liblzma.dylib 库。
感谢 ,我正在使用自定义的 dylib 构建 bsdtar,只需调用:
cmake -DCMAKE_PREFIX_PATH=customlib
不再需要使用 FIND_PACKAGE(liblzma HINTS customlib customlib/include)
或类似的。在 cmake 过程中,输出如下所示:
-- Looking for lzma_auto_decoder in /libarchive-3.3.2/customlib/liblzma.dylib
-- Looking for lzma_auto_decoder in /libarchive-3.3.2/customlib/liblzma.dylib - found
-- Looking for lzma_easy_encoder in /libarchive-3.3.2/customlib/liblzma.dylib
-- Looking for lzma_easy_encoder in /libarchive-3.3.2/customlib/liblzma.dylib - found
-- Looking for lzma_lzma_preset in /libarchive-3.3.2/customlib/liblzma.dylib
-- Looking for lzma_lzma_preset in /libarchive-3.3.2/customlib/liblzma.dylib - found
-- Found LibLZMA: /libarchive-3.3.2/customlib/include (found version "5.2.3")
无论如何,bsdtar 的最终构建仍然寻找系统 dylib,而不是自定义的:
aone$ otool -L libarchive-3.3.2/bin/bsdtar
libarchive-3.3.2/bin/bsdtar:
/usr/lib/libz.1.dylib (compatibility version 1.0.0, current version 1.2.5)
/usr/lib/libbz2.1.0.dylib (compatibility version 1.0.0, current version 1.0.5)
/usr/local/lib/liblzma.5.dylib (compatibility version 8.0.0, current version 8.3.0)
...
文件夹 customlib 包含 liblzma.5.dylib,它的别名是 liblzma.dylib 和 liblzma.a。文件夹 customlib/import 包含 lzma.h 和 lzma 文件夹以及其余文件夹headers.
任何人都知道如何正确地做到这一点?提前致谢。
终于做到了 post 编译 install_name_tool (man):
install_name_tool -change "/usr/local/lib/liblzma.5.dylib" "customlib/liblzma.dylib" bsdtar
可能是一件很明显的事情,但我一直在尝试构建一个使用 [=52 的自定义构建版本的 bsdtar =],所以我可以一起共享 bsdtar 二进制文件和 liblzma.dylib 库。
感谢
cmake -DCMAKE_PREFIX_PATH=customlib
不再需要使用 FIND_PACKAGE(liblzma HINTS customlib customlib/include)
或类似的。在 cmake 过程中,输出如下所示:
-- Looking for lzma_auto_decoder in /libarchive-3.3.2/customlib/liblzma.dylib
-- Looking for lzma_auto_decoder in /libarchive-3.3.2/customlib/liblzma.dylib - found
-- Looking for lzma_easy_encoder in /libarchive-3.3.2/customlib/liblzma.dylib
-- Looking for lzma_easy_encoder in /libarchive-3.3.2/customlib/liblzma.dylib - found
-- Looking for lzma_lzma_preset in /libarchive-3.3.2/customlib/liblzma.dylib
-- Looking for lzma_lzma_preset in /libarchive-3.3.2/customlib/liblzma.dylib - found
-- Found LibLZMA: /libarchive-3.3.2/customlib/include (found version "5.2.3")
无论如何,bsdtar 的最终构建仍然寻找系统 dylib,而不是自定义的:
aone$ otool -L libarchive-3.3.2/bin/bsdtar
libarchive-3.3.2/bin/bsdtar:
/usr/lib/libz.1.dylib (compatibility version 1.0.0, current version 1.2.5)
/usr/lib/libbz2.1.0.dylib (compatibility version 1.0.0, current version 1.0.5)
/usr/local/lib/liblzma.5.dylib (compatibility version 8.0.0, current version 8.3.0)
...
文件夹 customlib 包含 liblzma.5.dylib,它的别名是 liblzma.dylib 和 liblzma.a。文件夹 customlib/import 包含 lzma.h 和 lzma 文件夹以及其余文件夹headers.
任何人都知道如何正确地做到这一点?提前致谢。
终于做到了 post 编译 install_name_tool (man):
install_name_tool -change "/usr/local/lib/liblzma.5.dylib" "customlib/liblzma.dylib" bsdtar