Создайте bsdtar, который использует пользовательскую библиотеку liblzma.dylib - PullRequest
0 голосов
/ 26 апреля 2018

Возможно, это очень очевидная вещь, но я застрял при попытке создать bsdtar , который использует пользовательскую версию сборки liblzma.dylib , поэтому я могу поделиться и двоичный файл bsdtar, и библиотека liblzma.dylib вместе.

Спасибо Комментарий Цыварева , я создаю bsdtar с кастомным 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 папку с остальными заголовками.

Кто-нибудь знает, как это сделать правильно? Заранее спасибо.

Просто спросил здесь: https://github.com/libarchive/libarchive/issues/1014

1 Ответ

0 голосов
/ 18 мая 2018

Наконец-то он выполнил компиляцию с install_name_tool ( man ):

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