From: Thomas Monjalon <thomas@monjalon.net>
To: Tom Barbette <barbette@kth.se>
Cc: dev@dpdk.org, Matthew Hall <mhall@mhcomputing.net>
Subject: Re: [dpdk-dev] Impossible to build external application if user build DPDK with "make config"
Date: Fri, 27 Mar 2020 23:40:12 +0100 [thread overview]
Message-ID: <2164844.22IY78Rhhi@xps> (raw)
In-Reply-To: <d7111772-3fc4-9cff-b9ec-ab97f2c0144e@kth.se>
27/03/2020 16:53, Tom Barbette:
> Le 27/03/2020 à 16:06, Thomas Monjalon a écrit :
> > 27/03/2020 15:24, Tom Barbette:
> >> Le 27/03/2020 à 14:55, Thomas Monjalon a écrit :
> >>> 27/03/2020 13:35, Tom Barbette:
> >>>> Le 27/03/2020 à 11:35, Thomas Monjalon a écrit :
> >>>>> 27/03/2020 10:14, Tom Barbette:
> >>>>>> CC'ing original participants as I don't see a way out of this.
> >>>>>>
> >>>>>> Le 12/03/2020 à 13:04, Tom Barbette a écrit :
> >>>>>>> Hi all,
> >>>>>>>
> >>>>>>> If the user follows the quick guide
> >>>>>>> (http://core.dpdk.org/doc/quick-start/) DPDK will be compiled in the
> >>>>>>> "build" folder.
> >>>>>>>
> >>>>>>> However, external applications will always fail to build because
> >>>>>>> RTE_SDK_BIN is strictly defined as $RTE_SDK/$RTE_TARGET, and
> >>>>>>> mk/internal/rte.extvars.mk needs to find .config in $RTE_SDK_BIN.
> >>>>>>>
> >>>>>>> Therefore please apply the patch at:
> >>>>>>> http://patchwork.dpdk.org/patch/9991/ that allows external apps to
> >>>>>>> override $RTE_SDK_BIN.
> >>>>>>>
> >>>>>>> Or (less preferable) modify the quick start guide to use something more
> >>>>>>> standard that allows to build with external apps (eg use the menu or
> >>>>>>> propose "make config T=x86_64-native-linuxapp-gcc
> >>>>>>> O=x86_64-native-linuxapp-gcc" instead). It's much easier for external
> >>>>>>> apps maintainer to refer to the DPDK tutorial for DPDK installation.
> >>>>>
> >>>>> I don't understand the issue.
> >>>>> First of all, the external application should link an installed DPDK.
> >>>>> Then you should be able to set $RTE_SDK and $RTE_TARGET to fit
> >>>>> the installation directories.
> >>>>>
> >>>>> Just checked doc/guides/linux_gsg/build_dpdk.rst
> >>>>> I see the whole build process with make is not correctly documented.
> >>>>> It should be:
> >>>>>
> >>>>> 1/
> >>>>> make defconfig
> >>>>> or
> >>>>> make config T=x86_64-native-linux-gcc O=mybuild
> >>>>>
> >>>>> 2/ make -j4 O=mybuild
> >>>>>
> >>>>> 3/ make install O=mybuild DESTDIR=myinstall prefix=
> >>>>>
> >>>>> 4/ RTE_SDK=$(pwd)/myinstall/share/dpdk RTE_TARGET=x86_64-native-linux-gcc make -C myapp
> >>>>>
> >>>>> Please can you confirm it works?
> >>>>>
> >>>>>
> >>>>
> >>>> I don't think it is usual to link against an "installed" DPDK, actually.
> >>>> I've only seen people explaining "build DPDK with 1 & 2", which is
> >>>> probably why the quick start also use only that and the usertools menu
> >>>> also only builds in the usual folder SDK/TARGET.
> >>>>
> >>>> Then also using the install method you propose, I'm missing a few
> >>>> libraries, eg -lethdev which I would have to find using
> >>>> -L$RTE_SDK/../../lib which does not sound great. But adding a link to
> >>>> ../../lib under share fixes the problem, and the install script could do it.
> >>>
> >>> Why are you trying to link a library in RTE_SDK?
> >>> You should set the installed library directory with LD_LIBRARY_PATH.
> >>
> >> I don't want DPDK to be installed system-wide. I have a lot of versions,
> >> modified for different projects from different people, that has
> >> different compatibility level. And even, different versions compiled for
> >> different CPU architectures among our cluster.
> >>
> >> I prefer to only rely $RTE_SDK to know where "everything is". I could
> >> tell to my users to add something in their LD_LIBRARY_PATH, but I would
> >> prefer to stick to only the standard RTE_SDK and RTE_TARGET.
> >
> > You can install inside RTE_SDK.
> > This is what the command I gave you to test do.
> > Installation is just organizing files in a directory so it can be consumed.
> > Did you read the commands I sent? It is installing in $(pwd)/myinstall.
>
> Yes yes and I tried it as I said, leading to this lib problem. Still
> needs to ask the user to modify LD_LIBRARY_PATH to basically point it to
> $RTE_SDK/../../lib. I would have wanted to avoid that third one, but okay.
I understand.
LD_LIBRARY_PATH requirement is standard when linking with a library
which is not in a standard directory.
> > After install, RTE_SDK becomes $(pwd)/myinstall/share/dpdk.
> >
> >>>> Making RTE_SDK_BIN a ?= instead of a := would allow us to fix the
> >>>> non-installed, but built-in-a-funny-folder installation path easily.
> >>>>
> >>>> So I would recommend doing the lib link, but still the change proposed
> >>>> because I'm really not sure people "install" DPDK...
> >>>
> >>> The correct method is installing the library and using standard environment variables.
> >>> The only change I am OK to do is improving the documentation.
> >>
> >> You know best... I still think make install is unnecessary in most cases
> >> so I would not change the doc either...
> >
> > I say "make install" is a must and there is no reason no to do it.
> Ok. Maybe add it to the quick steps then? Also the menu does not install
> "with T defined and DESTDIR undefined" and I always used that, which may
> have led me to believe make install was not really part of the process.
"make install T=" is an old method for compiling.
The real install process does not involve T=.
I will try to make all these steps more clear.
> > Please check the steps I wrote for you.
prev parent reply other threads:[~2020-03-27 22:40 UTC|newest]
Thread overview: 9+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-03-12 12:04 [dpdk-dev] Impossible to build external application if user build DPDK with "make config" Tom Barbette
2020-03-27 9:14 ` Tom Barbette
2020-03-27 10:35 ` Thomas Monjalon
2020-03-27 12:35 ` Tom Barbette
2020-03-27 13:55 ` Thomas Monjalon
2020-03-27 14:24 ` Tom Barbette
2020-03-27 15:06 ` Thomas Monjalon
2020-03-27 15:53 ` Tom Barbette
2020-03-27 22:40 ` Thomas Monjalon [this message]
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=2164844.22IY78Rhhi@xps \
--to=thomas@monjalon.net \
--cc=barbette@kth.se \
--cc=dev@dpdk.org \
--cc=mhall@mhcomputing.net \
/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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.