Skip to content

Ubuntu 22.04 install failed #61

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
namecloudz opened this issue Mar 5, 2025 · 9 comments
Open

Ubuntu 22.04 install failed #61

namecloudz opened this issue Mar 5, 2025 · 9 comments

Comments

@namecloudz
Copy link

root@filter:~/XDP-Firewall# ./install.sh --libxdp
Building LibXDP...
make -C modules/xdp-tools libxdp
make[1]: Entering directory '/root/XDP-Firewall/modules/xdp-tools'

lib

libxdp
make[1]: Leaving directory '/root/XDP-Firewall/modules/xdp-tools'
Installing LibXDP...
make -C modules/xdp-tools/lib/libbpf/src install
make[1]: Entering directory '/root/XDP-Firewall/modules/xdp-tools/lib/libbpf/src'
INSTALL bpf.h libbpf.h btf.h libbpf_common.h libbpf_legacy.h bpf_helpers.h bpf_helper_defs.h bpf_tracing.h bpf_endian.h bpf_core_read.h skel_internal.h libbpf_version.h usdt.bpf.h
INSTALL ./libbpf.pc
INSTALL ./libbpf.a ./libbpf.so ./libbpf.so.1 ./libbpf.so.1.5.0
make[1]: Leaving directory '/root/XDP-Firewall/modules/xdp-tools/lib/libbpf/src'
make -C modules/xdp-tools/lib/libxdp install
make[1]: Entering directory '/root/XDP-Firewall/modules/xdp-tools/lib/libxdp'
make[1]: Leaving directory '/root/XDP-Firewall/modules/xdp-tools/lib/libxdp'
Building tool...
clang -I src -I /usr/include -I /usr/local/include -I modules/xdp-tools/headers -I modules/xdp-tools/lib/libbpf/src -O2 -g -D__LIBXDP_STATIC__ -c -o build/loader/config.o src/loader/utils/config.c
clang -I src -I /usr/include -I /usr/local/include -I modules/xdp-tools/headers -I modules/xdp-tools/lib/libbpf/src -O2 -g -D__LIBXDP_STATIC__ -c -o build/loader/cmdline.o src/loader/utils/cmdline.c
clang -I src -I /usr/include -I /usr/local/include -I modules/xdp-tools/headers -I modules/xdp-tools/lib/libbpf/src -O2 -g -D__LIBXDP_STATIC__ -c -o build/loader/helpers.o src/loader/utils/helpers.c
clang -I src -I /usr/include -I /usr/local/include -I modules/xdp-tools/headers -I modules/xdp-tools/lib/libbpf/src -O2 -g -D__LIBXDP_STATIC__ -c -o build/loader/xdp.o src/loader/utils/xdp.c
clang -I src -I /usr/include -I /usr/local/include -I modules/xdp-tools/headers -I modules/xdp-tools/lib/libbpf/src -O2 -g -D__LIBXDP_STATIC__ -c -o build/loader/logging.o src/loader/utils/logging.c
clang -I src -I /usr/include -I /usr/local/include -I modules/xdp-tools/headers -I modules/xdp-tools/lib/libbpf/src -O2 -g -D__LIBXDP_STATIC__ -c -o build/loader/stats.o src/loader/utils/stats.c
clang -I src -I /usr/include -I /usr/local/include -I modules/xdp-tools/headers -I modules/xdp-tools/lib/libbpf/src -O2 -g -D__LIBXDP_STATIC__ -lconfig -lelf -lz -o build/loader/xdpfw modules/xdp-tools/lib/libbpf/src/staticobjs/bpf.o modules/xdp-tools/lib/libbpf/src/staticobjs/bpf_prog_linfo.o modules/xdp-tools/lib/libbpf/src/staticobjs/btf_dump.o modules/xdp-tools/lib/libbpf/src/staticobjs/btf_iter.o modules/xdp-tools/lib/libbpf/src/staticobjs/btf.o modules/xdp-tools/lib/libbpf/src/staticobjs/btf_relocate.o modules/xdp-tools/lib/libbpf/src/staticobjs/elf.o modules/xdp-tools/lib/libbpf/src/staticobjs/features.o modules/xdp-tools/lib/libbpf/src/staticobjs/gen_loader.o modules/xdp-tools/lib/libbpf/src/staticobjs/hashmap.o modules/xdp-tools/lib/libbpf/src/staticobjs/libbpf_errno.o modules/xdp-tools/lib/libbpf/src/staticobjs/libbpf.o modules/xdp-tools/lib/libbpf/src/staticobjs/libbpf_probes.o modules/xdp-tools/lib/libbpf/src/staticobjs/linker.o modules/xdp-tools/lib/libbpf/src/staticobjs/netlink.o modules/xdp-tools/lib/libbpf/src/staticobjs/nlattr.o modules/xdp-tools/lib/libbpf/src/staticobjs/relo_core.o modules/xdp-tools/lib/libbpf/src/staticobjs/ringbuf.o modules/xdp-tools/lib/libbpf/src/staticobjs/str_error.o modules/xdp-tools/lib/libbpf/src/staticobjs/strset.o modules/xdp-tools/lib/libbpf/src/staticobjs/usdt.o modules/xdp-tools/lib/libbpf/src/staticobjs/zip.o modules/xdp-tools/lib/libxdp/sharedobjs/libxdp.o modules/xdp-tools/lib/libxdp/sharedobjs/xsk.o build/loader/config.o build/loader/cmdline.o build/loader/xdp.o build/loader/logging.o build/loader/stats.o build/loader/helpers.o src/loader/prog.c
/usr/bin/ld: modules/xdp-tools/lib/libxdp/sharedobjs/libxdp.o: in function bpf_program__insn_cnt': /root/XDP-Firewall/modules/xdp-tools/lib/libxdp/libxdp.c:310: undefined reference to bpf_program__size'
/usr/bin/ld: /root/XDP-Firewall/modules/xdp-tools/lib/libxdp/libxdp.c:310: undefined reference to bpf_program__size' /usr/bin/ld: modules/xdp-tools/lib/libxdp/sharedobjs/libxdp.o: in function xdp_get_ifindex_prog_id':
/root/XDP-Firewall/modules/xdp-tools/lib/libxdp/libxdp.c:2534: undefined reference to bpf_get_link_xdp_info' /usr/bin/ld: modules/xdp-tools/lib/libxdp/sharedobjs/libxdp.o: in function btf__type_cnt':
/root/XDP-Firewall/modules/xdp-tools/lib/libxdp/libxdp.c:284: undefined reference to btf__get_nr_types' /usr/bin/ld: modules/xdp-tools/lib/libxdp/sharedobjs/libxdp.o: in function do_xdp_attach':
/root/XDP-Firewall/modules/xdp-tools/lib/libxdp/libxdp.c:565: undefined reference to bpf_set_link_xdp_fd_opts' /usr/bin/ld: /root/XDP-Firewall/modules/xdp-tools/lib/libxdp/libxdp.c:565: undefined reference to bpf_set_link_xdp_fd_opts'
/usr/bin/ld: modules/xdp-tools/lib/libxdp/sharedobjs/libxdp.o: in function btf__type_cnt': /root/XDP-Firewall/modules/xdp-tools/lib/libxdp/libxdp.c:284: undefined reference to btf__get_nr_types'
/usr/bin/ld: modules/xdp-tools/lib/libxdp/sharedobjs/libxdp.o: in function bpf_program_by_section_name': /root/XDP-Firewall/modules/xdp-tools/lib/libxdp/libxdp.c:344: undefined reference to bpf_program__next'
/usr/bin/ld: /root/XDP-Firewall/modules/xdp-tools/lib/libxdp/libxdp.c:344: undefined reference to bpf_program__next' /usr/bin/ld: modules/xdp-tools/lib/libxdp/sharedobjs/libxdp.o: in function bpf_object__next_program':
/root/XDP-Firewall/modules/xdp-tools/lib/libxdp/libxdp.c:300: undefined reference to bpf_program__next' /usr/bin/ld: modules/xdp-tools/lib/libxdp/sharedobjs/libxdp.o: in function bpf_object__next_map':
/root/XDP-Firewall/modules/xdp-tools/lib/libxdp/libxdp.c:292: undefined reference to bpf_map__next' /usr/bin/ld: modules/xdp-tools/lib/libxdp/sharedobjs/libxdp.o: in function xdp_program__attach_hw':
/root/XDP-Firewall/modules/xdp-tools/lib/libxdp/libxdp.c:1749: undefined reference to bpf_map__next' /usr/bin/ld: /root/XDP-Firewall/modules/xdp-tools/lib/libxdp/libxdp.c:1749: undefined reference to bpf_map__next'
/usr/bin/ld: modules/xdp-tools/lib/libxdp/sharedobjs/xsk.o: in function bpf_map_create': /root/XDP-Firewall/modules/xdp-tools/lib/libxdp/xsk.c:667: undefined reference to bpf_create_map_xattr'
/usr/bin/ld: modules/xdp-tools/lib/libxdp/sharedobjs/xsk.o: in function xsk_check_create_prog': /root/XDP-Firewall/modules/xdp-tools/lib/libxdp/xsk.c:680: undefined reference to bpf_load_program_xattr'
clang: error: linker command failed with exit code 1 (use -v to see invocation)
make: *** [Makefile:134: loader] Error 1
Installing tool...
mkdir -p /etc/xdpfw
cp -n xdpfw.conf.example /etc/xdpfw/xdpfw.conf
cp -n other/xdpfw.service /etc/systemd/system/
cp -f build/loader/xdpfw /usr/bin
cp: cannot stat 'build/loader/xdpfw': No such file or directory
make: *** [Makefile:195: install] Error 1

@gamemann
Copy link
Owner

gamemann commented Mar 5, 2025

Hey, can you make sure the LibBPF sub-module in XDP Tools is up-to-date? You can try something like this:

cd modules/xdp-tools/lib/libbpf
git pull origin master

@namecloudz
Copy link
Author

namecloudz commented Mar 5, 2025

i have use command git clone --recursive https://github.com/gamemann/XDP-Firewall.git and now i try use update

cd modules/xdp-tools/lib/libbpf
git pull origin master

same error

/usr/bin/ld: modules/xdp-tools/lib/libxdp/sharedobjs/libxdp.o: in function bpf_program__insn_cnt': /root/XDP-Firewall/modules/xdp-tools/lib/libxdp/libxdp.c:310: undefined reference to bpf_program__size'
/usr/bin/ld: /root/XDP-Firewall/modules/xdp-tools/lib/libxdp/libxdp.c:310: undefined reference to bpf_program__size' /usr/bin/ld: modules/xdp-tools/lib/libxdp/sharedobjs/libxdp.o: in function xdp_get_ifindex_prog_id':
/root/XDP-Firewall/modules/xdp-tools/lib/libxdp/libxdp.c:2534: undefined reference to bpf_get_link_xdp_info' /usr/bin/ld: modules/xdp-tools/lib/libxdp/sharedobjs/libxdp.o: in function btf__type_cnt':
/root/XDP-Firewall/modules/xdp-tools/lib/libxdp/libxdp.c:284: undefined reference to btf__get_nr_types' /usr/bin/ld: modules/xdp-tools/lib/libxdp/sharedobjs/libxdp.o: in function do_xdp_attach':
/root/XDP-Firewall/modules/xdp-tools/lib/libxdp/libxdp.c:565: undefined reference to bpf_set_link_xdp_fd_opts' /usr/bin/ld: /root/XDP-Firewall/modules/xdp-tools/lib/libxdp/libxdp.c:565: undefined reference to bpf_set_link_xdp_fd_opts'
/usr/bin/ld: modules/xdp-tools/lib/libxdp/sharedobjs/libxdp.o: in function btf__type_cnt': /root/XDP-Firewall/modules/xdp-tools/lib/libxdp/libxdp.c:284: undefined reference to btf__get_nr_types'
/usr/bin/ld: modules/xdp-tools/lib/libxdp/sharedobjs/libxdp.o: in function bpf_program_by_section_name': /root/XDP-Firewall/modules/xdp-tools/lib/libxdp/libxdp.c:344: undefined reference to bpf_program__next'
/usr/bin/ld: /root/XDP-Firewall/modules/xdp-tools/lib/libxdp/libxdp.c:344: undefined reference to bpf_program__next' /usr/bin/ld: modules/xdp-tools/lib/libxdp/sharedobjs/libxdp.o: in function bpf_object__next_program':
/root/XDP-Firewall/modules/xdp-tools/lib/libxdp/libxdp.c:300: undefined reference to bpf_program__next' /usr/bin/ld: modules/xdp-tools/lib/libxdp/sharedobjs/libxdp.o: in function bpf_object__next_map':
/root/XDP-Firewall/modules/xdp-tools/lib/libxdp/libxdp.c:292: undefined reference to bpf_map__next' /usr/bin/ld: modules/xdp-tools/lib/libxdp/sharedobjs/libxdp.o: in function xdp_program__attach_hw':
/root/XDP-Firewall/modules/xdp-tools/lib/libxdp/libxdp.c:1749: undefined reference to bpf_map__next' /usr/bin/ld: /root/XDP-Firewall/modules/xdp-tools/lib/libxdp/libxdp.c:1749: undefined reference to bpf_map__next'
/usr/bin/ld: modules/xdp-tools/lib/libxdp/sharedobjs/xsk.o: in function bpf_map_create': /root/XDP-Firewall/modules/xdp-tools/lib/libxdp/xsk.c:667: undefined reference to bpf_create_map_xattr'
/usr/bin/ld: modules/xdp-tools/lib/libxdp/sharedobjs/xsk.o: in function xsk_check_create_prog': /root/XDP-Firewall/modules/xdp-tools/lib/libxdp/xsk.c:680: undefined reference to bpf_load_program_xattr'
clang: error: linker command failed with exit code 1 (use -v to see invocation)
make: *** [Makefile:134: loader] Error 1
Installing tool...
mkdir -p /etc/xdpfw
cp -n xdpfw.conf.example /etc/xdpfw/xdpfw.conf
cp -n other/xdpfw.service /etc/systemd/system/
cp -f build/loader/xdpfw /usr/bin
cp: cannot stat 'build/loader/xdpfw': No such file or directory
make: *** [Makefile:195: install] Error 1

@gamemann
Copy link
Owner

gamemann commented Mar 5, 2025

That's odd, the references and functions it's complaining about are from LibBPF. I'll create an Ubuntu 22.04 VM at some point today and see if I can reproduce the issue.

In the meantime, can you try building using the --no-static option? For example:

./install.sh --libxdp --no-static

@gamemann
Copy link
Owner

gamemann commented Mar 5, 2025

I made a test Ubuntu 22.04 VM and built the firewall successfully. Here are the commands I've used (from history).

christian@x-test-ubuntu22:~/XDP-Firewall$ history
    1  sudo apt update
    2  sudo apt upgrade
    3  # Install dependencies.
    4  sudo apt install -y libconfig-dev llvm clang libelf-dev build-essential
    5  # Install dependencies for building LibXDP and LibBPF.
    6  sudo apt install -y libpcap-dev m4 gcc-multilib
    7  # You may need tools for your Linux kernel since BPFTool is required.
    8  # If this doesn't work and you still run into issues, I'd suggest building BPFTool from source (https://github.com/libbpf/bpftool).
    9  sudo apt install -y linux-tools-$(uname -r)
   10  # Clone repository via Git. Use recursive flag to download XDP Tools sub-module.
   11  git clone --recursive https://github.com/gamemann/XDP-Firewall.git
   12  # Change directory to cloned repository.
   13  cd XDP-Firewall
   14  ./install.sh --libxdp
   15* ./install.sh --libxdp
   16  sudo xdpfw

Here is the build output:

christian@x-test-ubuntu22:~/XDP-Firewall$ ./install.sh --libxdp
Building LibXDP...
make -C modules/xdp-tools libxdp
make[1]: Entering directory '/home/christian/XDP-Firewall/modules/xdp-tools'
sh configure
Found clang binary 'clang' with version 14 (from 'Ubuntu clang version 14.0.0-1ubuntu1.1')
/usr/sbin/bpftool
using /usr/lib/linux-tools/5.15.0-134-generic/bpftool v5.15.173
libbpf support: submodule v1.5.0
  perf_buffer__consume support: yes (submodule)
  btf__load_from_kernel_by_id support: yes (submodule)
  btf__type_cnt support: yes (submodule)
  bpf_object__next_map support: yes (submodule)
  bpf_object__next_program support: yes (submodule)
  bpf_program__insn_cnt support: yes (submodule)
  bpf_program__type support: yes (submodule)
  bpf_program__flags support: yes (submodule)
  bpf_program__expected_attach_type support: yes (submodule)
  bpf_map_create support: yes (submodule)
  perf_buffer__new_raw support: yes (submodule)
  bpf_xdp_attach support: yes (submodule)
  bpf_map__set_autocreate support: yes (submodule)
  bpf_prog_test_run_opts support: yes (submodule)
  bpf_xdp_query support: yes (submodule)
zlib support: yes
ELF support: yes
pcap support: yes
secure_getenv support: yes
cap-ng support: no

lib

  libbpf
    CC       libbpf/src/libbpf.a
    INSTALL  libbpf/src/libbpf.a

  libxdp
    CC       staticobjs/libxdp.o
    CC       staticobjs/xsk.o
    M4       xdp-dispatcher.c
    CLANG    xdp-dispatcher.o
    LLC      xdp-dispatcher.o
    CC       xdp-dispatcher.embed.o
    CLANG    xsk_def_xdp_prog.o
    LLC      xsk_def_xdp_prog.o
    CC       xsk_def_xdp_prog.embed.o
    CLANG    xsk_def_xdp_prog_5.3.o
    LLC      xsk_def_xdp_prog_5.3.o
    CC       xsk_def_xdp_prog_5.3.embed.o
    LINK     libxdp.a
    CC       sharedobjs/libxdp.o
    CC       sharedobjs/xsk.o
    LINK     libxdp.so.1.5.0
make[1]: Leaving directory '/home/christian/XDP-Firewall/modules/xdp-tools'
Installing LibXDP...
make -C modules/xdp-tools/lib/libbpf/src install
make[1]: Entering directory '/home/christian/XDP-Firewall/modules/xdp-tools/lib/libbpf/src'
  INSTALL  bpf.h libbpf.h btf.h libbpf_common.h libbpf_legacy.h bpf_helpers.h bpf_helper_defs.h bpf_tracing.h bpf_endian.h bpf_core_read.h skel_internal.h libbpf_version.h usdt.bpf.h
  INSTALL  ./libbpf.pc
  INSTALL  ./libbpf.a ./libbpf.so ./libbpf.so.1 ./libbpf.so.1.5.0
make[1]: Leaving directory '/home/christian/XDP-Firewall/modules/xdp-tools/lib/libbpf/src'
make -C modules/xdp-tools/lib/libxdp install
make[1]: Entering directory '/home/christian/XDP-Firewall/modules/xdp-tools/lib/libxdp'
make[1]: Leaving directory '/home/christian/XDP-Firewall/modules/xdp-tools/lib/libxdp'
Building tool...
clang -I src -I /usr/include -I /usr/local/include -I modules/xdp-tools/headers -I modules/xdp-tools/lib/libbpf/src -O2 -g -D__LIBXDP_STATIC__ -c -o build/loader/config.o src/loader/utils/config.c
clang -I src -I /usr/include -I /usr/local/include -I modules/xdp-tools/headers -I modules/xdp-tools/lib/libbpf/src -O2 -g -D__LIBXDP_STATIC__ -c -o build/loader/cmdline.o src/loader/utils/cmdline.c
clang -I src -I /usr/include -I /usr/local/include -I modules/xdp-tools/headers -I modules/xdp-tools/lib/libbpf/src -O2 -g -D__LIBXDP_STATIC__ -c -o build/loader/helpers.o src/loader/utils/helpers.c
clang -I src -I /usr/include -I /usr/local/include -I modules/xdp-tools/headers -I modules/xdp-tools/lib/libbpf/src -O2 -g -D__LIBXDP_STATIC__ -c -o build/loader/xdp.o src/loader/utils/xdp.c
clang -I src -I /usr/include -I /usr/local/include -I modules/xdp-tools/headers -I modules/xdp-tools/lib/libbpf/src -O2 -g -D__LIBXDP_STATIC__ -c -o build/loader/logging.o src/loader/utils/logging.c
clang -I src -I /usr/include -I /usr/local/include -I modules/xdp-tools/headers -I modules/xdp-tools/lib/libbpf/src -O2 -g -D__LIBXDP_STATIC__ -c -o build/loader/stats.o src/loader/utils/stats.c
clang -I src -I /usr/include -I /usr/local/include -I modules/xdp-tools/headers -I modules/xdp-tools/lib/libbpf/src -O2 -g -D__LIBXDP_STATIC__ -lconfig -lelf -lz -o build/loader/xdpfw modules/xdp-tools/lib/libbpf/src/staticobjs/bpf.o modules/xdp-tools/lib/libbpf/src/staticobjs/bpf_prog_linfo.o modules/xdp-tools/lib/libbpf/src/staticobjs/btf_dump.o modules/xdp-tools/lib/libbpf/src/staticobjs/btf_iter.o modules/xdp-tools/lib/libbpf/src/staticobjs/btf.o modules/xdp-tools/lib/libbpf/src/staticobjs/btf_relocate.o modules/xdp-tools/lib/libbpf/src/staticobjs/elf.o modules/xdp-tools/lib/libbpf/src/staticobjs/features.o modules/xdp-tools/lib/libbpf/src/staticobjs/gen_loader.o modules/xdp-tools/lib/libbpf/src/staticobjs/hashmap.o modules/xdp-tools/lib/libbpf/src/staticobjs/libbpf_errno.o modules/xdp-tools/lib/libbpf/src/staticobjs/libbpf.o modules/xdp-tools/lib/libbpf/src/staticobjs/libbpf_probes.o modules/xdp-tools/lib/libbpf/src/staticobjs/linker.o modules/xdp-tools/lib/libbpf/src/staticobjs/netlink.o modules/xdp-tools/lib/libbpf/src/staticobjs/nlattr.o modules/xdp-tools/lib/libbpf/src/staticobjs/relo_core.o modules/xdp-tools/lib/libbpf/src/staticobjs/ringbuf.o modules/xdp-tools/lib/libbpf/src/staticobjs/str_error.o modules/xdp-tools/lib/libbpf/src/staticobjs/strset.o modules/xdp-tools/lib/libbpf/src/staticobjs/usdt.o modules/xdp-tools/lib/libbpf/src/staticobjs/zip.o modules/xdp-tools/lib/libxdp/sharedobjs/libxdp.o modules/xdp-tools/lib/libxdp/sharedobjs/xsk.o build/loader/config.o build/loader/cmdline.o build/loader/xdp.o build/loader/logging.o build/loader/stats.o build/loader/helpers.o src/loader/prog.c
clang -I src -I /usr/include -I /usr/local/include -I modules/xdp-tools/headers -I modules/xdp-tools/lib/libbpf/src -O2 -g -D__LIBXDP_STATIC__ -target bpf -c -o build/xdp/xdp_prog.o src/xdp/prog.c
clang -I src -I /usr/include -I /usr/local/include -I modules/xdp-tools/headers -I modules/xdp-tools/lib/libbpf/src -O2 -g -D__LIBXDP_STATIC__ -c -o build/rule_add/cmdline.o src/rule_add/utils/cmdline.c
clang -I src -I /usr/include -I /usr/local/include -I modules/xdp-tools/headers -I modules/xdp-tools/lib/libbpf/src -O2 -g -D__LIBXDP_STATIC__ -lconfig -lelf -lz -o build/rule_add/xdpfw-add modules/xdp-tools/lib/libbpf/src/staticobjs/bpf.o modules/xdp-tools/lib/libbpf/src/staticobjs/bpf_prog_linfo.o modules/xdp-tools/lib/libbpf/src/staticobjs/btf_dump.o modules/xdp-tools/lib/libbpf/src/staticobjs/btf_iter.o modules/xdp-tools/lib/libbpf/src/staticobjs/btf.o modules/xdp-tools/lib/libbpf/src/staticobjs/btf_relocate.o modules/xdp-tools/lib/libbpf/src/staticobjs/elf.o modules/xdp-tools/lib/libbpf/src/staticobjs/features.o modules/xdp-tools/lib/libbpf/src/staticobjs/gen_loader.o modules/xdp-tools/lib/libbpf/src/staticobjs/hashmap.o modules/xdp-tools/lib/libbpf/src/staticobjs/libbpf_errno.o modules/xdp-tools/lib/libbpf/src/staticobjs/libbpf.o modules/xdp-tools/lib/libbpf/src/staticobjs/libbpf_probes.o modules/xdp-tools/lib/libbpf/src/staticobjs/linker.o modules/xdp-tools/lib/libbpf/src/staticobjs/netlink.o modules/xdp-tools/lib/libbpf/src/staticobjs/nlattr.o modules/xdp-tools/lib/libbpf/src/staticobjs/relo_core.o modules/xdp-tools/lib/libbpf/src/staticobjs/ringbuf.o modules/xdp-tools/lib/libbpf/src/staticobjs/str_error.o modules/xdp-tools/lib/libbpf/src/staticobjs/strset.o modules/xdp-tools/lib/libbpf/src/staticobjs/usdt.o modules/xdp-tools/lib/libbpf/src/staticobjs/zip.o modules/xdp-tools/lib/libxdp/sharedobjs/libxdp.o modules/xdp-tools/lib/libxdp/sharedobjs/xsk.o build/loader/config.o build/loader/xdp.o build/loader/logging.o build/loader/helpers.o build/rule_add/cmdline.o src/rule_add/prog.c
clang -I src -I /usr/include -I /usr/local/include -I modules/xdp-tools/headers -I modules/xdp-tools/lib/libbpf/src -O2 -g -D__LIBXDP_STATIC__ -c -o build/rule_del/cmdline.o src/rule_del/utils/cmdline.c
clang -I src -I /usr/include -I /usr/local/include -I modules/xdp-tools/headers -I modules/xdp-tools/lib/libbpf/src -O2 -g -D__LIBXDP_STATIC__ -lconfig -lelf -lz -o build/rule_del/xdpfw-del modules/xdp-tools/lib/libbpf/src/staticobjs/bpf.o modules/xdp-tools/lib/libbpf/src/staticobjs/bpf_prog_linfo.o modules/xdp-tools/lib/libbpf/src/staticobjs/btf_dump.o modules/xdp-tools/lib/libbpf/src/staticobjs/btf_iter.o modules/xdp-tools/lib/libbpf/src/staticobjs/btf.o modules/xdp-tools/lib/libbpf/src/staticobjs/btf_relocate.o modules/xdp-tools/lib/libbpf/src/staticobjs/elf.o modules/xdp-tools/lib/libbpf/src/staticobjs/features.o modules/xdp-tools/lib/libbpf/src/staticobjs/gen_loader.o modules/xdp-tools/lib/libbpf/src/staticobjs/hashmap.o modules/xdp-tools/lib/libbpf/src/staticobjs/libbpf_errno.o modules/xdp-tools/lib/libbpf/src/staticobjs/libbpf.o modules/xdp-tools/lib/libbpf/src/staticobjs/libbpf_probes.o modules/xdp-tools/lib/libbpf/src/staticobjs/linker.o modules/xdp-tools/lib/libbpf/src/staticobjs/netlink.o modules/xdp-tools/lib/libbpf/src/staticobjs/nlattr.o modules/xdp-tools/lib/libbpf/src/staticobjs/relo_core.o modules/xdp-tools/lib/libbpf/src/staticobjs/ringbuf.o modules/xdp-tools/lib/libbpf/src/staticobjs/str_error.o modules/xdp-tools/lib/libbpf/src/staticobjs/strset.o modules/xdp-tools/lib/libbpf/src/staticobjs/usdt.o modules/xdp-tools/lib/libbpf/src/staticobjs/zip.o modules/xdp-tools/lib/libxdp/sharedobjs/libxdp.o modules/xdp-tools/lib/libxdp/sharedobjs/xsk.o build/loader/config.o build/loader/xdp.o build/loader/logging.o build/loader/helpers.o build/rule_del/cmdline.o src/rule_del/prog.c
Installing tool...
mkdir -p /etc/xdpfw
cp -n xdpfw.conf.example /etc/xdpfw/xdpfw.conf
cp -n other/xdpfw.service /etc/systemd/system/
cp -f build/loader/xdpfw /usr/bin
cp -f build/rule_add/xdpfw-add /usr/bin
cp -f build/rule_del/xdpfw-del /usr/bin
cp -f build/xdp/xdp_prog.o /etc/xdpfw

The firewall runs as well.

In your case, I still recommend trying the --no-static option to see if that makes a difference. If that does build successfully, you will most likely need to set the LD_LIBRARY_PATH when running the firewall like below. This is what I had to do on the Ubuntu 22.04 test VM.

sudo LD_LIBRARY_PATH=/usr/local/lib:/usr/lib64 xdpfw

If things still fail, can you provide the output of the commands below?

# Linux kernel version
uname -r

# Clang version
clang -v

# Release information.
cat /etc/*-release

Here's the output on my test VM for future reference.

christian@x-test-ubuntu22:~/XDP-Firewall$ uname -r
5.15.0-134-generic

christian@x-test-ubuntu22:~/XDP-Firewall$ clang -v
Ubuntu clang version 14.0.0-1ubuntu1.1
Target: x86_64-pc-linux-gnu
Thread model: posix
InstalledDir: /usr/bin
Found candidate GCC installation: /usr/bin/../lib/gcc/x86_64-linux-gnu/11
Selected GCC installation: /usr/bin/../lib/gcc/x86_64-linux-gnu/11
Candidate multilib: .;@m64
Candidate multilib: 32;@m32
Candidate multilib: x32;@mx32
Selected multilib: .;@m64

christian@x-test-ubuntu22:~/XDP-Firewall$ cat /etc/*-release
DISTRIB_ID=Ubuntu
DISTRIB_RELEASE=22.04
DISTRIB_CODENAME=jammy
DISTRIB_DESCRIPTION="Ubuntu 22.04.5 LTS"
PRETTY_NAME="Ubuntu 22.04.5 LTS"
NAME="Ubuntu"
VERSION_ID="22.04"
VERSION="22.04.5 LTS (Jammy Jellyfish)"
VERSION_CODENAME=jammy
ID=ubuntu
ID_LIKE=debian
HOME_URL="https://www.ubuntu.com/"
SUPPORT_URL="https://help.ubuntu.com/"
BUG_REPORT_URL="https://bugs.launchpad.net/ubuntu/"
PRIVACY_POLICY_URL="https://www.ubuntu.com/legal/terms-and-policies/privacy-policy"
UBUNTU_CODENAME=jammy

@namecloudz
Copy link
Author

root@filter:~/XDP-Firewall# uname -r

5.15.0-130-generic

root@filter:~/XDP-Firewall# clang -v

Ubuntu clang version 14.0.0-1ubuntu1.1
Target: x86_64-pc-linux-gnu
Thread model: posix
InstalledDir: /usr/bin
Found candidate GCC installation: /usr/bin/../lib/gcc/x86_64-linux-gnu/11
Found candidate GCC installation: /usr/bin/../lib/gcc/x86_64-linux-gnu/12
Selected GCC installation: /usr/bin/../lib/gcc/x86_64-linux-gnu/12
Candidate multilib: .;@m64
Selected multilib: .;@m64

root@filter:~/XDP-Firewall# cat /etc/*-release

DISTRIB_ID=Ubuntu
DISTRIB_RELEASE=22.04
DISTRIB_CODENAME=jammy
DISTRIB_DESCRIPTION="Ubuntu 22.04.5 LTS"
PRETTY_NAME="Ubuntu 22.04.5 LTS"
NAME="Ubuntu"
VERSION_ID="22.04"
VERSION="22.04.5 LTS (Jammy Jellyfish)"
VERSION_CODENAME=jammy
ID=ubuntu
ID_LIKE=debian
HOME_URL="https://www.ubuntu.com/"
SUPPORT_URL="https://help.ubuntu.com/"
BUG_REPORT_URL="https://bugs.launchpad.net/ubuntu/"
PRIVACY_POLICY_URL="https://www.ubuntu.com/legal/terms-and-policies/privacy-policy"
UBUNTU_CODENAME=jammy

@namecloudz
Copy link
Author

root@filter:~/XDP-Firewall# ./install.sh --libxdp --no-static
Building LibXDP...
make -C modules/xdp-tools libxdp
make[1]: Entering directory '/root/XDP-Firewall/modules/xdp-tools'

lib

libxdp
make[1]: Leaving directory '/root/XDP-Firewall/modules/xdp-tools'
Installing LibXDP...
make -C modules/xdp-tools/lib/libbpf/src install
make[1]: Entering directory '/root/XDP-Firewall/modules/xdp-tools/lib/libbpf/src'
INSTALL bpf.h libbpf.h btf.h libbpf_common.h libbpf_legacy.h bpf_helpers.h bpf_helper_defs.h bpf_tracing.h bpf_endian.h bpf_core_read.h skel_internal.h libbpf_version.h usdt.bpf.h
INSTALL ./libbpf.pc
INSTALL ./libbpf.a ./libbpf.so ./libbpf.so.1 ./libbpf.so.1.6.0
make[1]: Leaving directory '/root/XDP-Firewall/modules/xdp-tools/lib/libbpf/src'
make -C modules/xdp-tools/lib/libxdp install
make[1]: Entering directory '/root/XDP-Firewall/modules/xdp-tools/lib/libxdp'
make[1]: Leaving directory '/root/XDP-Firewall/modules/xdp-tools/lib/libxdp'
Building tool...
clang -I src -I /usr/include -I /usr/local/include -O2 -g -c -o build/loader/config.o src/loader/utils/config.c
clang -I src -I /usr/include -I /usr/local/include -O2 -g -c -o build/loader/cmdline.o src/loader/utils/cmdline.c
clang -I src -I /usr/include -I /usr/local/include -O2 -g -c -o build/loader/helpers.o src/loader/utils/helpers.c
clang -I src -I /usr/include -I /usr/local/include -O2 -g -c -o build/loader/xdp.o src/loader/utils/xdp.c
clang -I src -I /usr/include -I /usr/local/include -O2 -g -c -o build/loader/logging.o src/loader/utils/logging.c
clang -I src -I /usr/include -I /usr/local/include -O2 -g -c -o build/loader/stats.o src/loader/utils/stats.c
clang -I src -I /usr/include -I /usr/local/include -O2 -g -lconfig -lelf -lz -lbpf -lxdp -o build/loader/xdpfw build/loader/config.o build/loader/cmdline.o build/loader/xdp.o build/loader/logging.o build/loader/stats.o build/loader/helpers.o src/loader/prog.c
/usr/bin/ld: warning: libbpf.so.0, needed by /usr/local/lib/libxdp.so, may conflict with libbpf.so.1
clang -I src -I /usr/include -I /usr/local/include -O2 -g -target bpf -c -o build/xdp/xdp_prog.o src/xdp/prog.c
clang -I src -I /usr/include -I /usr/local/include -O2 -g -c -o build/rule_add/cmdline.o src/rule_add/utils/cmdline.c
clang -I src -I /usr/include -I /usr/local/include -O2 -g -lconfig -lelf -lz -lbpf -lxdp -o build/rule_add/xdpfw-add build/loader/config.o build/loader/xdp.o build/loader/logging.o build/loader/helpers.o build/rule_add/cmdline.o src/rule_add/prog.c
/usr/bin/ld: warning: libbpf.so.0, needed by /usr/local/lib/libxdp.so, may conflict with libbpf.so.1
clang -I src -I /usr/include -I /usr/local/include -O2 -g -c -o build/rule_del/cmdline.o src/rule_del/utils/cmdline.c
clang -I src -I /usr/include -I /usr/local/include -O2 -g -lconfig -lelf -lz -lbpf -lxdp -o build/rule_del/xdpfw-del build/loader/config.o build/loader/xdp.o build/loader/logging.o build/loader/helpers.o build/rule_del/cmdline.o src/rule_del/prog.c
/usr/bin/ld: warning: libbpf.so.0, needed by /usr/local/lib/libxdp.so, may conflict with libbpf.so.1
Installing tool...
mkdir -p /etc/xdpfw
cp -n xdpfw.conf.example /etc/xdpfw/xdpfw.conf
cp -n other/xdpfw.service /etc/systemd/system/
cp -f build/loader/xdpfw /usr/bin
cp -f build/rule_add/xdpfw-add /usr/bin
cp -f build/rule_del/xdpfw-del /usr/bin
cp -f build/xdp/xdp_prog.o /etc/xdpfw

and without no-static

root@filter:~/XDP-Firewall# ./install.sh --libxdp
Building LibXDP...
make -C modules/xdp-tools libxdp
make[1]: Entering directory '/root/XDP-Firewall/modules/xdp-tools'

lib

libxdp
make[1]: Leaving directory '/root/XDP-Firewall/modules/xdp-tools'
Installing LibXDP...
make -C modules/xdp-tools/lib/libbpf/src install
make[1]: Entering directory '/root/XDP-Firewall/modules/xdp-tools/lib/libbpf/src'
INSTALL bpf.h libbpf.h btf.h libbpf_common.h libbpf_legacy.h bpf_helpers.h bpf_helper_defs.h bpf_tracing.h bpf_endian.h bpf_core_read.h skel_internal.h libbpf_version.h usdt.bpf.h
INSTALL ./libbpf.pc
INSTALL ./libbpf.a ./libbpf.so ./libbpf.so.1 ./libbpf.so.1.6.0
make[1]: Leaving directory '/root/XDP-Firewall/modules/xdp-tools/lib/libbpf/src'
make -C modules/xdp-tools/lib/libxdp install
make[1]: Entering directory '/root/XDP-Firewall/modules/xdp-tools/lib/libxdp'
make[1]: Leaving directory '/root/XDP-Firewall/modules/xdp-tools/lib/libxdp'
Building tool...
clang -I src -I /usr/include -I /usr/local/include -I modules/xdp-tools/headers -I modules/xdp-tools/lib/libbpf/src -O2 -g -D__LIBXDP_STATIC__ -c -o build/loader/config.o src/loader/utils/config.c
clang -I src -I /usr/include -I /usr/local/include -I modules/xdp-tools/headers -I modules/xdp-tools/lib/libbpf/src -O2 -g -D__LIBXDP_STATIC__ -c -o build/loader/cmdline.o src/loader/utils/cmdline.c
clang -I src -I /usr/include -I /usr/local/include -I modules/xdp-tools/headers -I modules/xdp-tools/lib/libbpf/src -O2 -g -D__LIBXDP_STATIC__ -c -o build/loader/helpers.o src/loader/utils/helpers.c
clang -I src -I /usr/include -I /usr/local/include -I modules/xdp-tools/headers -I modules/xdp-tools/lib/libbpf/src -O2 -g -D__LIBXDP_STATIC__ -c -o build/loader/xdp.o src/loader/utils/xdp.c
clang -I src -I /usr/include -I /usr/local/include -I modules/xdp-tools/headers -I modules/xdp-tools/lib/libbpf/src -O2 -g -D__LIBXDP_STATIC__ -c -o build/loader/logging.o src/loader/utils/logging.c
clang -I src -I /usr/include -I /usr/local/include -I modules/xdp-tools/headers -I modules/xdp-tools/lib/libbpf/src -O2 -g -D__LIBXDP_STATIC__ -c -o build/loader/stats.o src/loader/utils/stats.c
clang -I src -I /usr/include -I /usr/local/include -I modules/xdp-tools/headers -I modules/xdp-tools/lib/libbpf/src -O2 -g -D__LIBXDP_STATIC__ -lconfig -lelf -lz -o build/loader/xdpfw modules/xdp-tools/lib/libbpf/src/staticobjs/bpf.o modules/xdp-tools/lib/libbpf/src/staticobjs/bpf_prog_linfo.o modules/xdp-tools/lib/libbpf/src/staticobjs/btf_dump.o modules/xdp-tools/lib/libbpf/src/staticobjs/btf_iter.o modules/xdp-tools/lib/libbpf/src/staticobjs/btf.o modules/xdp-tools/lib/libbpf/src/staticobjs/btf_relocate.o modules/xdp-tools/lib/libbpf/src/staticobjs/elf.o modules/xdp-tools/lib/libbpf/src/staticobjs/features.o modules/xdp-tools/lib/libbpf/src/staticobjs/gen_loader.o modules/xdp-tools/lib/libbpf/src/staticobjs/hashmap.o modules/xdp-tools/lib/libbpf/src/staticobjs/libbpf_errno.o modules/xdp-tools/lib/libbpf/src/staticobjs/libbpf.o modules/xdp-tools/lib/libbpf/src/staticobjs/libbpf_probes.o modules/xdp-tools/lib/libbpf/src/staticobjs/linker.o modules/xdp-tools/lib/libbpf/src/staticobjs/netlink.o modules/xdp-tools/lib/libbpf/src/staticobjs/nlattr.o modules/xdp-tools/lib/libbpf/src/staticobjs/relo_core.o modules/xdp-tools/lib/libbpf/src/staticobjs/ringbuf.o modules/xdp-tools/lib/libbpf/src/staticobjs/str_error.o modules/xdp-tools/lib/libbpf/src/staticobjs/strset.o modules/xdp-tools/lib/libbpf/src/staticobjs/usdt.o modules/xdp-tools/lib/libbpf/src/staticobjs/zip.o modules/xdp-tools/lib/libxdp/sharedobjs/libxdp.o modules/xdp-tools/lib/libxdp/sharedobjs/xsk.o build/loader/config.o build/loader/cmdline.o build/loader/xdp.o build/loader/logging.o build/loader/stats.o build/loader/helpers.o src/loader/prog.c
/usr/bin/ld: modules/xdp-tools/lib/libxdp/sharedobjs/libxdp.o: in function bpf_program__insn_cnt': /root/XDP-Firewall/modules/xdp-tools/lib/libxdp/libxdp.c:310: undefined reference to bpf_program__size'
/usr/bin/ld: /root/XDP-Firewall/modules/xdp-tools/lib/libxdp/libxdp.c:310: undefined reference to bpf_program__size' /usr/bin/ld: modules/xdp-tools/lib/libxdp/sharedobjs/libxdp.o: in function xdp_get_ifindex_prog_id':
/root/XDP-Firewall/modules/xdp-tools/lib/libxdp/libxdp.c:2534: undefined reference to bpf_get_link_xdp_info' /usr/bin/ld: modules/xdp-tools/lib/libxdp/sharedobjs/libxdp.o: in function btf__type_cnt':
/root/XDP-Firewall/modules/xdp-tools/lib/libxdp/libxdp.c:284: undefined reference to btf__get_nr_types' /usr/bin/ld: modules/xdp-tools/lib/libxdp/sharedobjs/libxdp.o: in function do_xdp_attach':
/root/XDP-Firewall/modules/xdp-tools/lib/libxdp/libxdp.c:565: undefined reference to bpf_set_link_xdp_fd_opts' /usr/bin/ld: /root/XDP-Firewall/modules/xdp-tools/lib/libxdp/libxdp.c:565: undefined reference to bpf_set_link_xdp_fd_opts'
/usr/bin/ld: modules/xdp-tools/lib/libxdp/sharedobjs/libxdp.o: in function btf__type_cnt': /root/XDP-Firewall/modules/xdp-tools/lib/libxdp/libxdp.c:284: undefined reference to btf__get_nr_types'
/usr/bin/ld: modules/xdp-tools/lib/libxdp/sharedobjs/libxdp.o: in function bpf_program_by_section_name': /root/XDP-Firewall/modules/xdp-tools/lib/libxdp/libxdp.c:344: undefined reference to bpf_program__next'
/usr/bin/ld: /root/XDP-Firewall/modules/xdp-tools/lib/libxdp/libxdp.c:344: undefined reference to bpf_program__next' /usr/bin/ld: modules/xdp-tools/lib/libxdp/sharedobjs/libxdp.o: in function bpf_object__next_program':
/root/XDP-Firewall/modules/xdp-tools/lib/libxdp/libxdp.c:300: undefined reference to bpf_program__next' /usr/bin/ld: modules/xdp-tools/lib/libxdp/sharedobjs/libxdp.o: in function bpf_object__next_map':
/root/XDP-Firewall/modules/xdp-tools/lib/libxdp/libxdp.c:292: undefined reference to bpf_map__next' /usr/bin/ld: modules/xdp-tools/lib/libxdp/sharedobjs/libxdp.o: in function xdp_program__attach_hw':
/root/XDP-Firewall/modules/xdp-tools/lib/libxdp/libxdp.c:1749: undefined reference to bpf_map__next' /usr/bin/ld: /root/XDP-Firewall/modules/xdp-tools/lib/libxdp/libxdp.c:1749: undefined reference to bpf_map__next'
/usr/bin/ld: modules/xdp-tools/lib/libxdp/sharedobjs/xsk.o: in function bpf_map_create': /root/XDP-Firewall/modules/xdp-tools/lib/libxdp/xsk.c:667: undefined reference to bpf_create_map_xattr'
/usr/bin/ld: modules/xdp-tools/lib/libxdp/sharedobjs/xsk.o: in function xsk_check_create_prog': /root/XDP-Firewall/modules/xdp-tools/lib/libxdp/xsk.c:680: undefined reference to bpf_load_program_xattr'
clang: error: linker command failed with exit code 1 (use -v to see invocation)
make: *** [Makefile:134: loader] Error 1
Installing tool...
mkdir -p /etc/xdpfw
cp -n xdpfw.conf.example /etc/xdpfw/xdpfw.conf
cp -n other/xdpfw.service /etc/systemd/system/
cp -f build/loader/xdpfw /usr/bin
cp: cannot stat 'build/loader/xdpfw': No such file or directory
make: *** [Makefile:195: install] Error 1

@namecloudz
Copy link
Author

and update no-static

can't use all command

xdpfw: error while loading shared libraries: libbpf.so.1: cannot open shared object file: No such file or directory

@gamemann
Copy link
Owner

gamemann commented Mar 5, 2025

Hey, for the no static build, you need to set the LD_LIBRARY_PATH environmental variable. Try this:

sudo LD_LIBRARY_PATH=/usr/local/lib:/usr/lib64 xdpfw

@namecloudz
Copy link
Author

ok ./install --no-static
build libbpf from git
LD_LIBRARY_PATH=/usr/local/lib:/usr/lib64 xdpfw

it work but wait for test performance

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants