crc32() missing when building libzip on OSX 10.9

5k views Asked by At

I've downloaded the latest release of libzip and am currently trying to build it on OSX and failing:

Linking C shared library libzip.dylib
Undefined symbols for architecture x86_64:
  "_crc32", referenced from:
      __zip_filerange_crc in zip_filerange_crc.o
      _crc_read in zip_source_crc.o
      _decrypt in zip_source_pkware.o
      __zip_string_crc32 in zip_string.o
     (maybe you meant: __zip_string_crc32)
  "_deflate", referenced from:
      _compress_read in zip_source_deflate.o
     (maybe you meant: _zip_source_deflate)
  "_deflateEnd", referenced from:
      _deflate_compress in zip_source_deflate.o
  "_deflateInit2_", referenced from:
      _deflate_compress in zip_source_deflate.o
  "_inflate", referenced from:
      _decompress_read in zip_source_deflate.o
  "_inflateEnd", referenced from:
      _deflate_decompress in zip_source_deflate.o
  "_inflateInit2_", referenced from:
      _deflate_decompress in zip_source_deflate.o
  "_zError", referenced from:
      __zip_error_strerror in zip_error_strerror.o
      _zip_error_to_str in zip_error_to_str.o
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
make[3]: *** [libzip.3.0.dylib] Error 1
make[2]: *** [CMakeFiles/zip.dir/all] Error 2
make[1]: *** [CMakeFiles/zip.dir/rule] Error 2
make: *** [zip] Error 2

It needs a crc32 function but it doesn't include one nor does it seem to link to anything else. Has anyone been able to build libzip on OSX 10.9?

2

There are 2 answers

2
alk On BEST ANSWER

You seem to be missing to link a against libz.

Get the developer files for zlib somewhere and add -lz to the (end of the command line of the) link command.

0
Reece On

I was going to do this & thought that libz is probably already available under the default list of OS X frameworks and libraries.. Turns out it is. I didn't have to download anything; just went to XCode -> My Target -> General -> Frameworks, Libraries & Ebedded; then just click + to add another framework / library; filter the list by 'libz' & voila. Then take the file that's added in the left hand file explorer pane; click on it & make sure it's also linked to your target.