iovisor / iovisor/bcc

BPF.h:56: undefined reference to `ebpf::BPFModule::BPFModule(unsigned int , ebpf::TableStorage*, bool, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>

Open
#4,309 3 comments 0 reactions 0 assignees View on GitHub
Dominant language
C
Stars
22.7k
Forks
4.1k
Avg merge
10d 4h
Merged PRs (30d)
3

Description

```
In [16]: !/usr/bin/c++ \
...: -I/home/qgb/github/ProcMon-for-Linux/build/src \
...: -I/usr/include/bcc/compat \
...: -I/home/qgb/github/ProcMon-for-Linux/build/_deps/bcc-src/src/cc/api \
...: -I/home/qgb/github/ProcMon-for-Linux/build/_deps/bcc-src/src/cc \
...: -g -fno-omit-frame-pointer -DELPP_THREAD_SAFE -std=gnu++1z \
...: /home/qgb/github/ProcMon-for-Linux/src/storage/sqlite3_storage_engine.cpp \
...: /home/qgb/github/ProcMon-for-Linux/src/logging/easylogging++.cc \
...: /home/qgb/github/ProcMon-for-Linux/src/common/cli_utils.cpp \
...: /home/qgb/github/ProcMon-for-Linux/src/tracer/ebpf/syscall_schema.cpp \
...: /home/qgb/github/old10-ProcMon-for-Linux/build/_deps/bcc-src/src/cc/libbcc.a \
...: /home/qgb/github/old10-ProcMon-for-Linux/build/_deps/bcc-src/src/cc/libbcc_bpf.a \
...: /home/qgb/github/ProcMon-for-Linux/src/tracer/ebpf/ebpf_tracer_engine.cpp \
...: /home/qgb/github/ProcMon-for-Linux/src/configuration/procmon_configuration.cpp \
...: /home/qgb/github/ProcMon-for-Linux/src/display/screen.cpp \
...: /home/qgb/github/ProcMon-for-Linux/src/qgb.cpp \
...: -lsqlite3 -lncurses -lpthread -lelf -lbcc -lbcc_bpf;./a.out
/tmp/ccdO7FLC.o: In function `ebpf::BPF::BPF(unsigned int, ebpf::TableStorage*, bool, std::__cxx11::basic_string, std::allocator > const&, bool)':
/home/qgb/github/ProcMon-for-Linux/build/_deps/bcc-src/src/cc/api/BPF.h:56: undefined reference to `ebpf::BPFModule::BPFModule(unsigned int
, ebpf::TableStorage*, bool, std::__cxx11::basic_string, std::allocator > const&, bool, char const*)'
/tmp/ccdO7FLC.o: In function `std::experimental::filesystem::v1::__cxx11::directory_iterator::directory_iterator(std::experimental::filesys
tem::v1::__cxx11::path const&)':
/usr/include/c++/7/experimental/bits/fs_dir.h:188: undefined reference to `std::experimental::filesystem::v1::__cxx11::directory_iterator::
directory_iterator(std::experimental::filesystem::v1::__cxx11::path const&, std::experimental::filesystem::v1::directory_options, std::erro
r_code*)'
/tmp/ccdO7FLC.o: In function `SyscallSchema::Utils::CollectSyscallSchema()':
/home/qgb/github/ProcMon-for-Linux/src/tracer/ebpf/syscall_schema.h:89: undefined reference to `std::experimental::filesystem::v1::__cxx11:
:directory_iterator::operator*() const'
/home/qgb/github/ProcMon-for-Linux/src/tracer/ebpf/syscall_schema.h:89: undefined reference to `std::experimental::filesystem::v1::__cxx11:
:directory_iterator::operator++()'
/tmp/ccdO7FLC.o: In function `std::experimental::filesystem::v1::__cxx11::path::path(char const (&) [42])':
/usr/include/c++/7/experimental/bits/fs_path.h:199: undefined reference to `std::experimental::filesystem::v1::__cxx11::path::_M_split_cmpt
s()'
/tmp/ccdOuURl.o: In function `StorageProxy::IsValidStorageEngineType(std::__cxx11::basic_string, std::allocato
r >)':
/home/qgb/github/ProcMon-for-Linux/src/configuration/../storage/storage_proxy.h:29: undefined reference to `StorageProxy::storageEngineType
Map[abi:cxx11]'
/home/qgb/github/ProcMon-for-Linux/src/configuration/../storage/storage_proxy.h:30: undefined reference to `StorageProxy::storageEngineType
Map[abi:cxx11]'
/tmp/ccdOuURl.o: In function `MockStorageEngine::MockStorageEngine()':
/home/qgb/github/ProcMon-for-Linux/src/configuration/../storage/mock_storage_engine.h:19: undefined reference to `vtable for MockStorageEng
ine'
/tmp/ccdOuURl.o: In function `StorageProxy::GetStorageTypeForString(std::__cxx11::basic_string, std::allocator
>)':
/home/qgb/github/ProcMon-for-Linux/src/configuration/../storage/storage_proxy.h:56: undefined reference to `StorageProxy::storageEngineType
Map[abi:cxx11]'
/home/qgb/github/ProcMon-for-Linux/src/configuration/../storage/storage_proxy.h:57: undefined reference to `StorageProxy::storageEngineType
Map[abi:cxx11]'
/tmp/cclmxG1v.o: In function `Screen::shutdownScreen()':
/home/qgb/github/ProcMon-for-Linux/src/display/screen.cpp:582: undefined reference to `Column::~Column()'
/home/qgb/github/ProcMon-for-Linux/src/display/screen.cpp:583: undefined reference to `Column::~Column()'
/home/qgb/github/ProcMon-for-Linux/src/display/screen.cpp:584: undefined reference to `Column::~Column()'
/home/qgb/github/ProcMon-for-Linux/src/display/screen.cpp:585: undefined reference to `Column::~Column()'
/home/qgb/github/ProcMon-for-Linux/src/display/screen.cpp:586: undefined reference to `Column::~Column()'
/tmp/cclmxG1v.o:/home/qgb/github/ProcMon-for-Linux/src/display/screen.cpp:587: more undefined references to `Column::~Column()' follow
/tmp/cclmxG1v.o: In function `Screen::initHeader()':
/home/qgb/github/ProcMon-for-Linux/src/display/screen.cpp:620: undefined reference to `new_panel'
/tmp/cclmxG1v.o: In function `Screen::initFooter()':
/home/qgb/github/ProcMon-for-Linux/src/display/screen.cpp:655: undefined reference to `new_panel'
/tmp/cclmxG1v.o: In function `Screen::initTimestampColumn()':
/home/qgb/github/ProcMon-for-Linux/src/display/screen.cpp:774: undefined reference to `Column::Column(int, int, int, int, std::__cxx11::bas
ic_string, std::allocator >)'
/home/qgb/github/ProcMon-for-Linux/src/display/screen.cpp:778: undefined reference to `Column::toggleHeaderHighlight()'
/tmp/cclmxG1v.o: In function `Screen::initPidColumn()':
/home/qgb/github/ProcMon-for-Linux/src/display/screen.cpp:783: undefined reference to `Column::Column(int, int, int, int, std::__cxx11::bas
ic_string, std::allocator >)'
/home/qgb/github/ProcMon-for-Linux/src/display/screen.cpp:787: undefined reference to `Column::toggleHeaderHighlight()'
/tmp/cclmxG1v.o: In function `Screen::initProcessColumn()':
/home/qgb/github/ProcMon-for-Linux/src/display/screen.cpp:792: undefined reference to `Column::Column(int, int, int, int, std::__cxx11::bas
ic_string, std::allocator >)'
/home/qgb/github/ProcMon-for-Linux/src/display/screen.cpp:796: undefined reference to `Column::toggleHeaderHighlight()'
/tmp/cclmxG1v.o: In function `Screen::initOperationColumn()':
/home/qgb/github/ProcMon-for-Linux/src/display/screen.cpp:801: undefined reference to `Column::Column(int, int, int, int, std::__cxx11::bas
ic_string, std::allocator >)'
/home/qgb/github/ProcMon-for-Linux/src/display/screen.cpp:805: undefined reference to `Column::toggleHeaderHighlight()'
/tmp/cclmxG1v.o: In function `Screen::initResultColumn()':
/home/qgb/github/ProcMon-for-Linux/src/display/screen.cpp:810: undefined reference to `Column::Column(int, int, int, int, std::__cxx11::bas
ic_string, std::allocator >)'
/home/qgb/github/ProcMon-for-Linux/src/display/screen.cpp:814: undefined reference to `Column::toggleHeaderHighlight()'
/tmp/cclmxG1v.o: In function `Screen::initDurationColumn()':
/home/qgb/github/ProcMon-for-Linux/src/display/screen.cpp:819: undefined reference to `Column::Column(int, int, int, int, std::__cxx11::bas
ic_string, std::allocator >)'
/home/qgb/github/ProcMon-for-Linux/src/display/screen.cpp:823: undefined reference to `Column::toggleHeaderHighlight()'
/tmp/cclmxG1v.o: In function `Screen::initDetailColumn()':
/home/qgb/github/ProcMon-for-Linux/src/display/screen.cpp:828: undefined reference to `Column::Column(int, int, int, int, std::__cxx11::bas
ic_string, std::allocator >)'
/tmp/cclmxG1v.o: In function `Screen::initStatView()':
/home/qgb/github/ProcMon-for-Linux/src/display/screen.cpp:839: undefined reference to `new_panel'
/home/qgb/github/ProcMon-for-Linux/src/display/screen.cpp:843: undefined reference to `hide_panel'
/tmp/cclmxG1v.o: In function `Screen::initHelpView()':
/home/qgb/github/ProcMon-for-Linux/src/display/screen.cpp:854: undefined reference to `new_panel'
/home/qgb/github/ProcMon-for-Linux/src/display/screen.cpp:858: undefined reference to `hide_panel'
/tmp/cclmxG1v.o: In function `Screen::initDetailView()':
/home/qgb/github/ProcMon-for-Linux/src/display/screen.cpp:870: undefined reference to `new_panel'
/home/qgb/github/ProcMon-for-Linux/src/display/screen.cpp:874: undefined reference to `hide_panel'
/tmp/cclmxG1v.o: In function `Screen::initColumnView()':
/home/qgb/github/ProcMon-for-Linux/src/display/screen.cpp:885: undefined reference to `new_panel'
/home/qgb/github/ProcMon-for-Linux/src/display/screen.cpp:889: undefined reference to `hide_panel'
/tmp/cclmxG1v.o: In function `Screen::addLine(ITelemetry)':
/home/qgb/github/ProcMon-for-Linux/src/display/screen.cpp:1093: undefined reference to `Column::addLine(std::__cxx11::basic_string, std::allocator >)'
/home/qgb/github/ProcMon-for-Linux/src/display/screen.cpp:1094: undefined reference to `Column::addLine(std::__cxx11::basic_string, std::allocator >)'
/home/qgb/github/ProcMon-for-Linux/src/display/screen.cpp:1095: undefined reference to `Column::addLine(std::__cxx11::basic_string, std::allocator >)'
/home/qgb/github/ProcMon-for-Linux/src/display/screen.cpp:1096: undefined reference to `Column::addLine(std::__cxx11::basic_string, std::allocator >)'
/home/qgb/github/ProcMon-for-Linux/src/display/screen.cpp:1097: undefined reference to `Column::addLine(std::__cxx11::basic_string, std::allocator >)'
/tmp/cclmxG1v.o:/home/qgb/github/ProcMon-for-Linux/src/display/screen.cpp:1098: more undefined references to `Column::addLine(std::__cxx11:
:basic_string, std::allocator >)' follow
/tmp/cclmxG1v.o: In function `Screen::refreshScreen()':
/home/qgb/github/ProcMon-for-Linux/src/display/screen.cpp:1136: undefined reference to `Column::refreshColumn()'
/home/qgb/github/ProcMon-for-Linux/src/display/screen.cpp:1137: undefined reference to `Column::refreshColumn()'
/home/qgb/github/ProcMon-for-Linux/src/display/screen.cpp:1138: undefined reference to `Column::refreshColumn()'
/home/qgb/github/ProcMon-for-Linux/src/display/screen.cpp:1139: undefined reference to `Column::refreshColumn()'
/home/qgb/github/ProcMon-for-Linux/src/display/screen.cpp:1140: undefined reference to `Column::refreshColumn()'
/tmp/cclmxG1v.o:/home/qgb/github/ProcMon-for-Linux/src/display/screen.cpp:1141: more undefined references to `Column::refreshColumn()' foll
ow
/tmp/cclmxG1v.o: In function `Screen::refreshScreen()':
/home/qgb/github/ProcMon-for-Linux/src/display/screen.cpp:1145: undefined reference to `update_panels'
/tmp/cclmxG1v.o: In function `Screen::resize()':
/home/qgb/github/ProcMon-for-Linux/src/display/screen.cpp:1183: undefined reference to `Column::resize(int, int, int)'
/home/qgb/github/ProcMon-for-Linux/src/display/screen.cpp:1184: undefined reference to `Column::resize(int, int, int)'
/home/qgb/github/ProcMon-for-Linux/src/display/screen.cpp:1185: undefined reference to `Column::resize(int, int, int)'
/home/qgb/github/ProcMon-for-Linux/src/display/screen.cpp:1186: undefined reference to `Column::resize(int, int, int)'
/home/qgb/github/ProcMon-for-Linux/src/display/screen.cpp:1187: undefined reference to `Column::resize(int, int, int)'
/tmp/cclmxG1v.o:/home/qgb/github/ProcMon-for-Linux/src/display/screen.cpp:1188: more undefined references to `Column::resize(int, int, int)
' follow
/tmp/cclmxG1v.o: In function `Screen::resetScreen()':
/home/qgb/github/ProcMon-for-Linux/src/display/screen.cpp:1223: undefined reference to `Column::resetColumn()'
/home/qgb/github/ProcMon-for-Linux/src/display/screen.cpp:1224: undefined reference to `Column::resetColumn()'
/home/qgb/github/ProcMon-for-Linux/src/display/screen.cpp:1225: undefined reference to `Column::resetColumn()'
/home/qgb/github/ProcMon-for-Linux/src/display/screen.cpp:1226: undefined reference to `Column::resetColumn()'
/home/qgb/github/ProcMon-for-Linux/src/display/screen.cpp:1227: undefined reference to `Column::resetColumn()'
/tmp/cclmxG1v.o:/home/qgb/github/ProcMon-for-Linux/src/display/screen.cpp:1228: more undefined references to `Column::resetColumn()' follow
/tmp/cclmxG1v.o: In function `Screen::clearScreen()':
/home/qgb/github/ProcMon-for-Linux/src/display/screen.cpp:1235: undefined reference to `Column::clearColumn()'
/home/qgb/github/ProcMon-for-Linux/src/display/screen.cpp:1236: undefined reference to `Column::clearColumn()'
/home/qgb/github/ProcMon-for-Linux/src/display/screen.cpp:1237: undefined reference to `Column::clearColumn()'
/home/qgb/github/ProcMon-for-Linux/src/display/screen.cpp:1238: undefined reference to `Column::clearColumn()'
/home/qgb/github/ProcMon-for-Linux/src/display/screen.cpp:1239: undefined reference to `Column::clearColumn()'
/tmp/cclmxG1v.o:/home/qgb/github/ProcMon-for-Linux/src/display/screen.cpp:1240: more undefined references to `Column::clearColumn()' follow
/tmp/cclmxG1v.o: In function `Screen::redrawScreen()':
/home/qgb/github/ProcMon-for-Linux/src/display/screen.cpp:1250: undefined reference to `Column::redrawColumn()'
/home/qgb/github/ProcMon-for-Linux/src/display/screen.cpp:1251: undefined reference to `Column::redrawColumn()'
/home/qgb/github/ProcMon-for-Linux/src/display/screen.cpp:1252: undefined reference to `Column::redrawColumn()'
/home/qgb/github/ProcMon-for-Linux/src/display/screen.cpp:1253: undefined reference to `Column::redrawColumn()'
/home/qgb/github/ProcMon-for-Linux/src/display/screen.cpp:1254: undefined reference to `Column::redrawColumn()'
/tmp/cclmxG1v.o:/home/qgb/github/ProcMon-for-Linux/src/display/screen.cpp:1255: more undefined references to `Column::redrawColumn()' follo
w
/tmp/cclmxG1v.o: In function `Screen::toggleColumnSort(ScreenConfiguration::sort)':
/home/qgb/github/ProcMon-for-Linux/src/display/screen.cpp:1342: undefined reference to `Column::toggleHeaderHighlight()'
/home/qgb/github/ProcMon-for-Linux/src/display/screen.cpp:1343: undefined reference to `Column::toggleHeaderHighlight()'
/tmp/cclmxG1v.o: In function `Screen::showStatView()':
/home/qgb/github/ProcMon-for-Linux/src/display/screen.cpp:1377: undefined reference to `panel_above'
/tmp/cclmxG1v.o: In function `Screen::showHelpView()':
/home/qgb/github/ProcMon-for-Linux/src/display/screen.cpp:1434: undefined reference to `panel_above'
/tmp/cclmxG1v.o: In function `Screen::closeStatView()':
/home/qgb/github/ProcMon-for-Linux/src/display/screen.cpp:1468: undefined reference to `hide_panel'
/tmp/cclmxG1v.o: In function `Screen::closeHelpView()':
/home/qgb/github/ProcMon-for-Linux/src/display/screen.cpp:1484: undefined reference to `hide_panel'
/tmp/cclmxG1v.o: In function `Screen::showDetailView()':
/home/qgb/github/ProcMon-for-Linux/src/display/screen.cpp:1507: undefined reference to `panel_above'
/tmp/cclmxG1v.o: In function `Screen::closeDetailView()':
/home/qgb/github/ProcMon-for-Linux/src/display/screen.cpp:1564: undefined reference to `hide_panel'
/tmp/cclmxG1v.o: In function `Screen::showColumnView()':
/home/qgb/github/ProcMon-for-Linux/src/display/screen.cpp:1580: undefined reference to `panel_above'
/tmp/cclmxG1v.o: In function `Screen::closeColumnView()':
/home/qgb/github/ProcMon-for-Linux/src/display/screen.cpp:1634: undefined reference to `hide_panel'
/tmp/cclmxG1v.o: In function `Screen::setLineColor(int, int)':
/home/qgb/github/ProcMon-for-Linux/src/display/screen.cpp:1677: undefined reference to `Column::setLineColor(int, int)'
/home/qgb/github/ProcMon-for-Linux/src/display/screen.cpp:1678: undefined reference to `Column::setLineColor(int, int)'
/home/qgb/github/ProcMon-for-Linux/src/display/screen.cpp:1679: undefined reference to `Column::setLineColor(int, int)'
/home/qgb/github/ProcMon-for-Linux/src/display/screen.cpp:1680: undefined reference to `Column::setLineColor(int, int)'
/home/qgb/github/ProcMon-for-Linux/src/display/screen.cpp:1681: undefined reference to `Column::setLineColor(int, int)'
/tmp/cclmxG1v.o:/home/qgb/github/ProcMon-for-Linux/src/display/screen.cpp:1682: more undefined references to `Column::setLineColor(int, int
)' follow
/tmp/cclmxG1v.o: In function `EventFormatter::EventFormatter()':
/home/qgb/github/ProcMon-for-Linux/src/display/event_formatter.h:26: undefined reference to `vtable for EventFormatter'
/tmp/cclmxG1v.o: In function `EventFormatter::~EventFormatter()':
/home/qgb/github/ProcMon-for-Linux/src/display/event_formatter.h:27: undefined reference to `vtable for EventFormatter'
/tmp/cclmxG1v.o:(.data.rel.ro._ZTV18KillEventFormatter[_ZTV18KillEventFormatter]+0x20): undefined reference to `EventFormatter::GetTimestam
p[abi:cxx11](ITelemetry&)'
/tmp/cclmxG1v.o:(.data.rel.ro._ZTV18KillEventFormatter[_ZTV18KillEventFormatter]+0x28): undefined reference to `EventFormatter::GetPID[abi:
cxx11](ITelemetry&)'
/tmp/cclmxG1v.o:(.data.rel.ro._ZTV18KillEventFormatter[_ZTV18KillEventFormatter]+0x30): undefined reference to `EventFormatter::GetProcess[
abi:cxx11](ITelemetry&)'
/tmp/cclmxG1v.o:(.data.rel.ro._ZTV18KillEventFormatter[_ZTV18KillEventFormatter]+0x38): undefined reference to `EventFormatter::GetOperatio
n[abi:cxx11](ITelemetry&)'
/tmp/cclmxG1v.o:(.data.rel.ro._ZTV18KillEventFormatter[_ZTV18KillEventFormatter]+0x40): undefined reference to `EventFormatter::GetResult[a
bi:cxx11](ITelemetry&)'
/tmp/cclmxG1v.o:(.data.rel.ro._ZTV18KillEventFormatter[_ZTV18KillEventFormatter]+0x48): undefined reference to `EventFormatter::GetDuration
[abi:cxx11](ITelemetry&)'
/tmp/cclmxG1v.o:(.data.rel.ro._ZTV18KillEventFormatter[_ZTV18KillEventFormatter]+0x50): undefined reference to `EventFormatter::GetDetails[
abi:cxx11](ITelemetry&)'
/tmp/cclmxG1v.o:(.data.rel.ro._ZTI18KillEventFormatter[_ZTI18KillEventFormatter]+0x10): undefined reference to `typeinfo for EventFormatter
'
collect2: error: ld returned 1 exit status
/bin/bash: ./a.out: No such file or directory

```

Contributor guide

No contributing guide indexed for this repository

Research direction

Start by reproducing the /usr/bin/c++ command shown in the issue and compare it with the project's normal build configuration. Inspect the listed BCC API, filesystem, storage, display, and tracer sources to determine which required objects or libraries are missing from the link. Done means the project builds and links without the reported undefined references.

Written by the indexing model from the issue text.

Assessment

Tech stack
cpp, linux
Domain
build-system
Issue type
Bug
Difficulty
4/5
Estimated time
3-5 days
Activity status
Stale
Clarity
Needs clarification
Newbie friendliness
25/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.