libbpfgo
libbpfgo copied to clipboard
try to using go get but failed
I clone the main branch and install the libbpf of submodule.
// in libbpf/src/
make
sudo make install
Then I want to use libbpfgo in my go project by using go get command and failed.
$ go get github.com/aquasecurity/libbpfgo@main
# github.com/aquasecurity/libbpfgo
/usr/bin/ld: $WORK/b001/_x003.o: in function `init_ring_buf':
../../../../go/pkg/mod/github.com/aquasecurity/[email protected]/libbpfgo.go:78: undefined reference to `ring_buffer__new'
/usr/bin/ld: $WORK/b001/_x003.o: in function `init_perf_buf':
../../../../go/pkg/mod/github.com/aquasecurity/[email protected]/libbpfgo.go:94: undefined reference to `perf_buffer__new'
/usr/bin/ld: $WORK/b001/_x003.o: in function `open_bpf_object':
../../../../go/pkg/mod/github.com/aquasecurity/[email protected]/libbpfgo.go:146: undefined reference to `bpf_object__open_mem'
/usr/bin/ld: $WORK/b001/_x003.o: in function `_cgo_0b4893bce39f_C2func_bpf_map_delete_batch':
/tmp/go-build/cgo-gcc-prolog:59: undefined reference to `bpf_map_delete_batch'
/usr/bin/ld: $WORK/b001/_x003.o: in function `_cgo_0b4893bce39f_C2func_bpf_map_delete_elem':
/tmp/go-build/cgo-gcc-prolog:84: undefined reference to `bpf_map_delete_elem'
/usr/bin/ld: $WORK/b001/_x003.o: in function `_cgo_0b4893bce39f_C2func_bpf_map_get_next_key':
/tmp/go-build/cgo-gcc-prolog:110: undefined reference to `bpf_map_get_next_key'
/usr/bin/ld: $WORK/b001/_x003.o: in function `_cgo_0b4893bce39f_C2func_bpf_map_lookup_and_delete_batch':
/tmp/go-build/cgo-gcc-prolog:140: undefined reference to `bpf_map_lookup_and_delete_batch'
/usr/bin/ld: $WORK/b001/_x003.o: in function `_cgo_0b4893bce39f_C2func_bpf_map_lookup_batch':
/tmp/go-build/cgo-gcc-prolog:170: undefined reference to `bpf_map_lookup_batch'
/usr/bin/ld: $WORK/b001/_x003.o: in function `_cgo_0b4893bce39f_C2func_bpf_map_lookup_elem':
/tmp/go-build/cgo-gcc-prolog:196: undefined reference to `bpf_map_lookup_elem'
/usr/bin/ld: $WORK/b001/_x003.o: in function `_cgo_0b4893bce39f_C2func_bpf_object__find_map_by_name':
/tmp/go-build/cgo-gcc-prolog:219: undefined reference to `bpf_object__find_map_by_name'
/usr/bin/ld: $WORK/b001/_x003.o: in function `_cgo_0b4893bce39f_C2func_bpf_object__find_program_by_name':
/tmp/go-build/cgo-gcc-prolog:242: undefined reference to `bpf_object__find_program_by_name'
/usr/bin/ld: $WORK/b001/_x003.o: in function `_cgo_0b4893bce39f_C2func_bpf_object__open_file':
/tmp/go-build/cgo-gcc-prolog:265: undefined reference to `bpf_object__open_file'
/usr/bin/ld: $WORK/b001/_x003.o: in function `_cgo_0b4893bce39f_C2func_bpf_program__attach':
/tmp/go-build/cgo-gcc-prolog:287: undefined reference to `bpf_program__attach'
/usr/bin/ld: $WORK/b001/_x003.o: in function `_cgo_0b4893bce39f_C2func_bpf_program__attach_cgroup':
/tmp/go-build/cgo-gcc-prolog:311: undefined reference to `bpf_program__attach_cgroup'
/usr/bin/ld: $WORK/b001/_x003.o: in function `_cgo_0b4893bce39f_C2func_bpf_program__attach_kprobe':
/tmp/go-build/cgo-gcc-prolog:336: undefined reference to `bpf_program__attach_kprobe'
/usr/bin/ld: $WORK/b001/_x003.o: in function `_cgo_0b4893bce39f_C2func_bpf_program__attach_lsm':
/tmp/go-build/cgo-gcc-prolog:358: undefined reference to `bpf_program__attach_lsm'
/usr/bin/ld: $WORK/b001/_x003.o: in function `_cgo_0b4893bce39f_C2func_bpf_program__attach_netns':
/tmp/go-build/cgo-gcc-prolog:382: undefined reference to `bpf_program__attach_netns'
/usr/bin/ld: $WORK/b001/_x003.o: in function `_cgo_0b4893bce39f_C2func_bpf_program__attach_perf_event':
/tmp/go-build/cgo-gcc-prolog:406: undefined reference to `bpf_program__attach_perf_event'
/usr/bin/ld: $WORK/b001/_x003.o: in function `_cgo_0b4893bce39f_C2func_bpf_program__attach_raw_tracepoint':
/tmp/go-build/cgo-gcc-prolog:429: undefined reference to `bpf_program__attach_raw_tracepoint'
/usr/bin/ld: $WORK/b001/_x003.o: in function `_cgo_0b4893bce39f_C2func_bpf_program__attach_tracepoint':
/tmp/go-build/cgo-gcc-prolog:453: undefined reference to `bpf_program__attach_tracepoint'
/usr/bin/ld: $WORK/b001/_x003.o: in function `_cgo_0b4893bce39f_C2func_bpf_program__attach_uprobe':
/tmp/go-build/cgo-gcc-prolog:480: undefined reference to `bpf_program__attach_uprobe'
/usr/bin/ld: $WORK/b001/_x003.o: in function `_cgo_0b4893bce39f_C2func_bpf_program__attach_xdp':
/tmp/go-build/cgo-gcc-prolog:504: undefined reference to `bpf_program__attach_xdp'
/usr/bin/ld: $WORK/b001/_x003.o: in function `_cgo_0b4893bce39f_Cfunc_bpf_link__destroy':
/tmp/go-build/cgo-gcc-prolog:551: undefined reference to `bpf_link__destroy'
/usr/bin/ld: $WORK/b001/_x003.o: in function `_cgo_0b4893bce39f_Cfunc_bpf_link(float, double)':
/tmp/go-build/cgo-gcc-prolog:570: undefined reference to `bpf_link(float, double)'
/usr/bin/ld: $WORK/b001/_x003.o: in function `_cgo_0b4893bce39f_Cfunc_bpf_link__pin':
/tmp/go-build/cgo-gcc-prolog:590: undefined reference to `bpf_link__pin'
/usr/bin/ld: $WORK/b001/_x003.o: in function `_cgo_0b4893bce39f_Cfunc_bpf_link__unpin':
/tmp/go-build/cgo-gcc-prolog:609: undefined reference to `bpf_link__unpin'
/usr/bin/ld: $WORK/b001/_x003.o: in function `_cgo_0b4893bce39f_Cfunc_bpf_map(float, double)':
/tmp/go-build/cgo-gcc-prolog:628: undefined reference to `bpf_map(float, double)'
/usr/bin/ld: $WORK/b001/_x003.o: in function `_cgo_0b4893bce39f_Cfunc_bpf_map__is_pinned':
/tmp/go-build/cgo-gcc-prolog:647: undefined reference to `bpf_map__is_pinned'
/usr/bin/ld: $WORK/b001/_x003.o: in function `_cgo_0b4893bce39f_Cfunc_bpf_map__key_size':
/tmp/go-build/cgo-gcc-prolog:666: undefined reference to `bpf_map__key_size'
/usr/bin/ld: $WORK/b001/_x003.o: in function `_cgo_0b4893bce39f_Cfunc_bpf_map__lookup_elem':
/tmp/go-build/cgo-gcc-prolog:690: undefined reference to `bpf_map__lookup_elem'
/usr/bin/ld: $WORK/b001/_x003.o: in function `_cgo_0b4893bce39f_Cfunc_bpf_map__max_entries':
/tmp/go-build/cgo-gcc-prolog:709: undefined reference to `bpf_map__max_entries'
/usr/bin/ld: $WORK/b001/_x003.o: in function `_cgo_0b4893bce39f_Cfunc_bpf_map__name':
/tmp/go-build/cgo-gcc-prolog:727: undefined reference to `bpf_map__name'
/usr/bin/ld: $WORK/b001/_x003.o: in function `_cgo_0b4893bce39f_Cfunc_bpf_map__pin':
/tmp/go-build/cgo-gcc-prolog:747: undefined reference to `bpf_map__pin'
/usr/bin/ld: $WORK/b001/_x003.o: in function `_cgo_0b4893bce39f_Cfunc_bpf_map__pin_path':
/tmp/go-build/cgo-gcc-prolog:765: undefined reference to `bpf_map__pin_path'
/usr/bin/ld: $WORK/b001/_x003.o: in function `_cgo_0b4893bce39f_Cfunc_bpf_map__set_max_entries':
/tmp/go-build/cgo-gcc-prolog:786: undefined reference to `bpf_map__set_max_entries'
/usr/bin/ld: $WORK/b001/_x003.o: in function `_cgo_0b4893bce39f_Cfunc_bpf_map__set_pin_path':
/tmp/go-build/cgo-gcc-prolog:806: undefined reference to `bpf_map__set_pin_path'
/usr/bin/ld: $WORK/b001/_x003.o: in function `_cgo_0b4893bce39f_Cfunc_bpf_map__set_type':
/tmp/go-build/cgo-gcc-prolog:827: undefined reference to `bpf_map__set_type'
/usr/bin/ld: $WORK/b001/_x003.o: in function `_cgo_0b4893bce39f_Cfunc_bpf_map__set_value_size':
/tmp/go-build/cgo-gcc-prolog:848: undefined reference to `bpf_map__set_value_size'
/usr/bin/ld: $WORK/b001/_x003.o: in function `_cgo_0b4893bce39f_Cfunc_bpf_map__type':
/tmp/go-build/cgo-gcc-prolog:867: undefined reference to `bpf_map__type'
/usr/bin/ld: $WORK/b001/_x003.o: in function `_cgo_0b4893bce39f_Cfunc_bpf_map__unpin':
/tmp/go-build/cgo-gcc-prolog:887: undefined reference to `bpf_map__unpin'
/usr/bin/ld: $WORK/b001/_x003.o: in function `_cgo_0b4893bce39f_Cfunc_bpf_map__value_size':
/tmp/go-build/cgo-gcc-prolog:906: undefined reference to `bpf_map__value_size'
/usr/bin/ld: $WORK/b001/_x003.o: in function `_cgo_0b4893bce39f_Cfunc_bpf_map_create':
/tmp/go-build/cgo-gcc-prolog:932: undefined reference to `bpf_map_create'
/usr/bin/ld: $WORK/b001/_x003.o: in function `_cgo_0b4893bce39f_Cfunc_bpf_map_delete_batch':
/tmp/go-build/cgo-gcc-prolog:955: undefined reference to `bpf_map_delete_batch'
/usr/bin/ld: $WORK/b001/_x003.o: in function `_cgo_0b4893bce39f_Cfunc_bpf_map_delete_elem':
/tmp/go-build/cgo-gcc-prolog:976: undefined reference to `bpf_map_delete_elem'
/usr/bin/ld: $WORK/b001/_x003.o: in function `_cgo_0b4893bce39f_Cfunc_bpf_map_get_next_key':
/tmp/go-build/cgo-gcc-prolog:998: undefined reference to `bpf_map_get_next_key'
/usr/bin/ld: $WORK/b001/_x003.o: in function `_cgo_0b4893bce39f_Cfunc_bpf_map_lookup_and_delete_batch':
/tmp/go-build/cgo-gcc-prolog:1024: undefined reference to `bpf_map_lookup_and_delete_batch'
/usr/bin/ld: $WORK/b001/_x003.o: in function `_cgo_0b4893bce39f_Cfunc_bpf_map_lookup_batch':
/tmp/go-build/cgo-gcc-prolog:1050: undefined reference to `bpf_map_lookup_batch'
/usr/bin/ld: $WORK/b001/_x003.o: in function `_cgo_0b4893bce39f_Cfunc_bpf_map_lookup_elem':
/tmp/go-build/cgo-gcc-prolog:1072: undefined reference to `bpf_map_lookup_elem'
/usr/bin/ld: $WORK/b001/_x003.o: in function `_cgo_0b4893bce39f_Cfunc_bpf_map_lookup_elem_flags':
/tmp/go-build/cgo-gcc-prolog:1095: undefined reference to `bpf_map_lookup_elem_flags'
/usr/bin/ld: $WORK/b001/_x003.o: in function `_cgo_0b4893bce39f_Cfunc_bpf_map_update_batch':
/tmp/go-build/cgo-gcc-prolog:1119: undefined reference to `bpf_map_update_batch'
/usr/bin/ld: $WORK/b001/_x003.o: in function `_cgo_0b4893bce39f_Cfunc_bpf_map_update_elem':
/tmp/go-build/cgo-gcc-prolog:1142: undefined reference to `bpf_map_update_elem'
/usr/bin/ld: $WORK/b001/_x003.o: in function `_cgo_0b4893bce39f_Cfunc_bpf_object__find_map_by_name':
/tmp/go-build/cgo-gcc-prolog:1173: undefined reference to `bpf_object__find_map_by_name'
/usr/bin/ld: $WORK/b001/_x003.o: in function `_cgo_0b4893bce39f_Cfunc_bpf_object__find_program_by_name':
/tmp/go-build/cgo-gcc-prolog:1192: undefined reference to `bpf_object__find_program_by_name'
/usr/bin/ld: $WORK/b001/_x003.o: in function `_cgo_0b4893bce39f_Cfunc_bpf_object__load':
/tmp/go-build/cgo-gcc-prolog:1211: undefined reference to `bpf_object__load'
/usr/bin/ld: $WORK/b001/_x003.o: in function `_cgo_0b4893bce39f_Cfunc_bpf_object__next_map':
/tmp/go-build/cgo-gcc-prolog:1230: undefined reference to `bpf_object__next_map'
/usr/bin/ld: $WORK/b001/_x003.o: in function `_cgo_0b4893bce39f_Cfunc_bpf_object__next_program':
/tmp/go-build/cgo-gcc-prolog:1249: undefined reference to `bpf_object__next_program'
/usr/bin/ld: $WORK/b001/_x003.o: in function `_cgo_0b4893bce39f_Cfunc_bpf_object__open_file':
/tmp/go-build/cgo-gcc-prolog:1268: undefined reference to `bpf_object__open_file'
/usr/bin/ld: $WORK/b001/_x003.o: in function `_cgo_0b4893bce39f_Cfunc_bpf_program__attach':
/tmp/go-build/cgo-gcc-prolog:1330: undefined reference to `bpf_program__attach'
/usr/bin/ld: $WORK/b001/_x003.o: in function `_cgo_0b4893bce39f_Cfunc_bpf_program__attach_cgroup':
/tmp/go-build/cgo-gcc-prolog:1350: undefined reference to `bpf_program__attach_cgroup'
/usr/bin/ld: $WORK/b001/_x003.o: in function `_cgo_0b4893bce39f_Cfunc_bpf_program__attach_kprobe':
/tmp/go-build/cgo-gcc-prolog:1371: undefined reference to `bpf_program__attach_kprobe'
/usr/bin/ld: $WORK/b001/_x003.o: in function `_cgo_0b4893bce39f_Cfunc_bpf_program__attach_lsm':
/tmp/go-build/cgo-gcc-prolog:1389: undefined reference to `bpf_program__attach_lsm'
/usr/bin/ld: $WORK/b001/_x003.o: in function `_cgo_0b4893bce39f_Cfunc_bpf_program__attach_netns':
/tmp/go-build/cgo-gcc-prolog:1409: undefined reference to `bpf_program__attach_netns'
/usr/bin/ld: $WORK/b001/_x003.o: in function `_cgo_0b4893bce39f_Cfunc_bpf_program__attach_perf_event':
/tmp/go-build/cgo-gcc-prolog:1429: undefined reference to `bpf_program__attach_perf_event'
/usr/bin/ld: $WORK/b001/_x003.o: in function `_cgo_0b4893bce39f_Cfunc_bpf_program__attach_raw_tracepoint':
/tmp/go-build/cgo-gcc-prolog:1448: undefined reference to `bpf_program__attach_raw_tracepoint'
/usr/bin/ld: $WORK/b001/_x003.o: in function `_cgo_0b4893bce39f_Cfunc_bpf_program__attach_tracepoint':
/tmp/go-build/cgo-gcc-prolog:1468: undefined reference to `bpf_program__attach_tracepoint'
/usr/bin/ld: $WORK/b001/_x003.o: in function `_cgo_0b4893bce39f_Cfunc_bpf_program__attach_uprobe':
/tmp/go-build/cgo-gcc-prolog:1491: undefined reference to `bpf_program__attach_uprobe'
/usr/bin/ld: $WORK/b001/_x003.o: in function `_cgo_0b4893bce39f_Cfunc_bpf_program__attach_xdp':
/tmp/go-build/cgo-gcc-prolog:1511: undefined reference to `bpf_program__attach_xdp'
/usr/bin/ld: $WORK/b001/_x003.o: in function `_cgo_0b4893bce39f_Cfunc_bpf_program(float, double)':
/tmp/go-build/cgo-gcc-prolog:1530: undefined reference to `bpf_program(float, double)'
/usr/bin/ld: $WORK/b001/_x003.o: in function `_cgo_0b4893bce39f_Cfunc_bpf_program__name':
/tmp/go-build/cgo-gcc-prolog:1548: undefined reference to `bpf_program__name'
/usr/bin/ld: $WORK/b001/_x003.o: in function `_cgo_0b4893bce39f_Cfunc_bpf_program__pin':
/tmp/go-build/cgo-gcc-prolog:1568: undefined reference to `bpf_program__pin'
/usr/bin/ld: $WORK/b001/_x003.o: in function `_cgo_0b4893bce39f_Cfunc_bpf_program__section_name':
/tmp/go-build/cgo-gcc-prolog:1586: undefined reference to `bpf_program__section_name'
/usr/bin/ld: $WORK/b001/_x003.o: in function `_cgo_0b4893bce39f_Cfunc_bpf_program__set_attach_target':
/tmp/go-build/cgo-gcc-prolog:1608: undefined reference to `bpf_program__set_attach_target'
/usr/bin/ld: $WORK/b001/_x003.o: in function `_cgo_0b4893bce39f_Cfunc_bpf_program__set_autoload':
/tmp/go-build/cgo-gcc-prolog:1629: undefined reference to `bpf_program__set_autoload'
/usr/bin/ld: $WORK/b001/_x003.o: in function `_cgo_0b4893bce39f_Cfunc_bpf_program__set_expected_attach_type':
/tmp/go-build/cgo-gcc-prolog:1650: undefined reference to `bpf_program__set_expected_attach_type'
/usr/bin/ld: $WORK/b001/_x003.o: in function `_cgo_0b4893bce39f_Cfunc_bpf_program__set_type':
/tmp/go-build/cgo-gcc-prolog:1671: undefined reference to `bpf_program__set_type'
/usr/bin/ld: $WORK/b001/_x003.o: in function `_cgo_0b4893bce39f_Cfunc_bpf_program__type':
/tmp/go-build/cgo-gcc-prolog:1690: undefined reference to `bpf_program__type'
/usr/bin/ld: $WORK/b001/_x003.o: in function `_cgo_0b4893bce39f_Cfunc_bpf_program__unpin':
/tmp/go-build/cgo-gcc-prolog:1710: undefined reference to `bpf_program__unpin'
/usr/bin/ld: $WORK/b001/_x003.o: in function `_cgo_0b4893bce39f_Cfunc_bpf_tc_attach':
/tmp/go-build/cgo-gcc-prolog:1730: undefined reference to `bpf_tc_attach'
/usr/bin/ld: $WORK/b001/_x003.o: in function `_cgo_0b4893bce39f_Cfunc_bpf_tc_detach':
/tmp/go-build/cgo-gcc-prolog:1750: undefined reference to `bpf_tc_detach'
/usr/bin/ld: $WORK/b001/_x003.o: in function `_cgo_0b4893bce39f_Cfunc_bpf_tc_hook_create':
/tmp/go-build/cgo-gcc-prolog:1769: undefined reference to `bpf_tc_hook_create'
/usr/bin/ld: $WORK/b001/_x003.o: in function `_cgo_0b4893bce39f_Cfunc_bpf_tc_hook_destroy':
/tmp/go-build/cgo-gcc-prolog:1788: undefined reference to `bpf_tc_hook_destroy'
/usr/bin/ld: $WORK/b001/_x003.o: in function `_cgo_0b4893bce39f_Cfunc_bpf_tc_query':
/tmp/go-build/cgo-gcc-prolog:1808: undefined reference to `bpf_tc_query'
/usr/bin/ld: $WORK/b001/_x003.o: in function `_cgo_0b4893bce39f_Cfunc_libbpf_probe_bpf_map_type':
/tmp/go-build/cgo-gcc-prolog:1881: undefined reference to `libbpf_probe_bpf_map_type'
/usr/bin/ld: $WORK/b001/_x003.o: in function `_cgo_0b4893bce39f_Cfunc_libbpf_probe_bpf_prog_type':
/tmp/go-build/cgo-gcc-prolog:1902: undefined reference to `libbpf_probe_bpf_prog_type'
/usr/bin/ld: $WORK/b001/_x003.o: in function `_cgo_0b4893bce39f_Cfunc_libbpf_set_strict_mode':
/tmp/go-build/cgo-gcc-prolog:1922: undefined reference to `libbpf_set_strict_mode'
/usr/bin/ld: $WORK/b001/_x003.o: in function `_cgo_0b4893bce39f_Cfunc_perf_buffer__poll':
/tmp/go-build/cgo-gcc-prolog:1977: undefined reference to `perf_buffer__poll'
/usr/bin/ld: $WORK/b001/_x003.o: in function `_cgo_0b4893bce39f_Cfunc_ring_buffer__poll':
/tmp/go-build/cgo-gcc-prolog:2010: undefined reference to `ring_buffer__poll'
/usr/bin/ld: $WORK/b001/_x003.o: in function `set_print_fn':
../../../../go/pkg/mod/github.com/aquasecurity/[email protected]/libbpfgo.go:67: undefined reference to `libbpf_set_print'
/usr/bin/ld: $WORK/b001/_x003.o: in function `_cgo_0b4893bce39f_Cfunc_bpf_object__close':
/tmp/go-build/cgo-gcc-prolog:1157: undefined reference to `bpf_object__close'
/usr/bin/ld: $WORK/b001/_x003.o: in function `_cgo_0b4893bce39f_Cfunc_perf_buffer(float, long double,...)(...)':
/tmp/go-build/cgo-gcc-prolog:1959: undefined reference to `perf_buffer(float, long double,...)(...)'
/usr/bin/ld: $WORK/b001/_x003.o: in function `_cgo_0b4893bce39f_Cfunc_ring_buffer(float, long double,...)(...)':
/tmp/go-build/cgo-gcc-prolog:1992: undefined reference to `ring_buffer(float, long double,...)(...)'
collect2: error: ld returned 1 exit status
Hi @Songrui625. I would recommend to follow the make rules from the main libbpfgo Makefile.
If you want to run go get directly you should set the CGO env vars like this: https://github.com/aquasecurity/libbpfgo/blob/245a1a13132ec0afc4a1d0f53b9317464980bcb6/Makefile#L58-L61
--- EDIT:
I think this post can be helpful: How to Build eBPF Programs with libbpfgo
Thanks @geyslan. I try to make libbpfgo as a submodule of my go project now. And seems like we must use Makefile to build my own project.
Closing this. @Songrui625 anything, please let us know.