【问题标题】:Build bsdtar that uses custom liblzma.dylib library构建使用自定义 liblzma.dylib 库的 bsdtar
【发布时间】:2018-04-26 08:45:14
【问题描述】:

可能是一件很明显的事情,但我坚持尝试构建一个使用自定义构建版本 liblzma.dylibbsdtar,所以我可以同时共享 bsdtar 二进制文件和 liblzma.dylib 库。

感谢Tsyvarev comment,我正在使用自定义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.dylibliblzma.a . customlib/import 文件夹包含 lzma.hlzma 文件夹以及其余标题。

任何人都知道如何正确地做到这一点?提前致谢。

刚刚在这里问过:https://github.com/libarchive/libarchive/issues/1014

【问题讨论】:

  • 如果您想提示find_package() 命令安装您的软件包,请使用CMAKE_PREFIX_PATH 变量,如this answer 中所述。添加提示后不要忘记清除 CMake 缓存。
  • 这很棒!不再需要提示了。我要编辑我的问题,因为最终产品仍在寻找系统 dylib。
  • 对我来说看起来像 RPATH 问题:路径 /usr/local/lib/ 包含在 LD_LIBRARY_PATH 变量中(或其在 MacOS 上的类似物),因此动态加载程序在 @ 下找到 liblzma.5.dylib 文件987654332@ 在/libarchive-3.3.2/customlib/ 之前。我不知道如何正确处理。
  • 做了一些测试导出LD_LIBRARY_PATHDYLD_LIBRARY_PATH 没有运气:(

标签: makefile cmake dylib bsdtar


【解决方案1】:

终于用 install_name_tool (man) 编译后发布:

install_name_tool -change "/usr/local/lib/liblzma.5.dylib" "customlib/liblzma.dylib" bsdtar 

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-02-24
    • 1970-01-01
    • 2014-05-28
    • 1970-01-01
    • 2011-03-27
    • 1970-01-01
    • 2023-01-17
    • 2012-01-21
    相关资源
    最近更新 更多