-
Notifications
You must be signed in to change notification settings - Fork 512
Description
Hi Everyone,
A few days ago I'm trying to compile a simple hello world application(cpp), after the saga of the compilation of opentelemetry cpp SDK, I'm having the following error when running make:
/usr/bin/ld: /opt/otelcpp/lib/libopentelemetry_trace.a(random_id_generator.cc.o): in function opentelemetry::v1::sdk::trace::RandomIdGenerator::GenerateSpanId()': random_id_generator.cc:(.text+0x41): undefined reference to opentelemetry::v1::sdk::common::Random::GenerateRandomBuffer(opentelemetry::v1::nostd::span<unsigned char, 18446744073709551615ul>)'
/usr/bin/ld: /opt/otelcpp/lib/libopentelemetry_trace.a(random_id_generator.cc.o): in function opentelemetry::v1::sdk::trace::RandomIdGenerator::GenerateTraceId()': random_id_generator.cc:(.text+0xc7): undefined reference to opentelemetry::v1::sdk::common::Random::GenerateRandomBuffer(opentelemetry::v1::nostd::span<unsigned char, 18446744073709551615ul>)'
/usr/bin/ld: /opt/otelcpp/lib/libopentelemetry_exporter_jaeger_trace.a(THttpTransport.cc.o): in function opentelemetry::v1::exporter::jaeger::THttpTransport::THttpTransport(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::multimap<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, opentelemetry::v1::ext::http::client::cmp_ic, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > >)': THttpTransport.cc:(.text+0xb6): undefined reference to opentelemetry::v1::ext::http::client::HttpClientFactory::CreateSync()'
collect2: error: ld returned 1 exit status
make[2]: *** [CMakeFiles/hello-otel.dir/build.make:113: hello-otel] Error 1
make[1]: *** [CMakeFiles/Makefile2:83: CMakeFiles/hello-otel.dir/all] Error 2
make: *** [Makefile:91: all] Error 2
My CMakeList.txt:
cmake_minimum_required(VERSION 3.23)
project(otel-test)
find_package(Protobuf REQUIRED)
find_package(nlohmann_json REQUIRED)
find_package(CURL REQUIRED)
find_package(gRPC REQUIRED)
find_package(Thrift REQUIRED)
find_package(absl REQUIRED)
find_package(opentelemetry-cpp CONFIG REQUIRED)
message(STATUS "otel c++ include dirs: ${OPENTELEMETRY_CPP_INCLUDE_DIRS}")
message(STATUS "otel c++ libs: ${OPENTELEMETRY_CPP_LIBRARIES}")
message(STATUS "thrift libs: ${THRIFT_FOUND_LIB}")
add_library(libopentelemetry_common STATIC IMPORTED)
add_library(libopentelemetry_resources STATIC IMPORTED)
add_library(libopentelemetry_trace STATIC IMPORTED)
add_library(libopentelemetry_version STATIC IMPORTED)
add_library(libopentelemetry_metrics STATIC IMPORTED)
add_library(libopentelemetry_http_client_curl STATIC IMPORTED)
add_library(lib_client_nosend STATIC IMPORTED)
add_library(libopentelemetry_otlp_recordable STATIC IMPORTED)
add_library(libopentelemetry_exporter_otlp_grpc_log STATIC IMPORTED)
add_library(libopentelemetry_exporter_otlp_http_client STATIC IMPORTED)
add_library(libopentelemetry_exporter_otlp_http STATIC IMPORTED)
add_library(libopentelemetry_exporter_otlp_grpc STATIC IMPORTED)
add_library(libopentelemetry_exporter_ostream_span STATIC IMPORTED)
add_library(libopentelemetry_exporter_jaeger_trace STATIC IMPORTED)
add_library(libt STATIC IMPORTED)
set_target_properties(libt PROPERTIES
IMPORTED_LOCATION "/usr/local/lib/libthrift.a"
)
set_target_properties(libopentelemetry_common PROPERTIES
IMPORTED_LOCATION "/opt/otelcpp/lib/libopentelemetry_common.a"
)
set_target_properties(libopentelemetry_resources PROPERTIES
IMPORTED_LOCATION "/opt/otelcpp/lib/libopentelemetry_resources.a"
)
set_target_properties(libopentelemetry_trace PROPERTIES
IMPORTED_LOCATION "/opt/otelcpp/lib/libopentelemetry_trace.a"
)
set_target_properties(libopentelemetry_version PROPERTIES
IMPORTED_LOCATION "/opt/otelcpp/lib/libopentelemetry_version.a"
)
set_target_properties(libopentelemetry_metrics PROPERTIES
IMPORTED_LOCATION "/opt/otelcpp/lib/libopentelemetry_metrics.a"
)
set_target_properties(libopentelemetry_http_client_curl PROPERTIES
IMPORTED_LOCATION "/opt/otelcpp/lib/libopentelemetry_http_client_curl.a"
)
set_target_properties(lib_client_nosend PROPERTIES
IMPORTED_LOCATION "/opt/otelcpp/lib/libhttp_client_nosend.a"
)
set_target_properties(libopentelemetry_http_client_curl PROPERTIES
IMPORTED_LOCATION "/opt/otelcpp/lib/libopentelemetry_http_client_curl.a"
)
set_target_properties(lib_client_nosend PROPERTIES
IMPORTED_LOCATION "/opt/otelcpp/lib/libhttp_client_nosend.a"
)
set_target_properties(libopentelemetry_otlp_recordable PROPERTIES
IMPORTED_LOCATION "/opt/otelcpp/lib/libopentelemetry_otlp_recordable.a"
)
set_target_properties(libopentelemetry_exporter_otlp_grpc_log PROPERTIES
IMPORTED_LOCATION "/opt/otelcpp/lib/libopentelemetry_exporter_otlp_grpc_log.a"
)
set_target_properties(libopentelemetry_exporter_otlp_http_client PROPERTIES
IMPORTED_LOCATION "/opt/otelcpp/lib/libopentelemetry_exporter_otlp_http_client.a"
)
set_target_properties(libopentelemetry_exporter_otlp_http PROPERTIES
IMPORTED_LOCATION "/opt/otelcpp/lib/libopentelemetry_exporter_otlp_http.a"
)
set_target_properties(libopentelemetry_exporter_otlp_grpc PROPERTIES
IMPORTED_LOCATION "/opt/otelcpp/lib/libopentelemetry_exporter_otlp_grpc.a"
)
set_target_properties(libopentelemetry_exporter_ostream_span PROPERTIES
IMPORTED_LOCATION "/opt/otelcpp/lib/libopentelemetry_exporter_ostream_span.a"
)
set_target_properties(libopentelemetry_exporter_jaeger_trace PROPERTIES
IMPORTED_LOCATION "/opt/otelcpp/lib/libopentelemetry_exporter_jaeger_trace.a"
)
add_executable(hello-otel main.cpp)
target_include_directories(hello-otel PRIVATE ${OPENTELEMETRY_CPP_INCLUDE_DIRS})
target_link_libraries(hello-otel libopentelemetry_common libopentelemetry_resources libopentelemetry_trace
libopentelemetry_version libopentelemetry_metrics libopentelemetry_http_client_curl
lib_client_nosend libopentelemetry_otlp_recordable libopentelemetry_exporter_otlp_grpc_log
libopentelemetry_exporter_otlp_grpc_log libopentelemetry_exporter_otlp_http_client libopentelemetry_exporter_otlp_http
libopentelemetry_exporter_otlp_grpc libopentelemetry_exporter_ostream_span libopentelemetry_exporter_jaeger_trace
libt)
Command to build:
cmake -DCMAKE_PREFIX_PATH=/opt/otelcpp/ ..
Output of command to build:
cmake -DCMAKE_PREFIX_PATH=/opt/otelcpp/ ..
-- The C compiler identification is GNU 9.4.0
-- The CXX compiler identification is GNU 9.4.0
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Check for working C compiler: /usr/bin/cc - skipped
-- Detecting C compile features
-- Detecting C compile features - done
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Check for working CXX compiler: /usr/bin/c++ - skipped
-- Detecting CXX compile features
-- Detecting CXX compile features - done
-- Found Protobuf: /usr/local/lib/libprotobuf.so;-lpthread (found version "3.19.2")
-- Found nlohmann_json: /opt/otelcpp/lib/cmake/nlohmann_json/nlohmann_jsonConfig.cmake (found version "3.9.1")
-- Found CURL: /opt/vcpkg/installed/x64-linux/share/curl/CURLConfig.cmake (found version "7.82.0-DEV")
-- Found Threads: TRUE
-- Found thrift: /root/source/opentelemetry-cpp/tools/vcpkg
-- Found opentelemetry-cpp: /opt/otelcpp/include
-- otel c++ include dirs: /opt/otelcpp/include
-- otel c++ libs: opentelemetry-cpp::api;opentelemetry-cpp::sdk;opentelemetry-cpp::ext;opentelemetry-cpp::version;opentelemetry-cpp::common;opentelemetry-cpp::trace;opentelemetry-cpp::metrics;opentelemetry-cpp::in_memory_span_exporter;opentelemetry-cpp::otlp_recordable;opentelemetry-cpp::otlp_grpc_exporter;opentelemetry-cpp::otlp_http_client;opentelemetry-cpp::otlp_http_exporter;opentelemetry-cpp::ostream_span_exporter;opentelemetry-cpp::jaeger_trace_exporter;opentelemetry-cpp::http_client_curl
-- thrift libs:
-- Configuring done
-- Generating done
-- Build files have been written to: /opt/helloworld/build
Thank you in advance :-)