From: "Gonzalez Monroy, Sergio" <sergio.gonzalez.monroy@intel.com>
To: Neil Horman <nhorman@tuxdriver.com>
Cc: "dev@dpdk.org" <dev@dpdk.org>
Subject: Re: [dpdk-dev] [PATCH v2 1/4] mk: Remove combined library and related options
Date: Fri, 13 Mar 2015 15:28:00 +0000 [thread overview]
Message-ID: <55030200.4070505@intel.com> (raw)
In-Reply-To: <20150313151855.GG28191@hmsreliant.think-freely.org>
On 13/03/2015 15:18, Neil Horman wrote:
> On Fri, Mar 13, 2015 at 04:12:35PM +0200, Stefan Puiu wrote:
>> Hi,
>>
>> 2 cents from a DPDK library user - I make 2 changes to the default
>> linux+gcc configuration: combine libraries and build shared libraries
>> (since I want 2 instances of the app, it didn't make sense to me to
>> link statically). I tried working with the individual libs, but adding
>> all of them with --start-group/-end-group just seemed so much more
>> painful than simply linking against one lib. I know there are some
>> Makefile variables to help with this, but I use scons for building my
>> app, so that doesn't help much.
>>
>> Of course, if that can be achieved easily after building all the
>> libraries, that's fine. But I think combining the libs makes a lot of
>> sense in many cases.
>>
> So do it, create a linker script that internally contains one line:
> INPUT(-lrte_eal -lrte_alarm -lrte_mempool ... etc)
>
> Name the file libdpdk.so
>
> then when you build your app, just link -ldpdk
>
> Done.
>
> Neil
Plus I believe that as it currently stands, building combined shared
libraries will be broken
the moment we have different versions of any API because the linking for
the combined lib
does not use a version map.
Sergio
>> Thanks,
>> Stefan.
>>
>> On Fri, Mar 13, 2015 at 3:17 PM, Neil Horman <nhorman@tuxdriver.com> wrote:
>>> On Fri, Mar 13, 2015 at 11:48:59AM +0000, Gonzalez Monroy, Sergio wrote:
>>>> On 13/03/2015 11:34, Kavanagh, Mark B wrote:
>>>>>> On 13/03/2015 10:49, Kavanagh, Mark B wrote:
>>>>>>>> ---
>>>>>>>> config/common_bsdapp | 6 --
>>>>>>>> config/common_linuxapp | 6 --
>>>>>>>> config/defconfig_ppc_64-power8-linuxapp-gcc | 2 -
>>>>>>>> lib/Makefile | 1 -
>>>>>>>> mk/rte.app.mk | 12 ----
>>>>>>>> mk/rte.lib.mk | 35 ----------
>>>>>>>> mk/rte.sdkbuild.mk | 3 -
>>>>>>>> mk/rte.sharelib.mk | 101 ----------------------------
>>>>>>>> mk/rte.vars.mk | 9 ---
>>>>>>>> 9 files changed, 175 deletions(-)
>>>>>>>> delete mode 100644 mk/rte.sharelib.mk
>>>>>>>>
>>>>>>>> diff --git a/config/common_bsdapp b/config/common_bsdapp
>>>>>>>> index 8ff4dc2..7ee5ecf 100644
>>>>>>>> --- a/config/common_bsdapp
>>>>>>>> +++ b/config/common_bsdapp
>>>>>>>> @@ -79,12 +79,6 @@ CONFIG_RTE_FORCE_INTRINSICS=n
>>>>>>>> CONFIG_RTE_BUILD_SHARED_LIB=n
>>>>>>>>
>>>>>>>> #
>>>>>>>> -# Combine to one single library
>>>>>>>> -#
>>>>>>>> -CONFIG_RTE_BUILD_COMBINE_LIBS=n
>>>>>>>> -CONFIG_RTE_LIBNAME=intel_dpdk
>>>>>>> Hi Sergio,
>>>>>>>
>>>>>>> Removing these options breaks compatibility with OVS. While it may be feasible to link
>>>>>> to individual static libraries, in our experience, a single combined library provides a
>>>>>> much more convenient way of linking.
>>>>>>> Thanks,
>>>>>>> Mark
>>>>>>>
>>>>>>>> -
>>>>> (snip)
>>>>>
>>>>>
>>>>>>>> -endif
>>>>>>>> -
>>>>>>>> -RTE_LIBNAME := $(CONFIG_RTE_LIBNAME:"%"=%)
>>>>>>>> -ifeq ($(RTE_LIBNAME),)
>>>>>>>> -RTE_LIBNAME := intel_dpdk
>>>>>>>> endif
>>>>>>>>
>>>>>>>> # RTE_TARGET is deducted from config when we are building the SDK.
>>>>>>>> --
>>>>>>>> 1.9.3
>>>>>> Hi Mark,
>>>>>>
>>>>>> How does this patch break compatibility with OVS?
>>>>>>
>>>>>> Thanks,
>>>>>> Sergio
>>>>> Hey Sergio,
>>>>>
>>>>> We use the CONFIG_RTE_BUILD_COMBINE_LIBS and CONFIG_RTE_LINBNAME flags to build a single static DPDK library, named 'libintel_dpdk.a', which OVS links against. Removing the combined library option breaks compatibility with any application that links against the combined DPDK library.
>>>>>
>>>>> Is there a strong technical motivation for removing these options?
>>>>>
>>>>> Thanks,
>>>>> Mark
>>>> From a shared library point of view, it just does not make sense to have
>>>> applications linked against a 'combined' library that may have different
>>>> features built in it.
>>>>
>>>> Removing these options, aside from the obvious 'less build config option',
>>>> it simplifies maintenance of makefiles as we currently have a separated
>>>> makefile with specific rules just for combined library.
>>>>
>>>> It is pretty straight forward to build a single combined archive out of
>>>> multiple archives, would it be acceptable to have a script to do this?
>>>>
>>>> Thanks,
>>>> Sergio
>>>>
>>> +1
>>>
>>> For the static case, its easy to do a post build combination of archives. For
>>> the shared library case, its equally easy to simply create a linker scripts call
>>> <CONFIG_RTE_LIBNAME>.so that pulls in all the individual libraries.
>>>
>>> Neil
>>>
next prev parent reply other threads:[~2015-03-13 15:28 UTC|newest]
Thread overview: 63+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-01-29 15:20 [dpdk-dev] [PATCH 0/8] Improve build process Sergio Gonzalez Monroy
2015-01-29 15:20 ` [dpdk-dev] [PATCH 1/8] mk: remove combined library and related options Sergio Gonzalez Monroy
2015-01-29 15:20 ` [dpdk-dev] [PATCH 2/8] core: create new librte_core Sergio Gonzalez Monroy
2015-01-29 15:20 ` [dpdk-dev] [PATCH 3/8] mk: new corelib makefile Sergio Gonzalez Monroy
2015-01-29 15:20 ` [dpdk-dev] [PATCH 4/8] lib: update DEPDIRS variable Sergio Gonzalez Monroy
2015-01-29 15:20 ` [dpdk-dev] [PATCH 5/8] lib: set LDLIBS for each library Sergio Gonzalez Monroy
2015-01-29 15:20 ` [dpdk-dev] [PATCH 6/8] mk: use LDLIBS when linking shared libraries Sergio Gonzalez Monroy
2015-01-29 15:20 ` [dpdk-dev] [PATCH 7/8] mk: update LDLIBS for app building Sergio Gonzalez Monroy
2015-01-29 15:20 ` [dpdk-dev] [PATCH 8/8] mk: add -lpthread to linuxapp EXECENV_LDLIBS Sergio Gonzalez Monroy
2015-01-29 16:38 ` [dpdk-dev] [PATCH 0/8] Improve build process Neil Horman
2015-01-29 17:02 ` Thomas Monjalon
2015-01-29 17:04 ` Gonzalez Monroy, Sergio
2015-01-29 19:45 ` Neil Horman
2015-01-30 13:39 ` Gonzalez Monroy, Sergio
2015-01-30 14:05 ` Neil Horman
2015-01-30 17:38 ` Gonzalez Monroy, Sergio
2015-01-30 18:12 ` Neil Horman
2015-02-11 11:11 ` Gonzalez Monroy, Sergio
2015-02-12 5:41 ` Neil Horman
2015-02-12 9:17 ` Gonzalez Monroy, Sergio
2015-02-12 12:16 ` Neil Horman
2015-02-12 9:22 ` Panu Matilainen
2015-02-12 10:03 ` Gonzalez Monroy, Sergio
2015-02-12 12:23 ` Neil Horman
2015-02-12 14:07 ` Panu Matilainen
2015-02-12 15:52 ` Neil Horman
2015-02-13 10:14 ` Panu Matilainen
2015-02-13 11:08 ` Gonzalez Monroy, Sergio
2015-02-13 12:51 ` Neil Horman
2015-02-20 14:31 ` Gonzalez Monroy, Sergio
2015-02-22 23:37 ` Neil Horman
2015-02-23 10:25 ` Gonzalez Monroy, Sergio
2015-02-23 13:52 ` Neil Horman
2015-02-23 14:58 ` Gonzalez Monroy, Sergio
2015-02-23 18:23 ` Neil Horman
2015-02-24 13:24 ` Gonzalez Monroy, Sergio
2015-03-12 16:27 ` [dpdk-dev] [PATCH v2 0/4] " Sergio Gonzalez Monroy
2015-03-12 16:27 ` [dpdk-dev] [PATCH v2 1/4] mk: Remove combined library and related options Sergio Gonzalez Monroy
2015-03-13 10:49 ` Kavanagh, Mark B
2015-03-13 11:19 ` Gonzalez Monroy, Sergio
2015-03-13 11:34 ` Kavanagh, Mark B
2015-03-13 11:48 ` Gonzalez Monroy, Sergio
2015-03-13 13:16 ` Kavanagh, Mark B
2015-03-13 14:11 ` Gonzalez Monroy, Sergio
2015-03-13 13:17 ` Neil Horman
2015-03-13 14:12 ` Stefan Puiu
2015-03-13 15:18 ` Neil Horman
2015-03-13 15:28 ` Gonzalez Monroy, Sergio [this message]
2015-03-13 16:16 ` Neil Horman
2015-03-13 16:07 ` Stephen Hemminger
2015-03-13 16:32 ` Neil Horman
2015-03-13 16:38 ` Gonzalez Monroy, Sergio
2015-03-18 12:11 ` Gonzalez Monroy, Sergio
2015-03-18 12:59 ` Thomas Monjalon
2015-03-18 15:30 ` Stefan Puiu
2015-03-18 15:52 ` Gonzalez Monroy, Sergio
2015-03-18 16:48 ` Neil Horman
2015-03-26 8:52 ` Gonzalez Monroy, Sergio
2015-03-26 10:30 ` Neil Horman
2015-03-18 16:41 ` Neil Horman
2015-03-12 16:27 ` [dpdk-dev] [PATCH v2 2/4] lib: Set LDLIBS for each library Sergio Gonzalez Monroy
2015-03-12 16:28 ` [dpdk-dev] [PATCH v2 3/4] mk: Use LDLIBS when linking shared libraries Sergio Gonzalez Monroy
2015-03-12 16:28 ` [dpdk-dev] [PATCH v2 4/4] mk: update LDLIBS for app building Sergio Gonzalez Monroy
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=55030200.4070505@intel.com \
--to=sergio.gonzalez.monroy@intel.com \
--cc=dev@dpdk.org \
--cc=nhorman@tuxdriver.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).