Re: How to compile C++ programs with libbcc

Yonghong Song

Hi, Mauricio,

The issue is that we link the api-static library to produce the libbcc
shared library.
During the linking process, not-referenced symbols in api-static library get

I have a patch for this.
It should resolve your issue.


On Wed, Nov 22, 2017 at 6:29 AM, Mauricio Vasquez via iovisor-dev
<iovisor-dev@...> wrote:
Dear All,

I have been using libbcc with a C++ application without problems for a
while. However, when I tried this with bcc master I got some linker errors.

Even with a basic example I get the same errors:


#include <bcc/BPF.h>
#include <iostream>

const std::string BPF_PROGRAM1 = R"(
BPF_TABLE("array", int, uint64_t, myarray, 1);

int main(void) {
ebpf::BPF bpf1;
ebpf::StatusTuple res(0);

res = bpf1.init(BPF_PROGRAM1);
if (res.code() != 0) {
std::cout << "error on init " << std::endl;
return -1;


g++ test_overflow.cpp -lbcc --std=c++11

test_overflow.cpp:(.text+0x8b): undefined reference to
`ebpf::BPF::init(std::__cxx11::basic_string<char, std::char_traits<char>,
std::allocator<char> > const&, std::vector<std::__cxx11::basic_string<char,
std::char_traits<char>, std::allocator<char> >,
std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>,
std::allocator<char> > > > const&, std::vector<ebpf::USDT,
std::allocator<ebpf::USDT> > const&)'
test_overflow.cpp:(.text+0x120): undefined reference to `ebpf::BPF::~BPF()'
test_overflow.cpp:(.text+0x185): undefined reference to `ebpf::BPF::~BPF()'

The last commit to work is
(Remove unused shared_table.h), has something changed on the compilation



iovisor-dev mailing list

Join to automatically receive all group messages.