When compiling with C++, it treats void (*rte_delay_us)(unsigned int us); as definition of the global variable. So further linking with librte_eal fails. Fixes: b4d63fb62240 ("eal: customize delay function") Steps to reproduce: $ cat rttm1.cpp using namespace std; int main(int argc, char *argv[]) { int ret = rte_eal_init(argc, argv); rte_delay_us(1); cout << "return code "; cout << ret; return ret; } $ g++ -m64 -I/${RTE_SDK}/${RTE_TARGET}/include -c -o rttm1.o rttm1.cpp $ gcc -m64 -pthread -o rttm1 rttm1.o -ldl -Wl,-lstdc++ \ -L/${RTE_SDK}/${RTE_TARGET}/lib -Wl,-lrte_eal .../librte_eal.a(eal_common_timer.o): (.bss+0x0): multiple definition of `rte_delay_us' rttm1.o:(.bss+0x0): first defined here collect2: error: ld returned 1 exit status $ nm rttm1.o | grep rte_delay_us 0000000000000092 t _GLOBAL__sub_I_rte_delay_us 0000000000000000 B rte_delay_us Signed-off-by: Konstantin Ananyev <konstantin.ananyev@intel.com>
DPDK is a set of libraries and drivers for fast packet processing. It supports many processor architectures and both FreeBSD and Linux. The DPDK uses the Open Source BSD license for the core libraries and drivers. The kernel components are GPLv2 licensed. Please check the doc directory for release notes, API documentation, and sample application information. For questions and usage discussions, subscribe to: users@dpdk.org Report bugs and issues to the development mailing list: dev@dpdk.org
Description
Languages
C
99.1%
Meson
0.5%
Python
0.2%
Shell
0.1%