falcosecurity / libs

libsinsp, libscap, the kernel module driver, and the eBPF driver sources
https://falcosecurity.github.io/libs/
Apache License 2.0
216 stars 160 forks source link

Link failures against system grpc-1.41.0 #99

Closed mgorny closed 2 years ago

mgorny commented 2 years ago

Describe the bug

When attempting to build sinsp against system grpc, the build fails due to underlinking:

FAILED: libsinsp/examples/sinsp-example 
: && /usr/bin/c++ -Wall -ggdb -std=c++0x -O3 -fno-strict-aliasing -DNDEBUG -rdynamic libsinsp/examples/CMakeFiles/sinsp-example.dir/util.cpp.o libsinsp/examples/CMakeFiles/sinsp-example.dir/test.cpp.o -o libsinsp/examples/sinsp-example  libsinsp/libsinsp.a  libscap/libscap.a  -lelf  -lz  -lcurl  -ljsoncpp  -lcares  -ltbb  -lgrpc++  -lgrpc  -lgpr  -lprotobuf  -lcares  -ltbb  -lgrpc++  -lgrpc  -lgpr  -lprotobuf  -ljq  -Wl,-Bstatic  -lb64  -Wl,-Bdynamic  -lrt  -lanl  -lssl  -lcrypto  -ldl  -lpthread && :
/usr/lib/gcc/x86_64-pc-linux-gnu/11.2.0/../../../../x86_64-pc-linux-gnu/bin/ld: libsinsp/libsinsp.a(cri.grpc.pb.cc.o): undefined reference to symbol '_ZN4absl12lts_202103245MutexD1Ev'
/usr/lib/gcc/x86_64-pc-linux-gnu/11.2.0/../../../../x86_64-pc-linux-gnu/bin/ld: /usr/lib64/libabsl_synchronization.so.2103.0.1: error adding symbols: DSO missing from command line
collect2: error: ld returned 1 exit status

A similar problem affects sysdig, also through libsinsp.a.

How to reproduce it

git clone https://github.com/falcosecurity/libs falcolibs
mkdir falcolibs/build
cd falcolibs/build
cmake .. -G Ninja -DUSE_BUNDLED_DEPS=OFF
ninja libsinsp/examples/sinsp-example

Expected behaviour

Successful build ;-).

Environment

Additional context

grpc seems to include both pkg-config and cmake files. The pkg-config file seems to correctly list all needed libraries, find_package() would probably also work correctly.

FedeDP commented 2 years ago

Hi! Can confirm the issue! As you outlined, problem is we are not correctly linking all grpc deps libraries; i will have a look at it, as i'm looking forward to build Falco with local deps myself too ;)