On Wed, Sep 27, 2017 at 09:36:03AM +0200, Tomasz Duszynski wrote: > On Tue, Sep 26, 2017 at 03:31:18PM +0100, Bruce Richardson wrote: > > On Tue, Sep 26, 2017 at 11:39:58AM +0200, Tomasz Duszynski wrote: > > > Since MRVL NET PMD needs librte_cfgfile to parse QoS configuration file > > > link it as the whole library. > > > > > > Signed-off-by: Jacek Siuda <[email protected]> > > > Signed-off-by: Tomasz Duszynski <[email protected]> > > > --- > > > > Can you clarify a bit more why this is needed? For a static build, the > > cfgfile should be linked in to the after the PMDs, so the dependencies > > in the driver should be satisfied in the link. For a dynamic build, the > > PMD should depend upon the cfgfile directly, and use it at runtime > > appropriately. > > Am I missing something? > > > > /Bruce > Hi Bruce, > > You are correct, all dependencies in the driver will be satisfied. > The reason this change was introduced is that, librte_pmd_mrvl.a > contains undefined symbols from librte_cfgfile.a thus linking > applications under app/ directory will fail as librte_cfgfile.a comes > before librte_pmd_mrvl.a during the linking stage. > > Linking librte_cfgfile.a with --whole-archive solves the issue. > > -- Thanks for the explanation.
I believe the proper fix in this case is to ensure that when linking apps that cfgfile comes after librte_pmd_mrvl. The drivers should always come first when linking, then the DPDK libs. /Bruce

