Opentelemetry-CPP: Bibliotheksfehlanpassung verursacht einen Verbindungsfehler?C++

Programme in C++. Entwicklerforum
Anonymous
 Opentelemetry-CPP: Bibliotheksfehlanpassung verursacht einen Verbindungsfehler?

Post by Anonymous »

Ich habe Probleme mit einem scheinbar Nostd :: std :: call in Bibliotheken unter Ubuntu 22. Opentelemetry-CPP wurde mit: < /p>
konfiguriert

Code: Select all

cmake -DBUILD_TESTING=OFF -DWITH_EXAMPLES=OFF -DCMAKE_POSITION_INDEPENDENT_CODE=ON -DBUILD_SHARED_LIBS=ON -DWITH_OTLP_HTTP=ON -DWITH_OTLP_GRPC=ON -DWITH_ABI_VERSION_1=OFF -DWITH_ABI_VERSION_2=ON -DWITH_STL=ON -DCMAKE_CXX_STANDARD=17 ..
< /code>
Dies wurde erfolgreich erstellt. Die Test -App verwendet einen OTLP -GRPC -Protokoll -Exporter, und das Problem scheint zu sein, dass die Anwendung möchte, dass der erste Parameter loggerProvider :: getLogger opentelemetry :: v2 :: nostd :: string_view ist, während libopentelemetry_logs (Siehe Make und NM -Ausgabe unten) < /p>
$ make
g++ otel_test.o -L/home/mandrews/downloads/github/opentelemetry-cpp/build/exporters/otlp -lopentelemetry_common -L/home/mandrews/downloads/github/opentelemetry-cpp/build/sdk/src/common -lopentelemetry_exporter_otlp_grpc -lopentelemetry_exporter_otlp_grpc_client -lopentelemetry_exporter_otlp_grpc_log -lopentelemetry_exporter_otlp_http_log -L/home/mandrews/downloads/github/opentelemetry-cpp/build/sdk/src/logs -lopentelemetry_logs -L/home/mandrews/downloads/github/opentelemetry-cpp/build/sdk/src/trace -lopentelemetry_trace -L/home/mandrews/downloads/github/opentelemetry-cpp/build/_deps/grpc-build/third_party/protobuf -lprotobuf  -o otel_test
/usr/bin/ld: otel_test.o: in function `main':
/home/mandrews/dev/otel_test.cpp:41: undefined reference to `opentelemetry::v2::sdk::logs::LoggerProvider::GetLogger(opentelemetry::v2::nostd::string_view, opentelemetry::v2::nostd::string_view, opentelemetry::v2::nostd::string_view, opentelemetry::v2::nostd::string_view, opentelemetry::v2::common::KeyValueIterable const&)'
collect2: error: ld returned 1 exit status
make: *** [Makefile:45: otel_test] Error 1

$ nm ./sdk/src/logs/libopentelemetry_logs.so | grep GetLogger
00000000001ff854 T _ZN13opentelemetry2v23sdk4logs14LoggerProvider9GetLoggerESt17basic_string_viewIcSt11char_traitsIcEES7_S7_S7_RKNS0_6common16KeyValueIterableE
00000000001fc8ea W _ZN13opentelemetry2v24logs18NoopLoggerProvider9GetLoggerESt17basic_string_viewIcSt11char_traitsIcEES6_S6_S6_RKNS0_6common16KeyValueIterableE
00000000002499b4 T _ZNK13opentelemetry2v23sdk4logs13LoggerContext21GetLoggerConfiguratorEv
< /code>
Wie hat die App die Idee bekommen, dass sie die NOSTD :: Version haben sollte?  Ich weiß nicht, wie man das behebt ... < /p>
Hier ist die Makefile: < /p>
oteldir=/home/mandrews/downloads/github/opentelemetry-cpp
otellibdir=$(oteldir)/build

appanalysisdir=$(projectdir)/app_analysis
zlibdir=$(thirdpartydir)/zlib

module_defs= -D_LINUX -DOPENTELEMETRY_ABI_VERSION_NO=2

sources=\
otel_test.cpp

objects=$(sources:.cpp=.o)

cppflags=\
-std=c++20 \
-fno-omit-frame-pointer \
-fpermissive \
-Wno-unused-local-typedefs \
$(module_defs) \
-I. \
-I$(oteldir)/ext/include \
-I$(oteldir)/api/include \
-I$(oteldir)/sdk/include \
-I$(oteldir)/exporters/otlp/include

ldflags=\
-L$(otellibdir)/exporters/otlp -lopentelemetry_common \
-L$(otellibdir)/sdk/src/common -lopentelemetry_exporter_otlp_grpc -lopentelemetry_exporter_otlp_grpc_client \
-lopentelemetry_exporter_otlp_grpc_log -lopentelemetry_exporter_otlp_http_log \
-L$(otellibdir)/sdk/src/logs -lopentelemetry_logs \
-L$(otellibdir)/sdk/src/trace -lopentelemetry_trace \
-L$(otellibdir)/_deps/grpc-build/third_party/protobuf -lprotobuf

ifeq ($(BUILD),DEBUG)
cppflags += -ggdb3 -O0 -D_DEBUG
else
cppflags += -g -Wall -O2 -DNDEBUG
endif

executable=otel_test
all: $(executable)

otel_test: $(objects)
g++ $^ $(ldflags) -o $@

%.o: %.cpp
g++ $(cppflags) -c -o $@ $<

clean:
rm -f $(objects)
rm -f $(executable)
Was tun, um erfolgreich zu kompilieren?

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post