[prev in list] [next in list] [prev in thread] [next in thread]
List: dpdk-users
Subject: Re: [dpdk-users] DPDK application as a library
From: "Wiles, Keith" <keith.wiles () intel ! com>
Date: 2018-09-13 15:22:10
Message-ID: 0289C834-7154-478C-BE36-BBF20F4FD42C () intel ! com
[Download RAW message or body]
> On Sep 13, 2018, at 10:18 AM, Amedeo Sapio <amedeo.sapio@kaust.edu.sa> wrote:
>
> The problem here was that DPDK libraries should be linked with the \
> '--whole-archive' option. All the credit goes to the guy that answered on stack \
> overflow. I did not find this information in the documentation. Maybe it should be \
> added on this page.
Not sure it is covered in other parts of the Doc, but here would be a thing too.
We do like patches to the docs and it would be great if you would think about sending \
one in to fix it.
>
> ---
> Amedeo
>
>
> On Tue, Sep 11, 2018 at 5:56 PM Amedeo Sapio <amedeo.sapio@kaust.edu.sa> wrote:
> Thanks Keith for your answer.
> If I understand it correctly, you are suggesting to wrap the code that needs DPDK \
> in a library and then call the functions in this library from my code. That is \
> exactly what I did. I called rte_eal_init() before any other dpdk function. The \
> dpdk code was tested and worked when compiled as an APP, but the same code did not \
> work when used as library.
> The example with l2fwd is representative of what I am trying to do.
> I took the exact same code of the l2fwd example, then:
> - renamed the "main" function as "start"
> - I added an header file with the signature of the "start" function
> - compiled as a libf2wd.a file.
> - created a new file with the new main function. This simply calls the "start" \
> function passing the argc,argv params.
> - compiled this new file with "gcc -l l2fwd -l dpdk -pthread -l dl -l numa ..."
>
> When I run it I get:
> EAL: Error - exiting with code: 1
> Cause: No Ethernet ports - bye
>
> PS: I am sorry about the disclaimer, it is not under my control, it is inserted \
> automatically by my university mail system.
> Amedeo
>
> On Tue, Sep 11, 2018 at 5:07 PM Wiles, Keith <keith.wiles@intel.com> wrote:
>
>
> > On Sep 11, 2018, at 5:49 AM, Amedeo Sapio <amedeo.sapio@kaust.edu.sa> wrote:
> >
> > Dear all,
> > I am writing a program that uses dpdk. I wrote the program based on the
> > dpdk examples, in particular using the Makefile provided in the examples.
> > If i compile the program as an APP (as describe here
> > <https://doc.dpdk.org/guides-18.02/prog_guide/build_app.html>), all goes
> > well.
>
> Sounds like you and this person need to get together here :-)
> https://mails.dpdk.org/archives/users/2018-September/003439.html
>
> > However, my code is part of a larger project, for which the use of a
> > separate makefile causes a lot of troubles.
> > So I compiled my code as a library, as described in the same page.
> > Now, the program that calls the functions in the library (to initialize the
> > EAL) is getting this error:
> >
>
> Did you call rte_eal_init() first as most of the routines depend on calling this \
> function before you call the other one.
> As I explained the other thread, is that DPDK is not libc and you can not just pick \
> the functions you want to use for the most part. Some functions are fairly \
> independent, but not really as work is needed to make sure it has all of the other \
> inits called.
> If you want to use DPDK today, the best method is to make sure you initialize DPDK \
> correctly and then you can use parts of it for your needs.
> As for the code that interacts with your application it is best to have a directory \
> with just the functions you need to build with DPDK and use these functions as a \
> bridge to/from your code. Using your header files and DPDK header files in the same \
> directory or file can cause a number of build problems, which is why I use this \
> type of method. Some routines in DPDK you can call without any real problems, but \
> sometimes it makes it easier to write inline functions or functions that build most \
> independent of DPDK and your routines. Not sure explained it clearly, but I hope it \
> helps.
> BTW, please remove any disclaimers in your email as they do not apply to a public \
> email list.
> > MBUF: error setting mempool handler
> > Cannot init mbuf pool
> >
> > I also made an experiment with the l2fwd example. The example compiled as
> > an app works correctly. But if I compile it as a library and then I call
> > the functions in this library from another program, I get:
> >
> > EAL: Error - exiting with code: 1
> > Cause: No Ethernet ports - bye
> >
> > I have one ethernet port using the igb_uio driver (seen from
> > dpdk-devbind.py). When I compile my program, I link the following
> > libraries: dpdk, pthread, dl, numa. DPDK is compiled from source as
> > described here <https://doc.dpdk.org/guides/linux_gsg/build_dpdk.html>.
> >
> > Thanks for your help,
> >
> > ---
> > Amedeo
> >
> > --
> >
> > This message and its contents, including attachments are intended solely
> > for the original recipient. If you are not the intended recipient or have
> > received this message in error, please notify me immediately and delete
> > this message from your computer system. Any unauthorized use or
> > distribution is prohibited. Please consider the environment before printing
> > this email.
>
> Regards,
> Keith
>
>
> --
>
> This message and its contents, including attachments are intended solely
> for the original recipient. If you are not the intended recipient or have
> received this message in error, please notify me immediately and delete
> this message from your computer system. Any unauthorized use or
> distribution is prohibited. Please consider the environment before printing
> this email.
>
> This message and its contents, including attachments are intended solely for the \
> original recipient. If you are not the intended recipient or have received this \
> message in error, please notify me immediately and delete this message from your \
> computer system. Any unauthorized use or distribution is prohibited. Please \
> consider the environment before printing this email.
Regards,
Keith
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic