Skip to content

32.x building (without cmake) protobuf against static libraries - absl linking problems #23516

@flipkickmedia

Description

@flipkickmedia

What version of protobuf and what language are you using?
Version: 32.x C++

What operating system (Linux, Windows, ...) and version?
Ubuntu 24.04

What runtime / compiler are you using (e.g., python version or gcc version)
gcc (Ubuntu 13.3.0-6ubuntu2~24.04) 13.3.0

What did you do?
Build absl libraries manually:

# abseil - needs to be an LTS version - 20250512.1
cd "${DEPENDENCIES_BASE_PATH}" || exit
git clone https://github.com/abseil/abseil-cpp.git "${DEPENDENCIES_BASE_PATH}/abseil-cpp/source"
cd abseil-cpp/source || exit
git clean -f -d
git fetch --tags
git checkout lts_2025_08_14
mkdir ../build
cd ../build || exit
cmake                                                                    \
  -DCMAKE_CXX_STANDARD=17                                                \
  -DCMAKE_INSTALL_PREFIX="${DEPENDENCIES_BASE_PATH}/abseil-cpp/install"  \
  -DABSL_BUILD_TESTING=OFF                                               \
  -DABSL_USE_GOOGLETEST_HEAD=OFF                                         \
  ../source
cmake --build . --target install
cd "${rootDir}" || exit

Build protobuf libraries manually

# protobuf - working
cd "${DEPENDENCIES_BASE_PATH}" || exit
git clone https://github.com/protocolbuffers/protobuf.git -b 32.x "${DEPENDENCIES_BASE_PATH}/protobuf/source"
cd protobuf/source || exit
git clean -f -d
mkdir ../build
cd ../build || exit
cmake                                                                      \
  -DCMAKE_CXX_STANDARD=17                                                  \
  -DCMAKE_INSTALL_PREFIX="${DEPENDENCIES_BASE_PATH}/protobuf/install"      \
  -Dabsl_DIR="${DEPENDENCIES_BASE_PATH}/abseil-cpp/install/lib/cmake/absl" \
  -DZLIB_LIBRARY="${DEPENDENCIES_BASE_PATH}/zlib/install/lib/libz.a"       \
  -DZLIB_INCLUDE_DIR="${DEPENDENCIES_BASE_PATH}/zlib/install/include"      \
  -Dprotobuf_INSTALL=ON                                                    \
  -Dprotobuf_BUILD_TESTS=OFF                                               \
  -Dprotobuf_BUILD_CONFORMANCE=OFF                                         \
  -Dprotobuf_BUILD_EXAMPLES=OFF                                            \
  -Dprotobuf_FORCE_FETCH_DEPENDENCIES=OFF                                  \
  -Dprotobuf_LOCAL_DEPENDENCIES_ONLY=OFF                                   \
  ../source
cmake --build . --target install
cd "${rootDir}" || exit

Libraries are built ok

Next I built my messages.proto into messages.pb.cc.

Using cmake I tried to build a static messagespb lib and then link that into my main program, that failed. I got lots of absl undefined reference errors.

Then I tried this:

#
#add_library(messagespb STATIC
#        src/proto/messages.pb.cc
#)
#target_include_directories(messagespb PUBLIC
#        ${CMAKE_SOURCE_DIR}/_deps/protobuf/install/include
#        ${CMAKE_SOURCE_DIR}/_deps/abseil-cpp/install/include

file(GLOB_RECURSE ABSL_LIBS ${CMAKE_SOURCE_DIR}/_deps/abseil-cpp/install/lib/*.a)
message("ABSL LIBS: ${ABSL_LIBS}")

#target_link_libraries(messagespb PUBLIC
#        ${CMAKE_SOURCE_DIR}/_deps/protobuf/install/lib/libprotobuf.a
#        ${ABSL_LIBS}
#)

add_executable(Server server_ws.cc src/proto/messages.pb.cc)
target_include_directories(Server PUBLIC
        ${CMAKE_SOURCE_DIR}/src
        ${CMAKE_SOURCE_DIR}/_deps/protobuf/install/include
        ${CMAKE_SOURCE_DIR}/_deps/abseil-cpp/install/include
)
target_link_libraries(Server PUBLIC
        ${CMAKE_SOURCE_DIR}/_deps/protobuf/install/lib/libprotobuf.a
        ${ABSL_LIBS}
)

and ended up with

/usr/bin/cmake --build /home/tshaw/Documents/uwebsockets-cmake/cmake-build-debug --target Server -j 6
[0/1] Re-running CMake...
ABSL LIBS: <-- truncated to avoid listing them all out -->
-- Configuring done (0.1s)
-- Generating done (0.0s)
-- Build files have been written to: /home/tshaw/Documents/uwebsockets-cmake/cmake-build-debug
[2/3] Linking CXX executable Server
FAILED: Server 
: && /usr/bin/c++ -g -Wl,--dependency-file=CMakeFiles/Server.dir/link.d CMakeFiles/Server.dir/server_ws.cc.o CMakeFiles/Server.dir/src/proto/messages.pb.cc.o -o Server  -Wl,-rpath,/home/tshaw/Documents/uwebsockets-cmake/_deps/ImageMagick/install/lib:/home/tshaw/Documents/uwebsockets-cmake/_deps/lsquic/install/lib:/home/tshaw/Documents/uwebsockets-cmake/_deps/boringssl/install/lib  /home/tshaw/Documents/uwebsockets-cmake/_deps/protobuf/install/lib/libprotobuf.a  /home/tshaw/Documents/uwebsockets-cmake/_deps/abseil-cpp/install/lib/libabsl_base.a  /home/tshaw/Documents/uwebsockets-cmake/_deps/abseil-cpp/install/lib/libabsl_city.a  /home/tshaw/Documents/uwebsockets-cmake/_deps/abseil-cpp/install/lib/libabsl_civil_time.a  /home/tshaw/Documents/uwebsockets-cmake/_deps/abseil-cpp/install/lib/libabsl_cord.a  /home/tshaw/Documents/uwebsockets-cmake/_deps/abseil-cpp/install/lib/libabsl_cord_internal.a  /home/tshaw/Documents/uwebsockets-cmake/_deps/abseil-cpp/install/lib/libabsl_cordz_functions.a  /home/tshaw/Documents/uwebsockets-cmake/_deps/abseil-cpp/install/lib/libabsl_cordz_handle.a  /home/tshaw/Documents/uwebsockets-cmake/_deps/abseil-cpp/install/lib/libabsl_cordz_info.a  /home/tshaw/Documents/uwebsockets-cmake/_deps/abseil-cpp/install/lib/libabsl_cordz_sample_token.a  /home/tshaw/Documents/uwebsockets-cmake/_deps/abseil-cpp/install/lib/libabsl_crc32c.a  /home/tshaw/Documents/uwebsockets-cmake/_deps/abseil-cpp/install/lib/libabsl_crc_cord_state.a  /home/tshaw/Documents/uwebsockets-cmake/_deps/abseil-cpp/install/lib/libabsl_crc_cpu_detect.a  /home/tshaw/Documents/uwebsockets-cmake/_deps/abseil-cpp/install/lib/libabsl_crc_internal.a  /home/tshaw/Documents/uwebsockets-cmake/_deps/abseil-cpp/install/lib/libabsl_debugging_internal.a  /home/tshaw/Documents/uwebsockets-cmake/_deps/abseil-cpp/install/lib/libabsl_decode_rust_punycode.a  /home/tshaw/Documents/uwebsockets-cmake/_deps/abseil-cpp/install/lib/libabsl_demangle_internal.a  /home/tshaw/Documents/uwebsockets-cmake/_deps/abseil-cpp/install/lib/libabsl_demangle_rust.a  /home/tshaw/Documents/uwebsockets-cmake/_deps/abseil-cpp/install/lib/libabsl_die_if_null.a  /home/tshaw/Documents/uwebsockets-cmake/_deps/abseil-cpp/install/lib/libabsl_examine_stack.a  /home/tshaw/Documents/uwebsockets-cmake/_deps/abseil-cpp/install/lib/libabsl_exponential_biased.a  /home/tshaw/Documents/uwebsockets-cmake/_deps/abseil-cpp/install/lib/libabsl_failure_signal_handler.a  /home/tshaw/Documents/uwebsockets-cmake/_deps/abseil-cpp/install/lib/libabsl_flags_commandlineflag.a  /home/tshaw/Documents/uwebsockets-cmake/_deps/abseil-cpp/install/lib/libabsl_flags_commandlineflag_internal.a  /home/tshaw/Documents/uwebsockets-cmake/_deps/abseil-cpp/install/lib/libabsl_flags_config.a  /home/tshaw/Documents/uwebsockets-cmake/_deps/abseil-cpp/install/lib/libabsl_flags_internal.a  /home/tshaw/Documents/uwebsockets-cmake/_deps/abseil-cpp/install/lib/libabsl_flags_marshalling.a  /home/tshaw/Documents/uwebsockets-cmake/_deps/abseil-cpp/install/lib/libabsl_flags_parse.a  /home/tshaw/Documents/uwebsockets-cmake/_deps/abseil-cpp/install/lib/libabsl_flags_private_handle_accessor.a  /home/tshaw/Documents/uwebsockets-cmake/_deps/abseil-cpp/install/lib/libabsl_flags_program_name.a  /home/tshaw/Documents/uwebsockets-cmake/_deps/abseil-cpp/install/lib/libabsl_flags_reflection.a  /home/tshaw/Documents/uwebsockets-cmake/_deps/abseil-cpp/install/lib/libabsl_flags_usage.a  /home/tshaw/Documents/uwebsockets-cmake/_deps/abseil-cpp/install/lib/libabsl_flags_usage_internal.a  /home/tshaw/Documents/uwebsockets-cmake/_deps/abseil-cpp/install/lib/libabsl_graphcycles_internal.a  /home/tshaw/Documents/uwebsockets-cmake/_deps/abseil-cpp/install/lib/libabsl_hash.a  /home/tshaw/Documents/uwebsockets-cmake/_deps/abseil-cpp/install/lib/libabsl_hashtable_profiler.a  /home/tshaw/Documents/uwebsockets-cmake/_deps/abseil-cpp/install/lib/libabsl_hashtablez_sampler.a  /home/tshaw/Documents/uwebsockets-cmake/_deps/abseil-cpp/install/lib/libabsl_int128.a  /home/tshaw/Documents/uwebsockets-cmake/_deps/abseil-cpp/install/lib/libabsl_kernel_timeout_internal.a  /home/tshaw/Documents/uwebsockets-cmake/_deps/abseil-cpp/install/lib/libabsl_leak_check.a  /home/tshaw/Documents/uwebsockets-cmake/_deps/abseil-cpp/install/lib/libabsl_log_entry.a  /home/tshaw/Documents/uwebsockets-cmake/_deps/abseil-cpp/install/lib/libabsl_log_flags.a  /home/tshaw/Documents/uwebsockets-cmake/_deps/abseil-cpp/install/lib/libabsl_log_globals.a  /home/tshaw/Documents/uwebsockets-cmake/_deps/abseil-cpp/install/lib/libabsl_log_initialize.a  /home/tshaw/Documents/uwebsockets-cmake/_deps/abseil-cpp/install/lib/libabsl_log_internal_check_op.a  /home/tshaw/Documents/uwebsockets-cmake/_deps/abseil-cpp/install/lib/libabsl_log_internal_conditions.a  /home/tshaw/Documents/uwebsockets-cmake/_deps/abseil-cpp/install/lib/libabsl_log_internal_fnmatch.a  /home/tshaw/Documents/uwebsockets-cmake/_deps/abseil-cpp/install/lib/libabsl_log_internal_format.a  /home/tshaw/Documents/uwebsockets-cmake/_deps/abseil-cpp/install/lib/libabsl_log_internal_globals.a  /home/tshaw/Documents/uwebsockets-cmake/_deps/abseil-cpp/install/lib/libabsl_log_internal_log_sink_set.a  /home/tshaw/Documents/uwebsockets-cmake/_deps/abseil-cpp/install/lib/libabsl_log_internal_message.a  /home/tshaw/Documents/uwebsockets-cmake/_deps/abseil-cpp/install/lib/libabsl_log_internal_nullguard.a  /home/tshaw/Documents/uwebsockets-cmake/_deps/abseil-cpp/install/lib/libabsl_log_internal_proto.a  /home/tshaw/Documents/uwebsockets-cmake/_deps/abseil-cpp/install/lib/libabsl_log_internal_structured_proto.a  /home/tshaw/Documents/uwebsockets-cmake/_deps/abseil-cpp/install/lib/libabsl_log_severity.a  /home/tshaw/Documents/uwebsockets-cmake/_deps/abseil-cpp/install/lib/libabsl_log_sink.a  /home/tshaw/Documents/uwebsockets-cmake/_deps/abseil-cpp/install/lib/libabsl_malloc_internal.a  /home/tshaw/Documents/uwebsockets-cmake/_deps/abseil-cpp/install/lib/libabsl_periodic_sampler.a  /home/tshaw/Documents/uwebsockets-cmake/_deps/abseil-cpp/install/lib/libabsl_poison.a  /home/tshaw/Documents/uwebsockets-cmake/_deps/abseil-cpp/install/lib/libabsl_profile_builder.a  /home/tshaw/Documents/uwebsockets-cmake/_deps/abseil-cpp/install/lib/libabsl_random_distributions.a  /home/tshaw/Documents/uwebsockets-cmake/_deps/abseil-cpp/install/lib/libabsl_random_internal_distribution_test_util.a  /home/tshaw/Documents/uwebsockets-cmake/_deps/abseil-cpp/install/lib/libabsl_random_internal_entropy_pool.a  /home/tshaw/Documents/uwebsockets-cmake/_deps/abseil-cpp/install/lib/libabsl_random_internal_platform.a  /home/tshaw/Documents/uwebsockets-cmake/_deps/abseil-cpp/install/lib/libabsl_random_internal_randen.a  /home/tshaw/Documents/uwebsockets-cmake/_deps/abseil-cpp/install/lib/libabsl_random_internal_randen_hwaes.a  /home/tshaw/Documents/uwebsockets-cmake/_deps/abseil-cpp/install/lib/libabsl_random_internal_randen_hwaes_impl.a  /home/tshaw/Documents/uwebsockets-cmake/_deps/abseil-cpp/install/lib/libabsl_random_internal_randen_slow.a  /home/tshaw/Documents/uwebsockets-cmake/_deps/abseil-cpp/install/lib/libabsl_random_internal_seed_material.a  /home/tshaw/Documents/uwebsockets-cmake/_deps/abseil-cpp/install/lib/libabsl_random_seed_gen_exception.a  /home/tshaw/Documents/uwebsockets-cmake/_deps/abseil-cpp/install/lib/libabsl_random_seed_sequences.a  /home/tshaw/Documents/uwebsockets-cmake/_deps/abseil-cpp/install/lib/libabsl_raw_hash_set.a  /home/tshaw/Documents/uwebsockets-cmake/_deps/abseil-cpp/install/lib/libabsl_raw_logging_internal.a  /home/tshaw/Documents/uwebsockets-cmake/_deps/abseil-cpp/install/lib/libabsl_scoped_set_env.a  /home/tshaw/Documents/uwebsockets-cmake/_deps/abseil-cpp/install/lib/libabsl_spinlock_wait.a  /home/tshaw/Documents/uwebsockets-cmake/_deps/abseil-cpp/install/lib/libabsl_stacktrace.a  /home/tshaw/Documents/uwebsockets-cmake/_deps/abseil-cpp/install/lib/libabsl_status.a  /home/tshaw/Documents/uwebsockets-cmake/_deps/abseil-cpp/install/lib/libabsl_statusor.a  /home/tshaw/Documents/uwebsockets-cmake/_deps/abseil-cpp/install/lib/libabsl_str_format_internal.a  /home/tshaw/Documents/uwebsockets-cmake/_deps/abseil-cpp/install/lib/libabsl_strerror.a  /home/tshaw/Documents/uwebsockets-cmake/_deps/abseil-cpp/install/lib/libabsl_string_view.a  /home/tshaw/Documents/uwebsockets-cmake/_deps/abseil-cpp/install/lib/libabsl_strings.a  /home/tshaw/Documents/uwebsockets-cmake/_deps/abseil-cpp/install/lib/libabsl_strings_internal.a  /home/tshaw/Documents/uwebsockets-cmake/_deps/abseil-cpp/install/lib/libabsl_symbolize.a  /home/tshaw/Documents/uwebsockets-cmake/_deps/abseil-cpp/install/lib/libabsl_synchronization.a  /home/tshaw/Documents/uwebsockets-cmake/_deps/abseil-cpp/install/lib/libabsl_throw_delegate.a  /home/tshaw/Documents/uwebsockets-cmake/_deps/abseil-cpp/install/lib/libabsl_time.a  /home/tshaw/Documents/uwebsockets-cmake/_deps/abseil-cpp/install/lib/libabsl_time_zone.a  /home/tshaw/Documents/uwebsockets-cmake/_deps/abseil-cpp/install/lib/libabsl_tracing_internal.a  /home/tshaw/Documents/uwebsockets-cmake/_deps/abseil-cpp/install/lib/libabsl_utf8_for_code_point.a  /home/tshaw/Documents/uwebsockets-cmake/_deps/abseil-cpp/install/lib/libabsl_vlog_config_internal.a  libuSockets.a  /home/tshaw/Documents/uwebsockets-cmake/_deps/lsquic/install/lib/liblsquic.so  /home/tshaw/Documents/uwebsockets-cmake/_deps/boringssl/install/lib/libcrypto.so  /home/tshaw/Documents/uwebsockets-cmake/_deps/boringssl/install/lib/libssl.so  /home/tshaw/Documents/uwebsockets-cmake/_deps/zlib/install/lib/libz.a && :
/usr/bin/ld: /home/tshaw/Documents/uwebsockets-cmake/_deps/abseil-cpp/install/lib/libabsl_log_internal_conditions.a(conditions.cc.o): warning: relocation against `_ZN4absl12lts_2025081413base_internal10CycleClock19cycle_clock_source_E' in read-only section `.text._ZN4absl12lts_2025081413base_internal10CycleClock20LoadCycleClockSourceEv[_ZN4absl12lts_2025081413base_internal10CycleClock20LoadCycleClockSourceEv]'
/usr/bin/ld: /home/tshaw/Documents/uwebsockets-cmake/_deps/protobuf/install/lib/libprotobuf.a(generated_message_tctable_lite.cc.o): in function `utf8_range::IsStructurallyValid(std::basic_string_view<char, std::char_traits<char> >)':
generated_message_tctable_lite.cc:(.text._ZN10utf8_range19IsStructurallyValidESt17basic_string_viewIcSt11char_traitsIcEE[_ZN10utf8_range19IsStructurallyValidESt17basic_string_viewIcSt11char_traitsIcEE]+0x40): undefined reference to `utf8_range_IsValid'
/usr/bin/ld: /home/tshaw/Documents/uwebsockets-cmake/_deps/protobuf/install/lib/libprotobuf.a(parse_context.cc.o): in function `utf8_range::SpanStructurallyValid(std::basic_string_view<char, std::char_traits<char> >)':
parse_context.cc:(.text._ZN10utf8_range21SpanStructurallyValidESt17basic_string_viewIcSt11char_traitsIcEE[_ZN10utf8_range21SpanStructurallyValidESt17basic_string_viewIcSt11char_traitsIcEE]+0x40): undefined reference to `utf8_range_ValidPrefix'
/usr/bin/ld: /home/tshaw/Documents/uwebsockets-cmake/_deps/abseil-cpp/install/lib/libabsl_cordz_info.a(cordz_info.cc.o): in function `absl::lts_20250814::cord_internal::CordzInfo::Head(absl::lts_20250814::cord_internal::CordzSnapshot const&)':
cordz_info.cc:(.text+0x98a): undefined reference to `absl::lts_20250814::cord_internal::CordzHandle::DiagnosticsHandleIsSafeToInspect(absl::lts_20250814::cord_internal::CordzHandle const*) const'
/usr/bin/ld: /home/tshaw/Documents/uwebsockets-cmake/_deps/abseil-cpp/install/lib/libabsl_cordz_info.a(cordz_info.cc.o): in function `absl::lts_20250814::cord_internal::CordzInfo::Next(absl::lts_20250814::cord_internal::CordzSnapshot const&) const':
cordz_info.cc:(.text+0xac3): undefined reference to `absl::lts_20250814::cord_internal::CordzHandle::DiagnosticsHandleIsSafeToInspect(absl::lts_20250814::cord_internal::CordzHandle const*) const'
/usr/bin/ld: cordz_info.cc:(.text+0xaea): undefined reference to `absl::lts_20250814::cord_internal::CordzHandle::DiagnosticsHandleIsSafeToInspect(absl::lts_20250814::cord_internal::CordzHandle const*) const'
/usr/bin/ld: /home/tshaw/Documents/uwebsockets-cmake/_deps/abseil-cpp/install/lib/libabsl_cordz_info.a(cordz_info.cc.o): in function `absl::lts_20250814::cord_internal::CordzInfo::CordzInfo(absl::lts_20250814::cord_internal::CordRep*, absl::lts_20250814::cord_internal::CordzInfo const*, absl::lts_20250814::cord_internal::CordzUpdateTracker::MethodIdentifier, long)':
cordz_info.cc:(.text+0x10d1): undefined reference to `absl::lts_20250814::cord_internal::CordzHandle::~CordzHandle()'
/usr/bin/ld: /home/tshaw/Documents/uwebsockets-cmake/_deps/abseil-cpp/install/lib/libabsl_cordz_info.a(cordz_info.cc.o): in function `absl::lts_20250814::cord_internal::CordzInfo::~CordzInfo()':
cordz_info.cc:(.text+0x114d): undefined reference to `absl::lts_20250814::cord_internal::CordzHandle::~CordzHandle()'
/usr/bin/ld: /home/tshaw/Documents/uwebsockets-cmake/_deps/abseil-cpp/install/lib/libabsl_cordz_info.a(cordz_info.cc.o): in function `absl::lts_20250814::cord_internal::CordzInfo::Untrack()':
cordz_info.cc:(.text+0x14da): undefined reference to `absl::lts_20250814::cord_internal::CordzHandle::SafeToDelete() const'
/usr/bin/ld: cordz_info.cc:(.text+0x155b): undefined reference to `absl::lts_20250814::cord_internal::CordzHandle::Delete(absl::lts_20250814::cord_internal::CordzHandle*)'
/usr/bin/ld: /home/tshaw/Documents/uwebsockets-cmake/_deps/abseil-cpp/install/lib/libabsl_cordz_info.a(cordz_info.cc.o): in function `absl::lts_20250814::base_internal::SpinLock::lock()':
cordz_info.cc:(.text._ZN4absl12lts_2025081413base_internal8SpinLock4lockEv[_ZN4absl12lts_2025081413base_internal8SpinLock4lockEv]+0x2b): undefined reference to `absl::lts_20250814::base_internal::SpinLock::SlowLock()'
/usr/bin/ld: /home/tshaw/Documents/uwebsockets-cmake/_deps/abseil-cpp/install/lib/libabsl_cordz_info.a(cordz_info.cc.o): in function `absl::lts_20250814::base_internal::SpinLock::unlock()':
cordz_info.cc:(.text._ZN4absl12lts_2025081413base_internal8SpinLock6unlockEv[_ZN4absl12lts_2025081413base_internal8SpinLock6unlockEv]+0xc1): undefined reference to `absl::lts_20250814::base_internal::SpinLock::SlowUnlock(unsigned int)'
/usr/bin/ld: /home/tshaw/Documents/uwebsockets-cmake/_deps/abseil-cpp/install/lib/libabsl_cordz_info.a(cordz_info.cc.o): in function `absl::lts_20250814::cord_internal::CordzHandle::CordzHandle()':
cordz_info.cc:(.text._ZN4absl12lts_2025081413cord_internal11CordzHandleC2Ev[_ZN4absl12lts_2025081413cord_internal11CordzHandleC5Ev]+0x1d): undefined reference to `absl::lts_20250814::cord_internal::CordzHandle::CordzHandle(bool)'
/usr/bin/ld: /home/tshaw/Documents/uwebsockets-cmake/_deps/abseil-cpp/install/lib/libabsl_cordz_info.a(cordz_info.cc.o):(.data.rel.ro._ZTIN4absl12lts_2025081413cord_internal9CordzInfoE[_ZTIN4absl12lts_2025081413cord_internal9CordzInfoE]+0x10): undefined reference to `typeinfo for absl::lts_20250814::cord_internal::CordzHandle'
/usr/bin/ld: /home/tshaw/Documents/uwebsockets-cmake/_deps/abseil-cpp/install/lib/libabsl_crc_cord_state.a(crc_cord_state.cc.o): in function `absl::lts_20250814::crc_internal::CrcCordState::Checksum() const':
crc_cord_state.cc:(.text+0x449): undefined reference to `absl::lts_20250814::RemoveCrc32cPrefix(absl::lts_20250814::crc32c_t, absl::lts_20250814::crc32c_t, unsigned long)'
/usr/bin/ld: /home/tshaw/Documents/uwebsockets-cmake/_deps/abseil-cpp/install/lib/libabsl_crc_cord_state.a(crc_cord_state.cc.o): in function `absl::lts_20250814::crc_internal::CrcCordState::NormalizedPrefixCrcAtNthChunk(unsigned long) const':
crc_cord_state.cc:(.text+0x57d): undefined reference to `absl::lts_20250814::RemoveCrc32cPrefix(absl::lts_20250814::crc32c_t, absl::lts_20250814::crc32c_t, unsigned long)'
/usr/bin/ld: /home/tshaw/Documents/uwebsockets-cmake/_deps/abseil-cpp/install/lib/libabsl_crc_cord_state.a(crc_cord_state.cc.o): in function `absl::lts_20250814::crc_internal::CrcCordState::Normalize()':
crc_cord_state.cc:(.text+0x6ab): undefined reference to `absl::lts_20250814::RemoveCrc32cPrefix(absl::lts_20250814::crc32c_t, absl::lts_20250814::crc32c_t, unsigned long)'
/usr/bin/ld: /home/tshaw/Documents/uwebsockets-cmake/_deps/abseil-cpp/install/lib/libabsl_hash.a(hash.cc.o): in function `absl::lts_20250814::hash_internal::(anonymous namespace)::SplitAndCombineOn32Bit(unsigned char const*, unsigned long, unsigned long)':
hash.cc:(.text+0x706): undefined reference to `absl::lts_20250814::hash_internal::CityHash32(char const*, unsigned long)'
/usr/bin/ld: /home/tshaw/Documents/uwebsockets-cmake/_deps/abseil-cpp/install/lib/libabsl_log_internal_check_op.a(check_op.cc.o): in function `std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >* absl::lts_20250814::IgnoreLeak<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >*)':
check_op.cc:(.text._ZN4absl12lts_2025081410IgnoreLeakINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEPT_S9_[_ZN4absl12lts_2025081410IgnoreLeakINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEPT_S9_]+0x18): undefined reference to `absl::lts_20250814::DoIgnoreLeak(void const*)'
/usr/bin/ld: /home/tshaw/Documents/uwebsockets-cmake/_deps/abseil-cpp/install/lib/libabsl_log_internal_conditions.a(conditions.cc.o): in function `absl::lts_20250814::base_internal::CycleClock::LoadCycleClockSource()':
conditions.cc:(.text._ZN4absl12lts_2025081413base_internal10CycleClock20LoadCycleClockSourceEv[_ZN4absl12lts_2025081413base_internal10CycleClock20LoadCycleClockSourceEv]+0x10): undefined reference to `absl::lts_20250814::base_internal::CycleClock::cycle_clock_source_'
/usr/bin/ld: /home/tshaw/Documents/uwebsockets-cmake/_deps/abseil-cpp/install/lib/libabsl_log_internal_conditions.a(conditions.cc.o): in function `absl::lts_20250814::base_internal::CycleClock::Frequency()':
conditions.cc:(.text._ZN4absl12lts_2025081413base_internal10CycleClock9FrequencyEv[_ZN4absl12lts_2025081413base_internal10CycleClock9FrequencyEv]+0x9): undefined reference to `absl::lts_20250814::base_internal::UnscaledCycleClock::Frequency()'
/usr/bin/ld: /home/tshaw/Documents/uwebsockets-cmake/_deps/abseil-cpp/install/lib/libabsl_log_internal_message.a(log_message.cc.o): in function `absl::lts_20250814::log_internal::LogMessage::LogMessageData::LogMessageData(char const*, int, absl::lts_20250814::LogSeverity, absl::lts_20250814::Time)':
log_message.cc:(.text+0x376): undefined reference to `absl::lts_20250814::ShouldPrependLogPrefix()'
/usr/bin/ld: log_message.cc:(.text+0x3b0): undefined reference to `absl::lts_20250814::base_internal::GetCachedTID()'
/usr/bin/ld: /home/tshaw/Documents/uwebsockets-cmake/_deps/abseil-cpp/install/lib/libabsl_log_internal_message.a(log_message.cc.o): in function `absl::lts_20250814::log_internal::LogMessage::LogMessageData::FinalizeEncodingAndFormat()':
log_message.cc:(.text+0x657): undefined reference to `absl::lts_20250814::log_internal::ThreadIsLoggingToLogSink()'

What did you expect to see
I was hoping to be able to create a library that has the protobuf de/encoding functionality

What did you see instead?
Linking errors to absl dispite the libs being linked

Im happy to make this work differently but I want to avoid using cmake to bring in the protobuf and absl projects. My ideal scenario is that I can create a library that I can use in other projects without having to use cmake to bring in protobuf into every project. I would think that is achieveable and reasonable.

Fingers crossed and thanks :)

Metadata

Metadata

Assignees

Labels

c++untriagedauto added to all issues by default when created.

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions