mfontanini / cppkafka

Modern C++ Apache Kafka client library (wrapper for librdkafka)
BSD 2-Clause "Simplified" License
589 stars 207 forks source link

How to resolve link error for installation in mac #224

Closed seongpyoHong closed 4 years ago

seongpyoHong commented 4 years ago

I already install librdkafka, boost library in mac. and mkdir build , cd build , cmake .. are done. The below one is when cmake ..is typed.

-- The CXX compiler identification is AppleClang 10.0.1.10010046
-- Check for working C compiler: /Library/Developer/CommandLineTools/usr/bin/cc
-- Check for working C compiler: /Library/Developer/CommandLineTools/usr/bin/cc -- works
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Detecting C compile features
-- Detecting C compile features - done
-- Check for working CXX compiler: /Library/Developer/CommandLineTools/usr/bin/c++
-- Check for working CXX compiler: /Library/Developer/CommandLineTools/usr/bin/c++ -- works
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Detecting CXX compile features
-- Detecting CXX compile features - done
-- Build will generate a shared library. Use CPPKAFKA_BUILD_SHARED=0 to perform a static build
CMake Warning at /usr/local/lib/cmake/boost_program_options-1.71.0/libboost_program_options-variant-shared.cmake:59 (message):
  Target Boost::program_options already has an imported location
  '/usr/local/lib/libboost_program_options-mt.dylib', which will be
  overwritten with '/usr/local/lib/libboost_program_options.dylib'
Call Stack (most recent call first):
  /usr/local/lib/cmake/boost_program_options-1.71.0/boost_program_options-config.cmake:43 (include)
  /usr/local/lib/cmake/Boost-1.71.0/BoostConfig.cmake:117 (find_package)
  /usr/local/lib/cmake/Boost-1.71.0/BoostConfig.cmake:182 (boost_find_component)
  /usr/local/Cellar/cmake/3.15.2/share/cmake/Modules/FindBoost.cmake:422 (find_package)
  CMakeLists.txt:109 (find_package)

-- RdKafkaConfig.cmake not found. Attempting to find module instead...
-- Found RDKAFKA: librdkafka.dylib
-- Found valid rdkafka version
-- RdKafka module found.
-- Disabling tests because submodule Catch2 isn't checked out
-- Configuring done
-- Generating done

After that, I try to type make command. But error is occured. The below one is when make is typed.

[  4%] Building CXX object src/CMakeFiles/cppkafka.dir/configuration.cpp.o
[  8%] Building CXX object src/CMakeFiles/cppkafka.dir/topic_configuration.cpp.o
[ 12%] Building CXX object src/CMakeFiles/cppkafka.dir/configuration_option.cpp.o
[ 16%] Building CXX object src/CMakeFiles/cppkafka.dir/exceptions.cpp.o
[ 20%] Building CXX object src/CMakeFiles/cppkafka.dir/topic.cpp.o
[ 25%] Building CXX object src/CMakeFiles/cppkafka.dir/buffer.cpp.o
[ 29%] Building CXX object src/CMakeFiles/cppkafka.dir/queue.cpp.o
[ 33%] Building CXX object src/CMakeFiles/cppkafka.dir/message.cpp.o
[ 37%] Building CXX object src/CMakeFiles/cppkafka.dir/message_timestamp.cpp.o
[ 41%] Building CXX object src/CMakeFiles/cppkafka.dir/message_internal.cpp.o
[ 45%] Building CXX object src/CMakeFiles/cppkafka.dir/topic_partition.cpp.o
[ 50%] Building CXX object src/CMakeFiles/cppkafka.dir/topic_partition_list.cpp.o
[ 54%] Building CXX object src/CMakeFiles/cppkafka.dir/metadata.cpp.o
[ 58%] Building CXX object src/CMakeFiles/cppkafka.dir/group_information.cpp.o
[ 62%] Building CXX object src/CMakeFiles/cppkafka.dir/error.cpp.o
[ 66%] Building CXX object src/CMakeFiles/cppkafka.dir/event.cpp.o
[ 70%] Building CXX object src/CMakeFiles/cppkafka.dir/kafka_handle_base.cpp.o
[ 75%] Building CXX object src/CMakeFiles/cppkafka.dir/producer.cpp.o
[ 79%] Building CXX object src/CMakeFiles/cppkafka.dir/consumer.cpp.o
[ 83%] Building CXX object src/CMakeFiles/cppkafka.dir/utils/backoff_performer.cpp.o
[ 87%] Building CXX object src/CMakeFiles/cppkafka.dir/utils/backoff_committer.cpp.o
[ 91%] Building CXX object src/CMakeFiles/cppkafka.dir/utils/poll_strategy_base.cpp.o
[ 95%] Building CXX object src/CMakeFiles/cppkafka.dir/utils/roundrobin_poll_strategy.cpp.o
[100%] Linking CXX shared library lib/libcppkafka.dylib
ld: library not found for -lrt
clang: error: linker command failed with exit code 1 (use -v to see invocation)
make[2]: *** [src/lib/libcppkafka.0.3.1.dylib] Error 1
make[1]: *** [src/CMakeFiles/cppkafka.dir/all] Error 2
make: *** [all] Error 2

I've tried to fix it and found the answer that removing lrt in CMakeLists.txt. But, in mine, the lrt doesn't exist.

How to resolve the link error?

lxy5513 commented 4 years ago

I met the problem also.
@seongpyoHong Have you fixed the problem?

seongpyoHong commented 4 years ago

I didn't solve this problem. And when I try to use the cppkafka in docker container with linux, It works well. I think this problem caused by Mac OS policy. @lxy5513

lxy5513 commented 4 years ago

thank you I used cmake -DCPPKAFKA_BUILD_SHARED=0 .. can fix the error temporarily.

or after cmake .., then find link.txt, delete -lrt

edin-m commented 4 years ago

Pull request #227 helped in my case but I still got ld: library not found for -lssl.

This helped:

$ brew install openssl
$ export LIBRARY_PATH=$LIBRARY_PATH:/usr/local/opt/openssl/lib/

macOS Mojave v10.14.2