DPDK patches and discussions
 help / color / mirror / Atom feed
From: "Chi, Xiaobo (NSN - CN/Hangzhou)" <xiaobo.chi@nsn.com>
To: ext Newman Poborsky <newman555p@gmail.com>,
	"dev@dpdk.org" <dev@dpdk.org>
Subject: Re: [dpdk-dev] building shared library
Date: Tue, 11 Nov 2014 03:28:26 +0000	[thread overview]
Message-ID: <EF703E8970265941A1316EEFE0AA7B6C40A59885@SGSIMBX004.nsn-intra.net> (raw)
In-Reply-To: <CAHW=9PsD80QvZnQ1Xz5pXz5vtkDR8opYdZTZpaQkqiBRfqozOA@mail.gmail.com>

Hi,
I am using DPDK based shared lib, but never met such problems. Can you please share this the result of "ldd xxxxx.so" and check if all those depended lib are all avalible? 

brgs,
chi xiaobo

-----Original Message-----
From: dev [mailto:dev-bounces@dpdk.org] On Behalf Of ext Newman Poborsky
Sent: Monday, November 10, 2014 10:23 PM
To: dev@dpdk.org
Subject: [dpdk-dev] building shared library

Hi,

is it possible to build a  dpdk app as a shared library?

I tried to put 'include $(RTE_SDK)/mk/rte.extshared.mk' in my Makefile (and
define SHARED) and it builds .so lib, but all rte_* symbols are undefined.

After that i tried adding:
LDLIBS += -lrte_eal -lrte_mbuf -lrte_cmdline -lrte_timer  -lrte_mempool
-lrte_ring  -lrte_pmd_ring -lethdev -lrte_malloc

And now almost all symbols in .so file are defined (missing only
rte_hexdump).

I thought this was gonna be it. But after using this library, pci probe-ing
fails since I don't have any pmd drivers registered, and
rte_eth_dev_count() returns 0.

But how are drivers supposed to be registered?

When I use gdb with regular dpdk app (not shared library), I can see this:
#0  0x000000000046fab0 in rte_eal_driver_register ()
#1  0x0000000000418fb7 in devinitfn_bond_drv ()
#2  0x00000000004f15ed in __libc_csu_init ()
#3  0x00007ffff6efee55 in __libc_start_main (main=0x41ee65 <main>, argc=1,
argv=0x7fffffffe4f8, init=0x4f15a0 <__libc_csu_init>, fini=<optimized out>,
rtld_fini=<optimized out>, stack_end=0x7fffffffe4e8) at
libc-start.c:246
#4  0x000000000041953c in _start ()


Ok, if I'm not mistaken, it seems driver registration is called before
main. How is this accomplished? Cause in shared library build, I don't have
this before main() and after rte_eal_init() (since driver list is empty)
everything else fails.

Any suggestions please? I'd really appreciate it...

BR,
Newman P.

  parent reply	other threads:[~2014-11-11  3:18 UTC|newest]

Thread overview: 12+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-11-10 14:22 Newman Poborsky
2014-11-11  1:01 ` Matthew Hall
2014-11-11  3:28 ` Chi, Xiaobo (NSN - CN/Hangzhou) [this message]
2014-11-11  7:29   ` Newman Poborsky
2014-11-11 10:37 ` Gonzalez Monroy, Sergio
2014-11-11 12:10   ` Newman Poborsky
2014-11-11 14:18     ` Sergio Gonzalez Monroy
2014-11-11 14:44       ` Newman Poborsky
2014-11-11 15:16         ` Newman Poborsky
2014-11-11 15:26           ` De Lara Guarch, Pablo
2014-11-11 15:54             ` Neil Horman
2014-11-11 16:24               ` Newman Poborsky

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=EF703E8970265941A1316EEFE0AA7B6C40A59885@SGSIMBX004.nsn-intra.net \
    --to=xiaobo.chi@nsn.com \
    --cc=dev@dpdk.org \
    --cc=newman555p@gmail.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).