On Wed, Mar 11, 2020 at 05:14:59PM +0100, Tobias Klauser wrote: > When compiling bpftool on a system where the /usr/include/asm symlink > doesn't exist (e.g. on an Ubuntu system without gcc-multilib installed), > the build fails with: > > CLANG skeleton/profiler.bpf.o > In file included from skeleton/profiler.bpf.c:4: > In file included from /usr/include/linux/bpf.h:11: > /usr/include/linux/types.h:5:10: fatal error: 'asm/types.h' file not found > #include <asm/types.h> > ^~~~~~~~~~~~~ > 1 error generated. I think the issue is different. profiler.bpf.c should have picked up tools/include/uapi/linux/bpf.h (instead of global from /usr/inclde) which should have included tools/include/linux/types.h (instead of /usr/include/linux/types.h) we also have a workaround for some cases: ./tools/testing/selftests/bpf/include/uapi/linux/types.h > make: *** [Makefile:123: skeleton/profiler.bpf.o] Error 1 > > In certain cases (e.g. for container builds), installing gcc-multilib > and all its dependencies - which are otherwise not needed to build > bpftool - unnecessarily increases the image size. > > Thus, fix this by adding /usr/include/$(uname -m)-linux-gnu to the > clang search path so <asm/types.h> can be found. In general perf builds fine on all sorts of distros and configs. I think bpftool should use the same includes from tools/ and skeleton too.