Skip to content

MacOs linker problem  #3

@Czaki

Description

@Czaki

During building the macOS extension I found that libtiff and libblosc are "linked" (not sure if proper name) system site libraries libzstd and liblz4, which are built earlier and properly find by cmake.

-- Found LZ4 library: /Users/runner/work/1/s/build_utils/libs_build/lib/liblz4.dylib
-- Found Zstd library: /Users/runner/work/1/s/build_utils/libs_build/lib/libzstd.dylib

Here log:
https://dev.azure.com/bokota/imagecodecs/_build/results?buildId=638&view=logs&j=567a25c9-267d-5ec8-0386-2960989da2e4&t=f2935ac5-f96c-5e27-6bc4-6f14b3e80853&l=3463

It could be fixed using

install_name_tool -change /usr/local/lib/libzstd.1.dylib @rpath/libzstd.1.5.0.dylib "${lib_dir}/libtiff.5.7.0.dylib"
install_name_tool -change /usr/local/lib/libzstd.1.dylib @rpath/libzstd.1.5.0.dylib "${lib_dir}/libblosc.1.21.0.dylib"
install_name_tool -change /usr/local/lib/liblz4.1.dylib @rpath/liblz4.1.9.3.dylib "${lib_dir}/libblosc.1.21.0.dylib"

but I would like to understand why after compilation I got (oas part of otool -l build_utils/libs_build/lib/libtiff.5.7.0.dylib)

          cmd LC_LOAD_DYLIB
      cmdsize 40
         name liblerc.dylib (offset 24)
   time stamp 2 Thu Jan  1 00:00:02 1970
      current version 0.0.0
compatibility version 0.0.0
Load command 14
          cmd LC_LOAD_DYLIB
      cmdsize 56
         name /usr/local/lib/libzstd.1.dylib (offset 24)
   time stamp 2 Thu Jan  1 00:00:02 1970
      current version 1.5.0
compatibility version 1.0.0
Load command 15

even if build_utils/libs_build/lib/ contains both libzstd.1.dylib and liblerc.dylib

Environment variables are set inside azure-pipelines.yaml

LD_LIBRARY_PATH: $(Build.Repository.LocalPath)/build_utils/libs_build/lib

LIBRARY_PATH: $(LD_LIBRARY_PATH)
DYLD_LIBRARY_PATH: $(LD_LIBRARY_PATH)
LD_RUNPATH_SEARCH_PATH: $(LD_LIBRARY_PATH)
DYLD_FALLBACK_LIBRARY_PATH: $(LD_LIBRARY_PATH)
MACOSX_DEPLOYMENT_TARGET: "10.9"

Build command is here:

echo "Build libtiff"
cd "${download_dir}/libtiff" || exit 1
mkdir -p _build
cd _build || exit 1
CMAKE_PREFIX_PATH=${build_dir} cmake -DCMAKE_INSTALL_PREFIX="${build_dir}" ..
make
make install

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions