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>
- 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