draios / sysdig

Linux system exploration and troubleshooting tool with first class support for containers
http://www.sysdig.com/
Other
7.68k stars 728 forks source link

Compilation error: “install TARGETS given target "sinsp" which does not exist in this directory.” #2051

Closed lclin56 closed 2 months ago

lclin56 commented 7 months ago

I downloaded the source code package of sysdig version 0.34.1, and I encountered an error during compilation:

cmake ..
-- Libs version: 0.13.1
-- Configuring done
-- Generating done
-- Build files have been written to: /sysdig/build/falcosecurity-libs-repo
[100%] Built target falcosecurity-libs
-- No strlcpy found, will use local definition
-- Driver version: 6.0.1+driver
-- Configuring done
-- Generating done
-- Build files have been written to: /sysdig/build/driver-repo
[100%] Built target driver
-- Kernel version: 5.4.0-152-generic
-- Driver API version 5.0.0
-- Driver schema version 2.10.0
-- No strlcpy found, will use local definition
-- No strlcat found, will use local definition
-- Using bundled zlib in '/sysdig/build/zlib-prefix/src/zlib'
-- Using bundled libelf: include'/sysdig/build/libelf-prefix/src/libelf/libelf', lib: /sysdig/build/libelf-prefix/src/libelf/libelf/libelf.a
CMake Error at build/falcosecurity-libs-repo/falcosecurity-libs-prefix/src/falcosecurity-libs/cmake/modules/libscap.cmake:102 (install):
  install TARGETS given target "scap" which does not exist in this directory.
Call Stack (most recent call first):
  cmake/modules/falcosecurity-libs.cmake:108 (include)
  CMakeLists.txt:155 (include)

-- Using bundled tbb in '/sysdig/build/tbb-prefix/src/tbb'
-- Using bundled jq in '/sysdig/build/jq-prefix/src/jq'
-- Bundled jq: include: /sysdig/build/jq-prefix/src/jq/target/include/, lib: /sysdig/build/jq-prefix/src/jq/target/lib/libjq.a
-- Using bundled c-ares in '/sysdig/build/c-ares-prefix/src/c-ares'
-- Using bundled openssl in '/sysdig/build/openssl-prefix/src/openssl'
-- Using SSL for curl in '/sysdig/build/openssl-prefix/src/openssl/target'
-- Using zlib for curl in '/sysdig/build/zlib-prefix/src/zlib'
-- Using bundled curl in '/sysdig/build/curl-prefix/src/curl'
-- Using bundled jsoncpp in '/sysdig/build/jsoncpp-prefix/src'
-- Using bundled valijson in '/sysdig/build/valijson-prefix/src/valijson'
-- Using bundled re2 in '/sysdig/build/re2-prefix/src/re2'
-- Using jsoncpp: include: /sysdig/build/jsoncpp-prefix/src/include/, lib: /sysdig/build/jsoncpp-prefix/src/lib/libjsoncpp.a
-- Using bundled LuaJIT in '/sysdig/build/luajit-prefix/src/luajit/src'
-- Using bundled tinydir in '/sysdig/build/tinydir-prefix/src/tinydir'
-- Using bundled protobuf in '/sysdig/build/protobuf-prefix/src/protobuf'
-- Using re2: include: /sysdig/build/re2-prefix/src/re2/include, lib: /sysdig/build/re2-prefix/src/re2/lib/libre2.a
-- Using bundled grpc in '/sysdig/build/grpc-prefix/src/grpc'
CMake Error at build/falcosecurity-libs-repo/falcosecurity-libs-prefix/src/falcosecurity-libs/cmake/modules/libsinsp.cmake:77 (install):
  install TARGETS given target "sinsp" which does not exist in this
  directory.
Call Stack (most recent call first):
  cmake/modules/falcosecurity-libs.cmake:109 (include)
  CMakeLists.txt:155 (include)

-- Using bundled yaml-cpp in '/sysdig/build/yaml-cpp-prefix/src/yaml-cpp'
-- Using bundled nlohmann-json in '/sysdig/build/njson-prefix/src/njson'
-- Using bundled ncurses in '/sysdig/build/ncurses-prefix/src/ncurses'
-- Using bundled tinydir in '/sysdig/build/tinydir-prefix/src/tinydir'
-- Configuring incomplete, errors occurred!
See also "/sysdig/build/CMakeFiles/CMakeOutput.log".
See also "/sysdig/build/CMakeFiles/CMakeError.log".

My system version and kernel version are as follows: Linux 5.4.0-152-generic #169~18.04.1-Ubuntu SMP Wed Jun 7 22:22:24 UTC 2023 x86_64 x86_64 x86_64 GNU/Linux

therealbobo commented 7 months ago

Hey @lclin56! Could you please share the cake commands you used? 🙂

lclin56 commented 7 months ago

Hey @therealbobo! My command is:

cd sysdig
mkdir build
cd build
cmake ..
lclin56 commented 6 months ago

I can successfully compile in Ubuntu 20.04, but the compiled result cannot run on Ubuntu 18.04 and reports the following error:

/sysdig: /lib/x86_64-linux-gnu/libm.so.6: version `GLIBC_2.29' not found (required by ./sysdig)
./sysdig: /usr/lib/x86_64-linux-gnu/libstdc++.so.6: version `GLIBCXX_3.4.26' not found (required by ./sysdig)

I have checked your released binary files, and it seems that they were also compiled with g++-9, but your binaries can run on lower versions of Linux systems (I tested on Ubuntu 16.04). Can you share some information about the compilation environment? I found that the documentation's requirements for gcc and cmake may not be very accurate; at least in my experience, I need cmake version 3.12 or higher and g++-9 or higher to compile successfully.

I built the docker image named sysdig-builder under the docker/builder directory and used this image for compilation. My compilation steps are as follows:

docker run -v $PWD/..:/source -v $PWD/build:/build sysdig/sysdig-builder cmake
docker run -v $PWD/..:/source -v $PWD/build:/build sysdig/sysdig-builder sysdig

But I also encountered compilation issues:

[  3%] Built target zlib
[  6%] Built target openssl
[  8%] Built target c-ares
[ 10%] Built target re2
[ 14%] Built target libelf
[ 16%] Built target yaml-cpp
[ 18%] Built target njson
[ 19%] Built target scap_platform_util
[ 19%] Built target driver_event_schema
[ 20%] Built target scap_error
[ 21%] Built target scap_engine_noop
[ 23%] Built target scap_engine_util
[ 26%] Built target tbb
[ 28%] Built target jq
[ 31%] Built target curl
[ 34%] Built target jsoncpp
[ 36%] Built target valijson
[ 38%] Built target luajit
[ 40%] Built target tinydir
[ 43%] Built target protobuf
[ 46%] Built target libbpf
[ 46%] Built target scap_engine_nodriver
[ 47%] Built target scap_engine_savefile
[ 49%] Built target scap_event_schema
[ 50%] Built target scap_engine_source_plugin
[ 52%] Built target scap_engine_udig
[ 52%] Built target scap_platform
[ 54%] Built target grpc
[ 56%] Built target scap_engine_bpf
[ 56%] Building C object libpman/CMakeFiles/pman.dir/src/stats.c.o
[ 56%] Built target scap_engine_kmod
[ 56%] Building C object libpman/CMakeFiles/pman.dir/src/maps.c.o
Consolidate compiler generated dependencies of target cri_v1
Consolidate compiler generated dependencies of target cri_v1alpha2
[ 57%] Built target cri_v1alpha2
[ 58%] Built target cri_v1
[ 59%] Building C object libpman/CMakeFiles/pman.dir/src/lifecycle.c.o
[ 59%] Building C object libpman/CMakeFiles/pman.dir/src/programs.c.o
In file included from /build/release/falcosecurity-libs-repo/falcosecurity-libs-prefix/src/falcosecurity-libs/userspace/libpman/src/stats.c:18:
/build/release/falcosecurity-libs-repo/falcosecurity-libs-prefix/src/falcosecurity-libs/userspace/libpman/src/state.h:23:10: fatal error: bpf_probe.skel.h: No such file or directory
   23 | #include <bpf_probe.skel.h>
      |          ^~~~~~~~~~~~~~~~~~
compilation terminated.
In file included from /build/release/falcosecurity-libs-repo/falcosecurity-libs-prefix/src/falcosecurity-libs/userspace/libpman/src/maps.c:18:
/build/release/falcosecurity-libs-repo/falcosecurity-libs-prefix/src/falcosecurity-libs/userspace/libpman/src/state.h:23:10: fatal error: bpf_probe.skel.h: No such file or directory
   23 | #include <bpf_probe.skel.h>
      |          ^~~~~~~~~~~~~~~~~~
compilation terminated.
make[3]: *** [libpman/CMakeFiles/pman.dir/src/stats.c.o] Error 1
make[3]: *** Waiting for unfinished jobs....
make[3]: *** [libpman/CMakeFiles/pman.dir/src/maps.c.o] Error 1
In file included from /build/release/falcosecurity-libs-repo/falcosecurity-libs-prefix/src/falcosecurity-libs/userspace/libpman/src/programs.c:18:
/build/release/falcosecurity-libs-repo/falcosecurity-libs-prefix/src/falcosecurity-libs/userspace/libpman/src/state.h:23:10: fatal error: bpf_probe.skel.h: No such file or directory
   23 | #include <bpf_probe.skel.h>
      |          ^~~~~~~~~~~~~~~~~~
compilation terminated.
make[3]: *** [libpman/CMakeFiles/pman.dir/src/programs.c.o] Error 1
In file included from /build/release/falcosecurity-libs-repo/falcosecurity-libs-prefix/src/falcosecurity-libs/userspace/libpman/src/lifecycle.c:18:
/build/release/falcosecurity-libs-repo/falcosecurity-libs-prefix/src/falcosecurity-libs/userspace/libpman/src/state.h:23:10: fatal error: bpf_probe.skel.h: No such file or directory
   23 | #include <bpf_probe.skel.h>
      |          ^~~~~~~~~~~~~~~~~~
compilation terminated.
make[3]: *** [libpman/CMakeFiles/pman.dir/src/lifecycle.c.o] Error 1
make[2]: *** [libpman/CMakeFiles/pman.dir/all] Error 2
make[1]: *** [userspace/sysdig/CMakeFiles/sysdig.dir/rule] Error 2
make: *** [sysdig] Error 2
therealbobo commented 6 months ago

The bpf_probe.skel.h is related to the modern probe (that doesn't support your kernel). You can just disable it doing cmake -DBUILD_SYSDIG_MODERN_BPF=OFF and you should be ok :)

github-actions[bot] commented 2 months ago

This issue has been automatically marked as stale because it has not had recent activity. It will be closed if no further activity occurs. Thank you for your contributions.