Resolved just as Matt has described. To remove any ambiguity (for future reference).
This line in the gcc command resolves the issue in my case (a different nic may need a different lib): --whole-archive -Wl,--start-group -lrte_pmd_ixgbe -Wl,--end-group -Wl, The problem is that the probe command polls over all pci devices and tries to find a matching driver, these drivers register With these macros which will only be called when the --whole-archive option is provided and its actually the reason for this flags existence. Without this flag the driver list is empty. PMD_REGISTER_DRIVER(rte_ixgbe_driver); PMD_REGISTER_DRIVER(rte_ixgbevf_driver); On Sun, Aug 3, 2014 at 1:38 PM, Alex Markuze <alex at weka.io> wrote: > Hi Matt, Dev > I'm Trying to compile ann app linking to dpdk and dpdk based libs. > And I'm seeing the same issue you've reported. > The probe function doesn't seem to find any ixgbevf(SRIOV VM) ports. > Same code compiled as a dpdk app works fine. > > In your solution to this issue you are referring to -lintel_dpdk? I > couldn't find any reference to it. > > Thanks > Alex. > > > On Sat, Aug 2, 2014 at 7:46 PM, Matthew Hall <mhall at mhcomputing.net> wrote: >> On Sun, Aug 03, 2014 at 01:37:06AM +0900, Masaru Oki wrote: >>> cc links library funtion from archive only if call from other object. >>> but new dpdk pmd library has constractor section and not call directly. >>> ld always links library funtion with constractor section. >>> use -Xlinker, or use ld instead of cc. >> >> Hello Oki-san, >> >> The trick to fix it was this, I finally found it in the example Makefiles >> with >> V=1 flag. >> >> -Wl,--whole-archive -Wl,--start-group -lintel_dpdk -Wl,--end-group >> -Wl,--no-whole-archive >> >> Thank you for the advice you provided, I couldn't have fixed it without your >> suggestions... it got me to look more closely at the linking. Importantly, >> "-Wl,--whole-archive" includes the entire archive whether or not it's called >> from other objects, so we don't lose the constructors, just like you said. >> >> Matthew.