Hi Thomas, > > 2016-10-03 18:27, Konstantin Ananyev: > > 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") > > Applied, thanks > > I don't understand why it was not failing with C compilation?
Don't know off hand. Yes, I would expect gcc to fail with same symptoms too. But by some reason it puts it makes it a 'common' symbol: $ cat rttm1.c #include <stdio.h> #include <rte_eal.h> #include <rte_cycles.h> int main(int argc, char *argv[]) { int ret = rte_eal_init(argc, argv); rte_delay_us(1); printf("return code: %d\n", ret); return ret; } $ gcc -m64 -pthread -o rttm1 rttm1.o -ldl -L/${RTE_SDK}/${RTE_TARGET}/lib -Wl,-lrte_eal $ nm rttm1.o | grep rte_delay_us 0000000000000008 C rte_delay_us Konstantin