Message ID | 1412137623-18817-1-git-send-email-mukawa@igel.co.jp (mailing list archive) |
---|---|
State | Rejected, archived |
Headers |
Return-Path: <dev-bounces@dpdk.org> X-Original-To: patchwork@dpdk.org Delivered-To: patchwork@dpdk.org Received: from [92.243.14.124] (localhost [IPv6:::1]) by dpdk.org (Postfix) with ESMTP id 44399212; Wed, 1 Oct 2014 06:20:39 +0200 (CEST) Received: from mail-pa0-f54.google.com (mail-pa0-f54.google.com [209.85.220.54]) by dpdk.org (Postfix) with ESMTP id E8E4071 for <dev@dpdk.org>; Wed, 1 Oct 2014 06:20:36 +0200 (CEST) Received: by mail-pa0-f54.google.com with SMTP id ey11so34980pad.27 for <dev@dpdk.org>; Tue, 30 Sep 2014 21:27:19 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references; bh=Ux9DHEaKpm+Xaz78xRonARMNIhuQuNPDH6lTmr3XcjQ=; b=QkatnqDQf/tJxDqmgDxTeQCZBqwm6wHPVds1b60Rv+zQ+QXlxDlx+AB6Eq9efqNUkw gccQa2r4h4oe31U8ponJaapWyQpsP+/NGTNlI1pUcFwz57nOxjDCBwbf/tODJ2WF9Am5 xQuLS38m2xVt/q0jml0Pj666pI1ZqeALq5PMOf2Jg8jFWN5iUoYPSP9uHE4fdcKFF9zT qaKLdfzyBWtSEkC2odDa8Kjy1X0exqT4OpSx9tpbUs5Bs5dFANtvISxoeyfLMTDwuyut +YrCZhiZoe5TPfVD7PjJiDmZe5UJCxhIYeYZCThCzrBA/SVSDCtR0SulABtZ2ZtdhNca aMGw== X-Gm-Message-State: ALoCoQkm6hedN7zeX+TAdMZ4vEkmzQotwe0oF8S04B9pG0lri1yz+UPCN/3WMckJuPdDwaYhWgN4 X-Received: by 10.68.65.74 with SMTP id v10mr52898889pbs.72.1412137639487; Tue, 30 Sep 2014 21:27:19 -0700 (PDT) Received: from localhost.localdomain (napt.igel.co.jp. [219.106.231.132]) by mx.google.com with ESMTPSA id mw1sm16610277pdb.13.2014.09.30.21.27.17 for <multiple recipients> (version=TLSv1.2 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Tue, 30 Sep 2014 21:27:18 -0700 (PDT) From: mukawa@igel.co.jp To: dev@dpdk.org Date: Wed, 1 Oct 2014 13:27:03 +0900 Message-Id: <1412137623-18817-1-git-send-email-mukawa@igel.co.jp> X-Mailer: git-send-email 1.9.1 In-Reply-To: <mukawa@igel.co.jp> References: <mukawa@igel.co.jp> Subject: [dpdk-dev] [PATCH] Fix linking errors when CONFIG_RTE_BUILD_SHARED_LIB is enabled X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: patches and discussions about DPDK <dev.dpdk.org> List-Unsubscribe: <http://dpdk.org/ml/options/dev>, <mailto:dev-request@dpdk.org?subject=unsubscribe> List-Archive: <http://dpdk.org/ml/archives/dev/> List-Post: <mailto:dev@dpdk.org> List-Help: <mailto:dev-request@dpdk.org?subject=help> List-Subscribe: <http://dpdk.org/ml/listinfo/dev>, <mailto:dev-request@dpdk.org?subject=subscribe> Errors-To: dev-bounces@dpdk.org Sender: "dev" <dev-bounces@dpdk.org> |
Commit Message
Tetsuya Mukawa
Oct. 1, 2014, 4:27 a.m. UTC
From: Tetsuya Mukawa <mukawa@igel.co.jp> When CONFIG_RTE_BUILD_SHARED_LIB is enabled, linking errors occured while compiling. It seems those errors are caused by wrong link order of some libraries. The patch fixes it like following. 1. librte_eal 2. librte_malloc 3. librte_mempool 4. librte_ring 5. librte_pmd_bond 6. librte_kvargs Signed-off-by: Tetsuya Mukawa <mukawa@igel.co.jp> --- mk/rte.app.mk | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-)
Comments
On Wed, Oct 01, 2014 at 01:27:03PM +0900, mukawa@igel.co.jp wrote: > From: Tetsuya Mukawa <mukawa@igel.co.jp> > > When CONFIG_RTE_BUILD_SHARED_LIB is enabled, linking errors occured > while compiling. It seems those errors are caused by wrong link order > of some libraries. The patch fixes it like following. > > 1. librte_eal > 2. librte_malloc > 3. librte_mempool > 4. librte_ring > 5. librte_pmd_bond > 6. librte_kvargs > I'm not sure why thats necesecary. We add a --start-group/--end-group pair halfway through this makefile. If we just encompassed the entire set of libraries in that group, order would be irrelevant. Neil > Signed-off-by: Tetsuya Mukawa <mukawa@igel.co.jp> > --- > mk/rte.app.mk | 16 ++++++++-------- > 1 file changed, 8 insertions(+), 8 deletions(-) > > diff --git a/mk/rte.app.mk b/mk/rte.app.mk > index 34dff2a..172ba4d 100644 > --- a/mk/rte.app.mk > +++ b/mk/rte.app.mk > @@ -121,10 +121,6 @@ endif > > LDLIBS += --start-group > > -ifeq ($(CONFIG_RTE_LIBRTE_KVARGS),y) > -LDLIBS += -lrte_kvargs > -endif > - > ifeq ($(CONFIG_RTE_LIBRTE_MBUF),y) > LDLIBS += -lrte_mbuf > endif > @@ -137,6 +133,10 @@ ifeq ($(CONFIG_RTE_LIBRTE_ETHER),y) > LDLIBS += -lethdev > endif > > +ifeq ($(CONFIG_RTE_LIBRTE_EAL),y) > +LDLIBS += -lrte_eal > +endif > + > ifeq ($(CONFIG_RTE_LIBRTE_MALLOC),y) > LDLIBS += -lrte_malloc > endif > @@ -158,10 +158,6 @@ ifeq ($(CONFIG_RTE_LIBGLOSS),y) > LDLIBS += -lgloss > endif > > -ifeq ($(CONFIG_RTE_LIBRTE_EAL),y) > -LDLIBS += -lrte_eal > -endif > - > ifeq ($(CONFIG_RTE_LIBRTE_CMDLINE),y) > LDLIBS += -lrte_cmdline > endif > @@ -174,6 +170,10 @@ ifeq ($(CONFIG_RTE_LIBRTE_PMD_BOND),y) > LDLIBS += -lrte_pmd_bond > endif > > +ifeq ($(CONFIG_RTE_LIBRTE_KVARGS),y) > +LDLIBS += -lrte_kvargs > +endif > + > ifeq ($(CONFIG_RTE_LIBRTE_PMD_XENVIRT),y) > LDLIBS += -lrte_pmd_xenvirt > LDLIBS += -lxenstore > -- > 1.9.1 > >
2014-10-01 06:50, Neil Horman: > On Wed, Oct 01, 2014 at 01:27:03PM +0900, mukawa@igel.co.jp wrote: > > When CONFIG_RTE_BUILD_SHARED_LIB is enabled, linking errors occured > > while compiling. It seems those errors are caused by wrong link order > > of some libraries. The patch fixes it like following. > > > > 1. librte_eal > > 2. librte_malloc > > 3. librte_mempool > > 4. librte_ring > > 5. librte_pmd_bond > > 6. librte_kvargs > > > I'm not sure why thats necesecary. We add a --start-group/--end-group pair > halfway through this makefile. If we just encompassed the entire set of > libraries in that group, order would be irrelevant. I don't see any error. Please Tetsuya, could you describe how you test and what is the error message? Thanks
(2014/10/01 19:50), Neil Horman wrote: > I'm not sure why thats necesecary. We add a --start-group/--end-group pair > halfway through this makefile. If we just encompassed the entire set of > libraries in that group, order would be irrelevant. I haven't known the options. Thanks. Anyway, I understand I shouldn't change link order, but should check why '--start-group/--end-group' doesn't work on my environment. I will describe more in the email for Thomas. Regards, Tetsuya > Neil > >> Signed-off-by: Tetsuya Mukawa <mukawa@igel.co.jp> >> --- >> mk/rte.app.mk | 16 ++++++++-------- >> 1 file changed, 8 insertions(+), 8 deletions(-) >> >> diff --git a/mk/rte.app.mk b/mk/rte.app.mk >> index 34dff2a..172ba4d 100644 >> --- a/mk/rte.app.mk >> +++ b/mk/rte.app.mk >> @@ -121,10 +121,6 @@ endif >> >> LDLIBS += --start-group >> >> -ifeq ($(CONFIG_RTE_LIBRTE_KVARGS),y) >> -LDLIBS += -lrte_kvargs >> -endif >> - >> ifeq ($(CONFIG_RTE_LIBRTE_MBUF),y) >> LDLIBS += -lrte_mbuf >> endif >> @@ -137,6 +133,10 @@ ifeq ($(CONFIG_RTE_LIBRTE_ETHER),y) >> LDLIBS += -lethdev >> endif >> >> +ifeq ($(CONFIG_RTE_LIBRTE_EAL),y) >> +LDLIBS += -lrte_eal >> +endif >> + >> ifeq ($(CONFIG_RTE_LIBRTE_MALLOC),y) >> LDLIBS += -lrte_malloc >> endif >> @@ -158,10 +158,6 @@ ifeq ($(CONFIG_RTE_LIBGLOSS),y) >> LDLIBS += -lgloss >> endif >> >> -ifeq ($(CONFIG_RTE_LIBRTE_EAL),y) >> -LDLIBS += -lrte_eal >> -endif >> - >> ifeq ($(CONFIG_RTE_LIBRTE_CMDLINE),y) >> LDLIBS += -lrte_cmdline >> endif >> @@ -174,6 +170,10 @@ ifeq ($(CONFIG_RTE_LIBRTE_PMD_BOND),y) >> LDLIBS += -lrte_pmd_bond >> endif >> >> +ifeq ($(CONFIG_RTE_LIBRTE_KVARGS),y) >> +LDLIBS += -lrte_kvargs >> +endif >> + >> ifeq ($(CONFIG_RTE_LIBRTE_PMD_XENVIRT),y) >> LDLIBS += -lrte_pmd_xenvirt >> LDLIBS += -lxenstore >> -- >> 1.9.1 >> >>
On Thu, Oct 02, 2014 at 10:43:52AM +0900, Tetsuya Mukawa wrote: > I haven't known the options. Thanks. > Anyway, I understand I shouldn't change link order, but should check why > '--start-group/--end-group' doesn't work on my environment. > I will describe more in the email for Thomas. > > Regards, > Tetsuya It's worth pointing out that you're likely better off using COMBINE_LIBS to make one big static lib rather than using a shared lib or you're facing a performance loss from the dynamic linking overhead. Matthew.
(2014/10/01 20:56), Thomas Monjalon wrote: > 2014-10-01 06:50, Neil Horman: >> On Wed, Oct 01, 2014 at 01:27:03PM +0900, mukawa@igel.co.jp wrote: >>> When CONFIG_RTE_BUILD_SHARED_LIB is enabled, linking errors occured >>> while compiling. It seems those errors are caused by wrong link order >>> of some libraries. The patch fixes it like following. >>> >>> 1. librte_eal >>> 2. librte_malloc >>> 3. librte_mempool >>> 4. librte_ring >>> 5. librte_pmd_bond >>> 6. librte_kvargs >>> >> I'm not sure why thats necesecary. We add a --start-group/--end-group pair >> halfway through this makefile. If we just encompassed the entire set of >> libraries in that group, order would be irrelevant. > I don't see any error. > Please Tetsuya, could you describe how you test and what is the error message? > > Thanks Thank you for testing. I have confirmed '--start-group/--end-groups' is specified while compiling, but I am still seeing the error. Here is what I actually did. ---------------------------------------------------------------------- << Show my environment >> $ uname -a Linux eris 3.13.0-29-generic #53-Ubuntu SMP Wed Jun 4 21:00:20 UTC 2014 x86_64 x86_64 x86_64 GNU/Linux $ lsb_release -a No LSB modules are available. Distributor ID: Ubuntu Description: Ubuntu 14.04.1 LTS Release: 14.04 Codename: trusty $ gcc -v Using built-in specs. COLLECT_GCC=gcc COLLECT_LTO_WRAPPER=/usr/lib/gcc/x86_64-linux-gnu/4.8/lto-wrapper Target: x86_64-linux-gnu Configured with: ../src/configure -v --with-pkgversion='Ubuntu 4.8.2-19ubuntu1' --with-bugurl=file:///usr/share/doc/gcc-4.8/README.Bugs --enable-languages=c,c++,java,go,d,fortran,objc,obj-c++ --prefix=/usr --program-suffix=-4.8 --enable-shared --enable-linker-build-id --libexecdir=/usr/lib --without-included-gettext --enable-threads=posix --with-gxx-include-dir=/usr/include/c++/4.8 --libdir=/usr/lib --enable-nls --with-sysroot=/ --enable-clocale=gnu --enable-libstdcxx-debug --enable-libstdcxx-time=yes --enable-gnu-unique-object --disable-libmudflap --enable-plugin --with-system-zlib --disable-browser-plugin --enable-java-awt=gtk --enable-gtk-cairo --with-java-home=/usr/lib/jvm/java-1.5.0-gcj-4.8-amd64/jre --enable-java-home --with-jvm-root-dir=/usr/lib/jvm/java-1.5.0-gcj-4.8-amd64 --with-jvm-jar-dir=/usr/lib/jvm-exports/java-1.5.0-gcj-4.8-amd64 --with-arch-directory=amd64 --with-ecj-jar=/usr/share/java/eclipse-ecj.jar --enable-objc-gc --enable-multiarch --disable-werror --with-arch-32=i686 --with-abi=m64 --with-multilib-list=m32,m64,mx32 --with-tune=generic --enable-checking=release --build=x86_64-linux-gnu --host=x86_64-linux-gnu --target=x86_64-linux-gnu Thread model: posix gcc version 4.8.2 (Ubuntu 4.8.2-19ubuntu1) << Compile DPDK >> $ git clone git://dpdk.org/dpdk $ cd dpdk $ vi config/common_linuxapp CONFIG_RTE_BUILD_SHARED_LIB=y $ T=x86_64-native-linuxapp-gcc make install V=1 ....... == Build app/test-acl gcc -Wp,-MD,./.main.o.d.tmp -m64 -pthread -fPIC -march=native -DRTE_MACHINE_CPUFLAG_SSE -DRTE_MACHINE_CPUFLAG_SSE2 -DRTE_MACHINE_CPUFLAG_SSE3 -DRTE_MACHINE_CPUFLAG_SSSE3 -DRTE_MACHINE_CPUFLAG_SSE4_1 -DRTE_MACHINE_CPUFLAG_SSE4_2 -DRTE_MACHINE_CPUFLAG_AES -DRTE_MACHINE_CPUFLAG_PCLMULQDQ -DRTE_MACHINE_CPUFLAG_AVX -DRTE_MACHINE_CPUFLAG_F16C -DRTE_COMPILE_TIME_CPUFLAGS=RTE_CPUFLAG_SSE,RTE_CPUFLAG_SSE2,RTE_CPUFLAG_SSE3,RTE_CPUFLAG_SSSE3,RTE_CPUFLAG_SSE4_1,RTE_CPUFLAG_SSE4_2,RTE_CPUFLAG_AES,RTE_CPUFLAG_PCLMULQDQ,RTE_CPUFLAG_AVX,RTE_CPUFLAG_F16C -I/home/mukawa/tmp/dpdk/x86_64-native-linuxapp-gcc/include -include /home/mukawa/tmp/dpdk/x86_64-native-linuxapp-gcc/include/rte_config.h -W -Wall -Werror -Wstrict-prototypes -Wmissing-prototypes -Wmissing-declarations -Wold-style-definition -Wpointer-arith -Wcast-align -Wnested-externs -Wcast-qual -Wformat-nonliteral -Wformat-security -Wundef -Wwrite-strings -o main.o -c /home/mukawa/tmp/dpdk/app/test-acl/main.c gcc -m64 -pthread -fPIC -march=native -DRTE_MACHINE_CPUFLAG_SSE -DRTE_MACHINE_CPUFLAG_SSE2 -DRTE_MACHINE_CPUFLAG_SSE3 -DRTE_MACHINE_CPUFLAG_SSSE3 -DRTE_MACHINE_CPUFLAG_SSE4_1 -DRTE_MACHINE_CPUFLAG_SSE4_2 -DRTE_MACHINE_CPUFLAG_AES -DRTE_MACHINE_CPUFLAG_PCLMULQDQ -DRTE_MACHINE_CPUFLAG_AVX -DRTE_MACHINE_CPUFLAG_F16C -DRTE_COMPILE_TIME_CPUFLAGS=RTE_CPUFLAG_SSE,RTE_CPUFLAG_SSE2,RTE_CPUFLAG_SSE3,RTE_CPUFLAG_SSSE3,RTE_CPUFLAG_SSE4_1,RTE_CPUFLAG_SSE4_2,RTE_CPUFLAG_AES,RTE_CPUFLAG_PCLMULQDQ,RTE_CPUFLAG_AVX,RTE_CPUFLAG_F16C -I/home/mukawa/tmp/dpdk/x86_64-native-linuxapp-gcc/include -include /home/mukawa/tmp/dpdk/x86_64-native-linuxapp-gcc/include/rte_config.h -W -Wall -Werror -Wstrict-prototypes -Wmissing-prototypes -Wmissing-declarations -Wold-style-definition -Wpointer-arith -Wcast-align -Wnested-externs -Wcast-qual -Wformat-nonliteral -Wformat-security -Wundef -Wwrite-strings -Wl,-Map=testacl.map,--cref -o testacl main.o -Wl,-export-dynamic -L/home/mukawa/tmp/dpdk/x86_64-native-linuxapp-gcc/lib -L/home/mukawa/tmp/dpdk/x86_64-native-linuxapp-gcc/lib -Wl,--whole-archive -Wl,-lrte_distributor -Wl,-lrte_kni -Wl,-lrte_pipeline -Wl,-lrte_table -Wl,-lrte_port -Wl,-lrte_timer -Wl,-lrte_hash -Wl,-lrte_lpm -Wl,-lrte_power -Wl,-lrte_acl -Wl,-lrte_meter -Wl,-lrte_sched -Wl,-lm -Wl,-lrt -Wl,--start-group -Wl,-lrte_kvargs -Wl,-lrte_mbuf -Wl,-lrte_ip_frag -Wl,-lethdev -Wl,-lrte_malloc -Wl,-lrte_mempool -Wl,-lrte_ring -Wl,-lrte_eal -Wl,-lrte_cmdline -Wl,-lrte_cfgfile -Wl,-lrte_pmd_bond -Wl,-lrt -Wl,-lm -Wl,-lgcc_s -Wl,-ldl -Wl,--end-group -Wl,--no-whole-archive /home/mukawa/tmp/dpdk/x86_64-native-linuxapp-gcc/lib/librte_eal.so: undefined reference to `rte_mempool_lookup' /home/mukawa/tmp/dpdk/x86_64-native-linuxapp-gcc/lib/librte_eal.so: undefined reference to `rte_mempool_create' << Reproduce the issue with same options >> $ cd x86_64-native-linuxapp-gcc/build/app/test-acl/ $ gcc -Wp,-MD,./.main.o.d.tmp -m64 -pthread -fPIC -march=native -DRTE_MACHINE_CPUFLAG_SSE -DRTE_MACHINE_CPUFLAG_SSE2 -DRTE_MACHINE_CPUFLAG_SSE3 -DRTE_MACHINE_CPUFLAG_SSSE3 -DRTE_MACHINE_CPUFLAG_SSE4_1 -DRTE_MACHINE_CPUFLAG_SSE4_2 -DRTE_MACHINE_CPUFLAG_AES -DRTE_MACHINE_CPUFLAG_PCLMULQDQ -DRTE_MACHINE_CPUFLAG_AVX -DRTE_MACHINE_CPUFLAG_F16C -DRTE_COMPILE_TIME_CPUFLAGS=RTE_CPUFLAG_SSE,RTE_CPUFLAG_SSE2,RTE_CPUFLAG_SSE3,RTE_CPUFLAG_SSSE3,RTE_CPUFLAG_SSE4_1,RTE_CPUFLAG_SSE4_2,RTE_CPUFLAG_AES,RTE_CPUFLAG_PCLMULQDQ,RTE_CPUFLAG_AVX,RTE_CPUFLAG_F16C -I/home/mukawa/tmp/dpdk/x86_64-native-linuxapp-gcc/include -include /home/mukawa/tmp/dpdk/x86_64-native-linuxapp-gcc/include/rte_config.h -W -Wall -Werror -Wstrict-prototypes -Wmissing-prototypes -Wmissing-declarations -Wold-style-definition -Wpointer-arith -Wcast-align -Wnested-externs -Wcast-qual -Wformat-nonliteral -Wformat-security -Wundef -Wwrite-strings -o main.o -c /home/mukawa/tmp/dpdk/app/test-acl/main.c mukawa@eris:~/tmp/dpdk/x86_64-native-linuxapp-gcc/build/app/test-acl$ gcc -m64 -pthread -fPIC -march=native -DRTE_MACHINE_CPUFLAG_SSE -DRTE_MACHINE_CPUFLAG_SSE2 -DRTE_MACHINE_CPUFLAG_SSE3 -DRTE_MACHINE_CPUFLAG_SSSE3 -DRTE_MACHINE_CPUFLAG_SSE4_1 -DRTE_MACHINE_CPUFLAG_SSE4_2 -DRTE_MACHINE_CPUFLAG_AES -DRTE_MACHINE_CPUFLAG_PCLMULQDQ -DRTE_MACHINE_CPUFLAG_AVX -DRTE_MACHINE_CPUFLAG_F16C -DRTE_COMPILE_TIME_CPUFLAGS=RTE_CPUFLAG_SSE,RTE_CPUFLAG_SSE2,RTE_CPUFLAG_SSE3,RTE_CPUFLAG_SSSE3,RTE_CPUFLAG_SSE4_1,RTE_CPUFLAG_SSE4_2,RTE_CPUFLAG_AES,RTE_CPUFLAG_PCLMULQDQ,RTE_CPUFLAG_AVX,RTE_CPUFLAG_F16C -I/home/mukawa/tmp/dpdk/x86_64-native-linuxapp-gcc/include -include /home/mukawa/tmp/dpdk/x86_64-native-linuxapp-gcc/include/rte_config.h -W -Wall -Werror -Wstrict-prototypes -Wmissing-prototypes -Wmissing-declarations -Wold-style-definition -Wpointer-arith -Wcast-align -Wnested-externs -Wcast-qual -Wformat-nonliteral -Wformat-security -Wundef -Wwrite-strings -Wl,-Map=testacl.map,--cref -o testacl main.o -Wl,-export-dynamic -L/home/mukawa/tmp/dpdk/x86_64-native-linuxapp-gcc/lib -L/home/mukawa/tmp/dpdk/x86_64-native-linuxapp-gcc/lib -Wl,--whole-archive -Wl,-lrte_distributor -Wl,-lrte_kni -Wl,-lrte_pipeline -Wl,-lrte_table -Wl,-lrte_port -Wl,-lrte_timer -Wl,-lrte_hash -Wl,-lrte_lpm -Wl,-lrte_power -Wl,-lrte_acl -Wl,-lrte_meter -Wl,-lrte_sched -Wl,-lm -Wl,-lrt -Wl,--start-group -Wl,-lrte_kvargs -Wl,-lrte_mbuf -Wl,-lrte_ip_frag -Wl,-lethdev -Wl,-lrte_malloc -Wl,-lrte_mempool -Wl,-lrte_ring -Wl,-lrte_eal -Wl,-lrte_cmdline -Wl,-lrte_cfgfile -Wl,-lrte_pmd_bond -Wl,-lrt -Wl,-lm -Wl,-lgcc_s -Wl,-ldl -Wl,--end-group -Wl,--no-whole-archive /home/mukawa/tmp/dpdk/x86_64-native-linuxapp-gcc/lib/librte_eal.so: undefined reference to `rte_mempool_lookup' /home/mukawa/tmp/dpdk/x86_64-native-linuxapp-gcc/lib/librte_eal.so: undefined reference to `rte_mempool_create' collect2: error: ld returned 1 exit status ---------------------------------------------------------------------- I just enabled the following option, then compile DPDK. CONFIG_RTE_BUILD_SHARED_LIB Is this collect to compile PMDs as dynamic link libraries? With the option, all libraries include are compiled as dynamic link library. Does "--start-group/--end-group" options work with dynamic link libraries? Regards, Tetsuya
(2014/10/02 11:46), Matthew Hall wrote: > On Thu, Oct 02, 2014 at 10:43:52AM +0900, Tetsuya Mukawa wrote: > It's worth pointing out that you're likely better off using > COMBINE_LIBS to make one big static lib rather than using a shared lib > or you're facing a performance loss from the dynamic linking overhead. > Matthew. Thanks. I will go over it Regards, Tetsuya
On Thu, Oct 02, 2014 at 11:48:37AM +0900, Tetsuya Mukawa wrote: > (2014/10/01 20:56), Thomas Monjalon wrote: > > 2014-10-01 06:50, Neil Horman: > >> On Wed, Oct 01, 2014 at 01:27:03PM +0900, mukawa@igel.co.jp wrote: > >>> When CONFIG_RTE_BUILD_SHARED_LIB is enabled, linking errors occured > >>> while compiling. It seems those errors are caused by wrong link order > >>> of some libraries. The patch fixes it like following. > >>> > >>> 1. librte_eal > >>> 2. librte_malloc > >>> 3. librte_mempool > >>> 4. librte_ring > >>> 5. librte_pmd_bond > >>> 6. librte_kvargs > >>> > >> I'm not sure why thats necesecary. We add a --start-group/--end-group pair > >> halfway through this makefile. If we just encompassed the entire set of > >> libraries in that group, order would be irrelevant. > > I don't see any error. > > Please Tetsuya, could you describe how you test and what is the error message? > > > > Thanks > Thank you for testing. > I have confirmed '--start-group/--end-groups' is specified while > compiling, but I am still seeing the error. > > Here is what I actually did. > > ---------------------------------------------------------------------- > > << Show my environment >> > $ uname -a > Linux eris 3.13.0-29-generic #53-Ubuntu SMP Wed Jun 4 21:00:20 UTC 2014 > x86_64 x86_64 x86_64 GNU/Linux > $ lsb_release -a > No LSB modules are available. > Distributor ID: Ubuntu > Description: Ubuntu 14.04.1 LTS > Release: 14.04 > Codename: trusty > $ gcc -v > Using built-in specs. > COLLECT_GCC=gcc > COLLECT_LTO_WRAPPER=/usr/lib/gcc/x86_64-linux-gnu/4.8/lto-wrapper > Target: x86_64-linux-gnu > Configured with: ../src/configure -v --with-pkgversion='Ubuntu > 4.8.2-19ubuntu1' --with-bugurl=file:///usr/share/doc/gcc-4.8/README.Bugs > --enable-languages=c,c++,java,go,d,fortran,objc,obj-c++ --prefix=/usr > --program-suffix=-4.8 --enable-shared --enable-linker-build-id > --libexecdir=/usr/lib --without-included-gettext --enable-threads=posix > --with-gxx-include-dir=/usr/include/c++/4.8 --libdir=/usr/lib > --enable-nls --with-sysroot=/ --enable-clocale=gnu > --enable-libstdcxx-debug --enable-libstdcxx-time=yes > --enable-gnu-unique-object --disable-libmudflap --enable-plugin > --with-system-zlib --disable-browser-plugin --enable-java-awt=gtk > --enable-gtk-cairo > --with-java-home=/usr/lib/jvm/java-1.5.0-gcj-4.8-amd64/jre > --enable-java-home > --with-jvm-root-dir=/usr/lib/jvm/java-1.5.0-gcj-4.8-amd64 > --with-jvm-jar-dir=/usr/lib/jvm-exports/java-1.5.0-gcj-4.8-amd64 > --with-arch-directory=amd64 > --with-ecj-jar=/usr/share/java/eclipse-ecj.jar --enable-objc-gc > --enable-multiarch --disable-werror --with-arch-32=i686 --with-abi=m64 > --with-multilib-list=m32,m64,mx32 --with-tune=generic > --enable-checking=release --build=x86_64-linux-gnu > --host=x86_64-linux-gnu --target=x86_64-linux-gnu > Thread model: posix > gcc version 4.8.2 (Ubuntu 4.8.2-19ubuntu1) > > << Compile DPDK >> > $ git clone git://dpdk.org/dpdk > $ cd dpdk > $ vi config/common_linuxapp > CONFIG_RTE_BUILD_SHARED_LIB=y > $ T=x86_64-native-linuxapp-gcc make install V=1 > > ....... > > == Build app/test-acl > gcc -Wp,-MD,./.main.o.d.tmp -m64 -pthread -fPIC -march=native > -DRTE_MACHINE_CPUFLAG_SSE -DRTE_MACHINE_CPUFLAG_SSE2 > -DRTE_MACHINE_CPUFLAG_SSE3 -DRTE_MACHINE_CPUFLAG_SSSE3 > -DRTE_MACHINE_CPUFLAG_SSE4_1 -DRTE_MACHINE_CPUFLAG_SSE4_2 > -DRTE_MACHINE_CPUFLAG_AES -DRTE_MACHINE_CPUFLAG_PCLMULQDQ > -DRTE_MACHINE_CPUFLAG_AVX -DRTE_MACHINE_CPUFLAG_F16C > -DRTE_COMPILE_TIME_CPUFLAGS=RTE_CPUFLAG_SSE,RTE_CPUFLAG_SSE2,RTE_CPUFLAG_SSE3,RTE_CPUFLAG_SSSE3,RTE_CPUFLAG_SSE4_1,RTE_CPUFLAG_SSE4_2,RTE_CPUFLAG_AES,RTE_CPUFLAG_PCLMULQDQ,RTE_CPUFLAG_AVX,RTE_CPUFLAG_F16C > -I/home/mukawa/tmp/dpdk/x86_64-native-linuxapp-gcc/include -include > /home/mukawa/tmp/dpdk/x86_64-native-linuxapp-gcc/include/rte_config.h -W > -Wall -Werror -Wstrict-prototypes -Wmissing-prototypes > -Wmissing-declarations -Wold-style-definition -Wpointer-arith > -Wcast-align -Wnested-externs -Wcast-qual -Wformat-nonliteral > -Wformat-security -Wundef -Wwrite-strings -o main.o -c > /home/mukawa/tmp/dpdk/app/test-acl/main.c > gcc -m64 -pthread -fPIC -march=native -DRTE_MACHINE_CPUFLAG_SSE > -DRTE_MACHINE_CPUFLAG_SSE2 -DRTE_MACHINE_CPUFLAG_SSE3 > -DRTE_MACHINE_CPUFLAG_SSSE3 -DRTE_MACHINE_CPUFLAG_SSE4_1 > -DRTE_MACHINE_CPUFLAG_SSE4_2 -DRTE_MACHINE_CPUFLAG_AES > -DRTE_MACHINE_CPUFLAG_PCLMULQDQ -DRTE_MACHINE_CPUFLAG_AVX > -DRTE_MACHINE_CPUFLAG_F16C > -DRTE_COMPILE_TIME_CPUFLAGS=RTE_CPUFLAG_SSE,RTE_CPUFLAG_SSE2,RTE_CPUFLAG_SSE3,RTE_CPUFLAG_SSSE3,RTE_CPUFLAG_SSE4_1,RTE_CPUFLAG_SSE4_2,RTE_CPUFLAG_AES,RTE_CPUFLAG_PCLMULQDQ,RTE_CPUFLAG_AVX,RTE_CPUFLAG_F16C > -I/home/mukawa/tmp/dpdk/x86_64-native-linuxapp-gcc/include -include > /home/mukawa/tmp/dpdk/x86_64-native-linuxapp-gcc/include/rte_config.h -W > -Wall -Werror -Wstrict-prototypes -Wmissing-prototypes > -Wmissing-declarations -Wold-style-definition -Wpointer-arith > -Wcast-align -Wnested-externs -Wcast-qual -Wformat-nonliteral > -Wformat-security -Wundef -Wwrite-strings -Wl,-Map=testacl.map,--cref > -o testacl main.o -Wl,-export-dynamic > -L/home/mukawa/tmp/dpdk/x86_64-native-linuxapp-gcc/lib > -L/home/mukawa/tmp/dpdk/x86_64-native-linuxapp-gcc/lib > -Wl,--whole-archive -Wl,-lrte_distributor -Wl,-lrte_kni > -Wl,-lrte_pipeline -Wl,-lrte_table -Wl,-lrte_port -Wl,-lrte_timer > -Wl,-lrte_hash -Wl,-lrte_lpm -Wl,-lrte_power -Wl,-lrte_acl > -Wl,-lrte_meter -Wl,-lrte_sched -Wl,-lm -Wl,-lrt -Wl,--start-group > -Wl,-lrte_kvargs -Wl,-lrte_mbuf -Wl,-lrte_ip_frag -Wl,-lethdev > -Wl,-lrte_malloc -Wl,-lrte_mempool -Wl,-lrte_ring -Wl,-lrte_eal > -Wl,-lrte_cmdline -Wl,-lrte_cfgfile -Wl,-lrte_pmd_bond -Wl,-lrt -Wl,-lm > -Wl,-lgcc_s -Wl,-ldl -Wl,--end-group -Wl,--no-whole-archive > /home/mukawa/tmp/dpdk/x86_64-native-linuxapp-gcc/lib/librte_eal.so: > undefined reference to `rte_mempool_lookup' > /home/mukawa/tmp/dpdk/x86_64-native-linuxapp-gcc/lib/librte_eal.so: > undefined reference to `rte_mempool_create' > > << Reproduce the issue with same options >> > $ cd x86_64-native-linuxapp-gcc/build/app/test-acl/ > $ gcc -Wp,-MD,./.main.o.d.tmp -m64 -pthread -fPIC -march=native > -DRTE_MACHINE_CPUFLAG_SSE -DRTE_MACHINE_CPUFLAG_SSE2 > -DRTE_MACHINE_CPUFLAG_SSE3 -DRTE_MACHINE_CPUFLAG_SSSE3 > -DRTE_MACHINE_CPUFLAG_SSE4_1 -DRTE_MACHINE_CPUFLAG_SSE4_2 > -DRTE_MACHINE_CPUFLAG_AES -DRTE_MACHINE_CPUFLAG_PCLMULQDQ > -DRTE_MACHINE_CPUFLAG_AVX -DRTE_MACHINE_CPUFLAG_F16C > -DRTE_COMPILE_TIME_CPUFLAGS=RTE_CPUFLAG_SSE,RTE_CPUFLAG_SSE2,RTE_CPUFLAG_SSE3,RTE_CPUFLAG_SSSE3,RTE_CPUFLAG_SSE4_1,RTE_CPUFLAG_SSE4_2,RTE_CPUFLAG_AES,RTE_CPUFLAG_PCLMULQDQ,RTE_CPUFLAG_AVX,RTE_CPUFLAG_F16C > -I/home/mukawa/tmp/dpdk/x86_64-native-linuxapp-gcc/include -include > /home/mukawa/tmp/dpdk/x86_64-native-linuxapp-gcc/include/rte_config.h -W > -Wall -Werror -Wstrict-prototypes -Wmissing-prototypes > -Wmissing-declarations -Wold-style-definition -Wpointer-arith > -Wcast-align -Wnested-externs -Wcast-qual -Wformat-nonliteral > -Wformat-security -Wundef -Wwrite-strings -o main.o -c > /home/mukawa/tmp/dpdk/app/test-acl/main.c > mukawa@eris:~/tmp/dpdk/x86_64-native-linuxapp-gcc/build/app/test-acl$ > gcc -m64 -pthread -fPIC -march=native -DRTE_MACHINE_CPUFLAG_SSE > -DRTE_MACHINE_CPUFLAG_SSE2 -DRTE_MACHINE_CPUFLAG_SSE3 > -DRTE_MACHINE_CPUFLAG_SSSE3 -DRTE_MACHINE_CPUFLAG_SSE4_1 > -DRTE_MACHINE_CPUFLAG_SSE4_2 -DRTE_MACHINE_CPUFLAG_AES > -DRTE_MACHINE_CPUFLAG_PCLMULQDQ -DRTE_MACHINE_CPUFLAG_AVX > -DRTE_MACHINE_CPUFLAG_F16C > -DRTE_COMPILE_TIME_CPUFLAGS=RTE_CPUFLAG_SSE,RTE_CPUFLAG_SSE2,RTE_CPUFLAG_SSE3,RTE_CPUFLAG_SSSE3,RTE_CPUFLAG_SSE4_1,RTE_CPUFLAG_SSE4_2,RTE_CPUFLAG_AES,RTE_CPUFLAG_PCLMULQDQ,RTE_CPUFLAG_AVX,RTE_CPUFLAG_F16C > -I/home/mukawa/tmp/dpdk/x86_64-native-linuxapp-gcc/include -include > /home/mukawa/tmp/dpdk/x86_64-native-linuxapp-gcc/include/rte_config.h -W > -Wall -Werror -Wstrict-prototypes -Wmissing-prototypes > -Wmissing-declarations -Wold-style-definition -Wpointer-arith > -Wcast-align -Wnested-externs -Wcast-qual -Wformat-nonliteral > -Wformat-security -Wundef -Wwrite-strings -Wl,-Map=testacl.map,--cref > -o testacl main.o -Wl,-export-dynamic > -L/home/mukawa/tmp/dpdk/x86_64-native-linuxapp-gcc/lib > -L/home/mukawa/tmp/dpdk/x86_64-native-linuxapp-gcc/lib > -Wl,--whole-archive -Wl,-lrte_distributor -Wl,-lrte_kni > -Wl,-lrte_pipeline -Wl,-lrte_table -Wl,-lrte_port -Wl,-lrte_timer > -Wl,-lrte_hash -Wl,-lrte_lpm -Wl,-lrte_power -Wl,-lrte_acl > -Wl,-lrte_meter -Wl,-lrte_sched -Wl,-lm -Wl,-lrt -Wl,--start-group > -Wl,-lrte_kvargs -Wl,-lrte_mbuf -Wl,-lrte_ip_frag -Wl,-lethdev > -Wl,-lrte_malloc -Wl,-lrte_mempool -Wl,-lrte_ring -Wl,-lrte_eal > -Wl,-lrte_cmdline -Wl,-lrte_cfgfile -Wl,-lrte_pmd_bond -Wl,-lrt -Wl,-lm > -Wl,-lgcc_s -Wl,-ldl -Wl,--end-group -Wl,--no-whole-archive > /home/mukawa/tmp/dpdk/x86_64-native-linuxapp-gcc/lib/librte_eal.so: > undefined reference to `rte_mempool_lookup' > /home/mukawa/tmp/dpdk/x86_64-native-linuxapp-gcc/lib/librte_eal.so: > undefined reference to `rte_mempool_create' > collect2: error: ld returned 1 exit status > Hi Tetsuya, Would you mind posting the output of the last command adding the option '-v'? Sergio > ---------------------------------------------------------------------- > > I just enabled the following option, then compile DPDK. > CONFIG_RTE_BUILD_SHARED_LIB > Is this collect to compile PMDs as dynamic link libraries? > > With the option, all libraries include are compiled as dynamic link library. > Does "--start-group/--end-group" options work with dynamic link libraries? > > Regards, > Tetsuya >
(2014/10/02 17:12), Sergio Gonzalez Monroy wrote: > On Thu, Oct 02, 2014 at 11:48:37AM +0900, Tetsuya Mukawa wrote: > >> $ gcc -m64 -pthread -fPIC -march=native -DRTE_MACHINE_CPUFLAG_SSE >> -DRTE_MACHINE_CPUFLAG_SSE2 -DRTE_MACHINE_CPUFLAG_SSE3 >> -DRTE_MACHINE_CPUFLAG_SSSE3 -DRTE_MACHINE_CPUFLAG_SSE4_1 >> -DRTE_MACHINE_CPUFLAG_SSE4_2 -DRTE_MACHINE_CPUFLAG_AES >> -DRTE_MACHINE_CPUFLAG_PCLMULQDQ -DRTE_MACHINE_CPUFLAG_AVX >> -DRTE_MACHINE_CPUFLAG_F16C >> -DRTE_COMPILE_TIME_CPUFLAGS=RTE_CPUFLAG_SSE,RTE_CPUFLAG_SSE2,RTE_CPUFLAG_SSE3,RTE_CPUFLAG_SSSE3,RTE_CPUFLAG_SSE4_1,RTE_CPUFLAG_SSE4_2,RTE_CPUFLAG_AES,RTE_CPUFLAG_PCLMULQDQ,RTE_CPUFLAG_AVX,RTE_CPUFLAG_F16C >> -I/home/mukawa/tmp/dpdk/x86_64-native-linuxapp-gcc/include -include >> /home/mukawa/tmp/dpdk/x86_64-native-linuxapp-gcc/include/rte_config.h >> -W -Wall -Werror -Wstrict-prototypes -Wmissing-prototypes >> -Wmissing-declarations -Wold-style-definition -Wpointer-arith >> -Wcast-align -Wnested-externs -Wcast-qual -Wformat-nonliteral >> -Wformat-security -Wundef -Wwrite-strings -Wl,-Map=testacl.map,--cref >> -o testacl main.o -Wl,-export-dynamic >> -L/home/mukawa/tmp/dpdk/x86_64-native-linuxapp-gcc/lib >> -L/home/mukawa/tmp/dpdk/x86_64-native-linuxapp-gcc/lib >> -Wl,--whole-archive -Wl,-lrte_distributor -Wl,-lrte_kni >> -Wl,-lrte_pipeline -Wl,-lrte_table -Wl,-lrte_port -Wl,-lrte_timer >> -Wl,-lrte_hash -Wl,-lrte_lpm -Wl,-lrte_power -Wl,-lrte_acl >> -Wl,-lrte_meter -Wl,-lrte_sched -Wl,-lm -Wl,-lrt -Wl,--start-group >> -Wl,-lrte_kvargs -Wl,-lrte_mbuf -Wl,-lrte_ip_frag -Wl,-lethdev >> -Wl,-lrte_malloc -Wl,-lrte_mempool -Wl,-lrte_ring -Wl,-lrte_eal >> -Wl,-lrte_cmdline -Wl,-lrte_cfgfile -Wl,-lrte_pmd_bond -Wl,-lrt >> -Wl,-lm -Wl,-lgcc_s -Wl,-ldl -Wl,--end-group -Wl,--no-whole-archive >> /home/mukawa/tmp/dpdk/x86_64-native-linuxapp-gcc/lib/librte_eal.so: >> undefined reference to `rte_mempool_lookup' >> /home/mukawa/tmp/dpdk/x86_64-native-linuxapp-gcc/lib/librte_eal.so: >> undefined reference to `rte_mempool_create' collect2: error: ld >> returned 1 exit status > Hi Tetsuya, > > Would you mind posting the output of the last command adding the option '-v'? Sure, here is. $ gcc -m64 -pthread -fPIC -march=native -DRTE_MACHINE_CPUFLAG_SSE -DRTE_MACHINE_CPUFLAG_SSE2 -DRTE_MACHINE_CPUFLAG_SSE3 -DRTE_MACHINE_CPUFLAG_SSSE3 -DRTE_MACHINE_CPUFLAG_SSE4_1 -DRTE_MACHINE_CPUFLAG_SSE4_2 -DRTE_MACHINE_CPUFLAG_AES -DRTE_MACHINE_CPUFLAG_PCLMULQDQ -DRTE_MACHINE_CPUFLAG_AVX -DRTE_MACHINE_CPUFLAG_F16C -DRTE_COMPILE_TIME_CPUFLAGS=RTE_CPUFLAG_SSE,RTE_CPUFLAG_SSE2,RTE_CPUFLAG_SSE3,RTE_CPUFLAG_SSSE3,RTE_CPUFLAG_SSE4_1,RTE_CPUFLAG_SSE4_2,RTE_CPUFLAG_AES,RTE_CPUFLAG_PCLMULQDQ,RTE_CPUFLAG_AVX,RTE_CPUFLAG_F16C -I/home/mukawa/tmp/dpdk/x86_64-native-linuxapp-gcc/include -include /home/mukawa/tmp/dpdk/x86_64-native-linuxapp-gcc/include/rte_config.h -W -Wall -Werror -Wstrict-prototypes -Wmissing-prototypes -Wmissing-declarations -Wold-style-definition -Wpointer-arith -Wcast-align -Wnested-externs -Wcast-qual -Wformat-nonliteral -Wformat-security -Wundef -Wwrite-strings -Wl,-Map=testacl.map,--cref -o testacl main.o -Wl,-export-dynamic -L/home/mukawa/tmp/dpdk/x86_64-native-linuxapp-gcc/lib -L/home/mukawa/tmp/dpdk/x86_64-native-linuxapp-gcc/lib -Wl,--whole-archive -Wl,-lrte_distributor -Wl,-lrte_kni -Wl,-lrte_pipeline -Wl,-lrte_table -Wl,-lrte_port -Wl,-lrte_timer -Wl,-lrte_hash -Wl,-lrte_lpm -Wl,-lrte_power -Wl,-lrte_acl -Wl,-lrte_meter -Wl,-lrte_sched -Wl,-lm -Wl,-lrt -Wl,--start-group -Wl,-lrte_kvargs -Wl,-lrte_mbuf -Wl,-lrte_ip_frag -Wl,-lethdev -Wl,-lrte_malloc -Wl,-lrte_mempool -Wl,-lrte_ring -Wl,-lrte_eal -Wl,-lrte_cmdline -Wl,-lrte_cfgfile -Wl,-lrte_pmd_bond -Wl,-lrt -Wl,-lm -Wl,-lgcc_s -Wl,-ldl -Wl,--end-group -Wl,--no-whole-archive -v Using built-in specs. COLLECT_GCC=gcc COLLECT_LTO_WRAPPER=/usr/lib/gcc/x86_64-linux-gnu/4.8/lto-wrapper Target: x86_64-linux-gnu Configured with: ../src/configure -v --with-pkgversion='Ubuntu 4.8.2-19ubuntu1' --with-bugurl=file:///usr/share/doc/gcc-4.8/README.Bugs --enable-languages=c,c++,java,go,d,fortran,objc,obj-c++ --prefix=/usr --program-suffix=-4.8 --enable-shared --enable-linker-build-id --libexecdir=/usr/lib --without-included-gettext --enable-threads=posix --with-gxx-include-dir=/usr/include/c++/4.8 --libdir=/usr/lib --enable-nls --with-sysroot=/ --enable-clocale=gnu --enable-libstdcxx-debug --enable-libstdcxx-time=yes --enable-gnu-unique-object --disable-libmudflap --enable-plugin --with-system-zlib --disable-browser-plugin --enable-java-awt=gtk --enable-gtk-cairo --with-java-home=/usr/lib/jvm/java-1.5.0-gcj-4.8-amd64/jre --enable-java-home --with-jvm-root-dir=/usr/lib/jvm/java-1.5.0-gcj-4.8-amd64 --with-jvm-jar-dir=/usr/lib/jvm-exports/java-1.5.0-gcj-4.8-amd64 --with-arch-directory=amd64 --with-ecj-jar=/usr/share/java/eclipse-ecj.jar --enable-objc-gc --enable-multiarch --disable-werror --with-arch-32=i686 --with-abi=m64 --with-multilib-list=m32,m64,mx32 --with-tune=generic --enable-checking=release --build=x86_64-linux-gnu --host=x86_64-linux-gnu --target=x86_64-linux-gnu Thread model: posix gcc version 4.8.2 (Ubuntu 4.8.2-19ubuntu1) COMPILER_PATH=/usr/lib/gcc/x86_64-linux-gnu/4.8/:/usr/lib/gcc/x86_64-linux-gnu/4.8/:/usr/lib/gcc/x86_64-linux-gnu/:/usr/lib/gcc/x86_64-linux-gnu/4.8/:/usr/lib/gcc/x86_64-linux-gnu/ LIBRARY_PATH=/usr/lib/gcc/x86_64-linux-gnu/4.8/:/usr/lib/gcc/x86_64-linux-gnu/4.8/../../../x86_64-linux-gnu/:/usr/lib/gcc/x86_64-linux-gnu/4.8/../../../../lib/:/lib/x86_64-linux-gnu/:/lib/../lib/:/usr/lib/x86_64-linux-gnu/:/usr/lib/../lib/:/usr/lib/gcc/x86_64-linux-gnu/4.8/../../../:/lib/:/usr/lib/ COLLECT_GCC_OPTIONS='-m64' '-pthread' '-fPIC' '-march=native' '-D' 'RTE_MACHINE_CPUFLAG_SSE' '-D' 'RTE_MACHINE_CPUFLAG_SSE2' '-D' 'RTE_MACHINE_CPUFLAG_SSE3' '-D' 'RTE_MACHINE_CPUFLAG_SSSE3' '-D' 'RTE_MACHINE_CPUFLAG_SSE4_1' '-D' 'RTE_MACHINE_CPUFLAG_SSE4_2' '-D' 'RTE_MACHINE_CPUFLAG_AES' '-D' 'RTE_MACHINE_CPUFLAG_PCLMULQDQ' '-D' 'RTE_MACHINE_CPUFLAG_AVX' '-D' 'RTE_MACHINE_CPUFLAG_F16C' '-D' 'RTE_COMPILE_TIME_CPUFLAGS=RTE_CPUFLAG_SSE,RTE_CPUFLAG_SSE2,RTE_CPUFLAG_SSE3,RTE_CPUFLAG_SSSE3,RTE_CPUFLAG_SSE4_1,RTE_CPUFLAG_SSE4_2,RTE_CPUFLAG_AES,RTE_CPUFLAG_PCLMULQDQ,RTE_CPUFLAG_AVX,RTE_CPUFLAG_F16C' '-I' '/home/mukawa/tmp/dpdk/x86_64-native-linuxapp-gcc/include' '-include' '/home/mukawa/tmp/dpdk/x86_64-native-linuxapp-gcc/include/rte_config.h' '-Wextra' '-Wall' '-Werror' '-Wstrict-prototypes' '-Wmissing-prototypes' '-Wmissing-declarations' '-Wold-style-definition' '-Wpointer-arith' '-Wcast-align' '-Wnested-externs' '-Wcast-qual' '-Wformat-nonliteral' '-Wformat-security' '-Wundef' '-Wwrite-strings' '-o' 'testacl' '-L/home/mukawa/tmp/dpdk/x86_64-native-linuxapp-gcc/lib' '-L/home/mukawa/tmp/dpdk/x86_64-native-linuxapp-gcc/lib' '-v' /usr/lib/gcc/x86_64-linux-gnu/4.8/collect2 --sysroot=/ --build-id --eh-frame-hdr -m elf_x86_64 --hash-style=gnu --as-needed -dynamic-linker /lib64/ld-linux-x86-64.so.2 -z relro -o testacl /usr/lib/gcc/x86_64-linux-gnu/4.8/../../../x86_64-linux-gnu/crt1.o /usr/lib/gcc/x86_64-linux-gnu/4.8/../../../x86_64-linux-gnu/crti.o /usr/lib/gcc/x86_64-linux-gnu/4.8/crtbegin.o -L/home/mukawa/tmp/dpdk/x86_64-native-linuxapp-gcc/lib -L/home/mukawa/tmp/dpdk/x86_64-native-linuxapp-gcc/lib -L/usr/lib/gcc/x86_64-linux-gnu/4.8 -L/usr/lib/gcc/x86_64-linux-gnu/4.8/../../../x86_64-linux-gnu -L/usr/lib/gcc/x86_64-linux-gnu/4.8/../../../../lib -L/lib/x86_64-linux-gnu -L/lib/../lib -L/usr/lib/x86_64-linux-gnu -L/usr/lib/../lib -L/usr/lib/gcc/x86_64-linux-gnu/4.8/../../.. -Map=testacl.map --cref main.o -export-dynamic --whole-archive -lrte_distributor -lrte_kni -lrte_pipeline -lrte_table -lrte_port -lrte_timer -lrte_hash -lrte_lpm -lrte_power -lrte_acl -lrte_meter -lrte_sched -lm -lrt --start-group -lrte_kvargs -lrte_mbuf -lrte_ip_frag -lethdev -lrte_malloc -lrte_mempool -lrte_ring -lrte_eal -lrte_cmdline -lrte_cfgfile -lrte_pmd_bond -lrt -lm -lgcc_s -ldl --end-group --no-whole-archive -lgcc --as-needed -lgcc_s --no-as-needed -lpthread -lc -lgcc --as-needed -lgcc_s --no-as-needed /usr/lib/gcc/x86_64-linux-gnu/4.8/crtend.o /usr/lib/gcc/x86_64-linux-gnu/4.8/../../../x86_64-linux-gnu/crtn.o /home/mukawa/tmp/dpdk/x86_64-native-linuxapp-gcc/lib/librte_eal.so: undefined reference to `rte_mempool_lookup' /home/mukawa/tmp/dpdk/x86_64-native-linuxapp-gcc/lib/librte_eal.so: undefined reference to `rte_mempool_create' collect2: error: ld returned 1 exit status Regards, Tetsuya > Sergio > > >> ---------------------------------------------------------------------- >> >> I just enabled the following option, then compile DPDK. >> CONFIG_RTE_BUILD_SHARED_LIB >> Is this collect to compile PMDs as dynamic link libraries? >> >> With the option, all libraries include are compiled as dynamic link library. >> Does "--start-group/--end-group" options work with dynamic link libraries? >> >> Regards, >> Tetsuya >>
On Thu, Oct 02, 2014 at 05:28:04PM +0900, Tetsuya Mukawa wrote: > (2014/10/02 17:12), Sergio Gonzalez Monroy wrote: > > On Thu, Oct 02, 2014 at 11:48:37AM +0900, Tetsuya Mukawa wrote: > > > >> $ gcc -m64 -pthread -fPIC -march=native -DRTE_MACHINE_CPUFLAG_SSE > >> -DRTE_MACHINE_CPUFLAG_SSE2 -DRTE_MACHINE_CPUFLAG_SSE3 > >> -DRTE_MACHINE_CPUFLAG_SSSE3 -DRTE_MACHINE_CPUFLAG_SSE4_1 > >> -DRTE_MACHINE_CPUFLAG_SSE4_2 -DRTE_MACHINE_CPUFLAG_AES > >> -DRTE_MACHINE_CPUFLAG_PCLMULQDQ -DRTE_MACHINE_CPUFLAG_AVX > >> -DRTE_MACHINE_CPUFLAG_F16C > >> -DRTE_COMPILE_TIME_CPUFLAGS=RTE_CPUFLAG_SSE,RTE_CPUFLAG_SSE2,RTE_CPUFLAG_SSE3,RTE_CPUFLAG_SSSE3,RTE_CPUFLAG_SSE4_1,RTE_CPUFLAG_SSE4_2,RTE_CPUFLAG_AES,RTE_CPUFLAG_PCLMULQDQ,RTE_CPUFLAG_AVX,RTE_CPUFLAG_F16C > >> -I/home/mukawa/tmp/dpdk/x86_64-native-linuxapp-gcc/include -include > >> /home/mukawa/tmp/dpdk/x86_64-native-linuxapp-gcc/include/rte_config.h > >> -W -Wall -Werror -Wstrict-prototypes -Wmissing-prototypes > >> -Wmissing-declarations -Wold-style-definition -Wpointer-arith > >> -Wcast-align -Wnested-externs -Wcast-qual -Wformat-nonliteral > >> -Wformat-security -Wundef -Wwrite-strings -Wl,-Map=testacl.map,--cref > >> -o testacl main.o -Wl,-export-dynamic > >> -L/home/mukawa/tmp/dpdk/x86_64-native-linuxapp-gcc/lib > >> -L/home/mukawa/tmp/dpdk/x86_64-native-linuxapp-gcc/lib > >> -Wl,--whole-archive -Wl,-lrte_distributor -Wl,-lrte_kni > >> -Wl,-lrte_pipeline -Wl,-lrte_table -Wl,-lrte_port -Wl,-lrte_timer > >> -Wl,-lrte_hash -Wl,-lrte_lpm -Wl,-lrte_power -Wl,-lrte_acl > >> -Wl,-lrte_meter -Wl,-lrte_sched -Wl,-lm -Wl,-lrt -Wl,--start-group > >> -Wl,-lrte_kvargs -Wl,-lrte_mbuf -Wl,-lrte_ip_frag -Wl,-lethdev > >> -Wl,-lrte_malloc -Wl,-lrte_mempool -Wl,-lrte_ring -Wl,-lrte_eal > >> -Wl,-lrte_cmdline -Wl,-lrte_cfgfile -Wl,-lrte_pmd_bond -Wl,-lrt > >> -Wl,-lm -Wl,-lgcc_s -Wl,-ldl -Wl,--end-group -Wl,--no-whole-archive > >> /home/mukawa/tmp/dpdk/x86_64-native-linuxapp-gcc/lib/librte_eal.so: > >> undefined reference to `rte_mempool_lookup' > >> /home/mukawa/tmp/dpdk/x86_64-native-linuxapp-gcc/lib/librte_eal.so: > >> undefined reference to `rte_mempool_create' collect2: error: ld > >> returned 1 exit status > > Hi Tetsuya, > > > > Would you mind posting the output of the last command adding the option '-v'? > Sure, here is. > > $ gcc -m64 -pthread -fPIC -march=native -DRTE_MACHINE_CPUFLAG_SSE > -DRTE_MACHINE_CPUFLAG_SSE2 -DRTE_MACHINE_CPUFLAG_SSE3 > -DRTE_MACHINE_CPUFLAG_SSSE3 -DRTE_MACHINE_CPUFLAG_SSE4_1 > -DRTE_MACHINE_CPUFLAG_SSE4_2 -DRTE_MACHINE_CPUFLAG_AES > -DRTE_MACHINE_CPUFLAG_PCLMULQDQ -DRTE_MACHINE_CPUFLAG_AVX > -DRTE_MACHINE_CPUFLAG_F16C > -DRTE_COMPILE_TIME_CPUFLAGS=RTE_CPUFLAG_SSE,RTE_CPUFLAG_SSE2,RTE_CPUFLAG_SSE3,RTE_CPUFLAG_SSSE3,RTE_CPUFLAG_SSE4_1,RTE_CPUFLAG_SSE4_2,RTE_CPUFLAG_AES,RTE_CPUFLAG_PCLMULQDQ,RTE_CPUFLAG_AVX,RTE_CPUFLAG_F16C > -I/home/mukawa/tmp/dpdk/x86_64-native-linuxapp-gcc/include -include > /home/mukawa/tmp/dpdk/x86_64-native-linuxapp-gcc/include/rte_config.h -W > -Wall -Werror -Wstrict-prototypes -Wmissing-prototypes > -Wmissing-declarations -Wold-style-definition -Wpointer-arith > -Wcast-align -Wnested-externs -Wcast-qual -Wformat-nonliteral > -Wformat-security -Wundef -Wwrite-strings -Wl,-Map=testacl.map,--cref > -o testacl main.o -Wl,-export-dynamic > -L/home/mukawa/tmp/dpdk/x86_64-native-linuxapp-gcc/lib > -L/home/mukawa/tmp/dpdk/x86_64-native-linuxapp-gcc/lib > -Wl,--whole-archive -Wl,-lrte_distributor -Wl,-lrte_kni > -Wl,-lrte_pipeline -Wl,-lrte_table -Wl,-lrte_port -Wl,-lrte_timer > -Wl,-lrte_hash -Wl,-lrte_lpm -Wl,-lrte_power -Wl,-lrte_acl > -Wl,-lrte_meter -Wl,-lrte_sched -Wl,-lm -Wl,-lrt -Wl,--start-group > -Wl,-lrte_kvargs -Wl,-lrte_mbuf -Wl,-lrte_ip_frag -Wl,-lethdev > -Wl,-lrte_malloc -Wl,-lrte_mempool -Wl,-lrte_ring -Wl,-lrte_eal > -Wl,-lrte_cmdline -Wl,-lrte_cfgfile -Wl,-lrte_pmd_bond -Wl,-lrt -Wl,-lm > -Wl,-lgcc_s -Wl,-ldl -Wl,--end-group -Wl,--no-whole-archive -v > Using built-in specs. > COLLECT_GCC=gcc > COLLECT_LTO_WRAPPER=/usr/lib/gcc/x86_64-linux-gnu/4.8/lto-wrapper > Target: x86_64-linux-gnu > Configured with: ../src/configure -v --with-pkgversion='Ubuntu > 4.8.2-19ubuntu1' --with-bugurl=file:///usr/share/doc/gcc-4.8/README.Bugs > --enable-languages=c,c++,java,go,d,fortran,objc,obj-c++ --prefix=/usr > --program-suffix=-4.8 --enable-shared --enable-linker-build-id > --libexecdir=/usr/lib --without-included-gettext --enable-threads=posix > --with-gxx-include-dir=/usr/include/c++/4.8 --libdir=/usr/lib > --enable-nls --with-sysroot=/ --enable-clocale=gnu > --enable-libstdcxx-debug --enable-libstdcxx-time=yes > --enable-gnu-unique-object --disable-libmudflap --enable-plugin > --with-system-zlib --disable-browser-plugin --enable-java-awt=gtk > --enable-gtk-cairo > --with-java-home=/usr/lib/jvm/java-1.5.0-gcj-4.8-amd64/jre > --enable-java-home > --with-jvm-root-dir=/usr/lib/jvm/java-1.5.0-gcj-4.8-amd64 > --with-jvm-jar-dir=/usr/lib/jvm-exports/java-1.5.0-gcj-4.8-amd64 > --with-arch-directory=amd64 > --with-ecj-jar=/usr/share/java/eclipse-ecj.jar --enable-objc-gc > --enable-multiarch --disable-werror --with-arch-32=i686 --with-abi=m64 > --with-multilib-list=m32,m64,mx32 --with-tune=generic > --enable-checking=release --build=x86_64-linux-gnu > --host=x86_64-linux-gnu --target=x86_64-linux-gnu > Thread model: posix > gcc version 4.8.2 (Ubuntu 4.8.2-19ubuntu1) > COMPILER_PATH=/usr/lib/gcc/x86_64-linux-gnu/4.8/:/usr/lib/gcc/x86_64-linux-gnu/4.8/:/usr/lib/gcc/x86_64-linux-gnu/:/usr/lib/gcc/x86_64-linux-gnu/4.8/:/usr/lib/gcc/x86_64-linux-gnu/ > LIBRARY_PATH=/usr/lib/gcc/x86_64-linux-gnu/4.8/:/usr/lib/gcc/x86_64-linux-gnu/4.8/../../../x86_64-linux-gnu/:/usr/lib/gcc/x86_64-linux-gnu/4.8/../../../../lib/:/lib/x86_64-linux-gnu/:/lib/../lib/:/usr/lib/x86_64-linux-gnu/:/usr/lib/../lib/:/usr/lib/gcc/x86_64-linux-gnu/4.8/../../../:/lib/:/usr/lib/ > COLLECT_GCC_OPTIONS='-m64' '-pthread' '-fPIC' '-march=native' '-D' > 'RTE_MACHINE_CPUFLAG_SSE' '-D' 'RTE_MACHINE_CPUFLAG_SSE2' '-D' > 'RTE_MACHINE_CPUFLAG_SSE3' '-D' 'RTE_MACHINE_CPUFLAG_SSSE3' '-D' > 'RTE_MACHINE_CPUFLAG_SSE4_1' '-D' 'RTE_MACHINE_CPUFLAG_SSE4_2' '-D' > 'RTE_MACHINE_CPUFLAG_AES' '-D' 'RTE_MACHINE_CPUFLAG_PCLMULQDQ' '-D' > 'RTE_MACHINE_CPUFLAG_AVX' '-D' 'RTE_MACHINE_CPUFLAG_F16C' '-D' > 'RTE_COMPILE_TIME_CPUFLAGS=RTE_CPUFLAG_SSE,RTE_CPUFLAG_SSE2,RTE_CPUFLAG_SSE3,RTE_CPUFLAG_SSSE3,RTE_CPUFLAG_SSE4_1,RTE_CPUFLAG_SSE4_2,RTE_CPUFLAG_AES,RTE_CPUFLAG_PCLMULQDQ,RTE_CPUFLAG_AVX,RTE_CPUFLAG_F16C' > '-I' '/home/mukawa/tmp/dpdk/x86_64-native-linuxapp-gcc/include' > '-include' > '/home/mukawa/tmp/dpdk/x86_64-native-linuxapp-gcc/include/rte_config.h' > '-Wextra' '-Wall' '-Werror' '-Wstrict-prototypes' '-Wmissing-prototypes' > '-Wmissing-declarations' '-Wold-style-definition' '-Wpointer-arith' > '-Wcast-align' '-Wnested-externs' '-Wcast-qual' '-Wformat-nonliteral' > '-Wformat-security' '-Wundef' '-Wwrite-strings' '-o' 'testacl' > '-L/home/mukawa/tmp/dpdk/x86_64-native-linuxapp-gcc/lib' > '-L/home/mukawa/tmp/dpdk/x86_64-native-linuxapp-gcc/lib' '-v' We have been looking at this issue over the last couple of days. It seems to be an Ubuntu GCC related bug as it works on other distros. GCC is passing incorrectly the option '--as-needed' to LD resulting in wrong linking. > /usr/lib/gcc/x86_64-linux-gnu/4.8/collect2 --sysroot=/ --build-id > --eh-frame-hdr -m elf_x86_64 --hash-style=gnu --as-needed The '--as-needed' just at the end of the above line is incorrect and not matching a closing '--no-as-needed'. You may get away with it by adding 'EXTRA_LDFLAGS=--no-as-needed'. ie. $ make install T=x86_64-native-linuxapp-gcc EXTRA_LDFLAGS=--no-as-needed Sergio > -dynamic-linker /lib64/ld-linux-x86-64.so.2 -z relro -o testacl > /usr/lib/gcc/x86_64-linux-gnu/4.8/../../../x86_64-linux-gnu/crt1.o > /usr/lib/gcc/x86_64-linux-gnu/4.8/../../../x86_64-linux-gnu/crti.o > /usr/lib/gcc/x86_64-linux-gnu/4.8/crtbegin.o > -L/home/mukawa/tmp/dpdk/x86_64-native-linuxapp-gcc/lib > -L/home/mukawa/tmp/dpdk/x86_64-native-linuxapp-gcc/lib > -L/usr/lib/gcc/x86_64-linux-gnu/4.8 > -L/usr/lib/gcc/x86_64-linux-gnu/4.8/../../../x86_64-linux-gnu > -L/usr/lib/gcc/x86_64-linux-gnu/4.8/../../../../lib > -L/lib/x86_64-linux-gnu -L/lib/../lib -L/usr/lib/x86_64-linux-gnu > -L/usr/lib/../lib -L/usr/lib/gcc/x86_64-linux-gnu/4.8/../../.. > -Map=testacl.map --cref main.o -export-dynamic --whole-archive > -lrte_distributor -lrte_kni -lrte_pipeline -lrte_table -lrte_port > -lrte_timer -lrte_hash -lrte_lpm -lrte_power -lrte_acl -lrte_meter > -lrte_sched -lm -lrt --start-group -lrte_kvargs -lrte_mbuf -lrte_ip_frag > -lethdev -lrte_malloc -lrte_mempool -lrte_ring -lrte_eal -lrte_cmdline > -lrte_cfgfile -lrte_pmd_bond -lrt -lm -lgcc_s -ldl --end-group > --no-whole-archive -lgcc --as-needed -lgcc_s --no-as-needed -lpthread > -lc -lgcc --as-needed -lgcc_s --no-as-needed > /usr/lib/gcc/x86_64-linux-gnu/4.8/crtend.o > /usr/lib/gcc/x86_64-linux-gnu/4.8/../../../x86_64-linux-gnu/crtn.o > /home/mukawa/tmp/dpdk/x86_64-native-linuxapp-gcc/lib/librte_eal.so: > undefined reference to `rte_mempool_lookup' > /home/mukawa/tmp/dpdk/x86_64-native-linuxapp-gcc/lib/librte_eal.so: > undefined reference to `rte_mempool_create' > collect2: error: ld returned 1 exit status > > Regards, > Tetsuya > > > Sergio > > > > > >> ---------------------------------------------------------------------- > >> > >> I just enabled the following option, then compile DPDK. > >> CONFIG_RTE_BUILD_SHARED_LIB > >> Is this collect to compile PMDs as dynamic link libraries? > >> > >> With the option, all libraries include are compiled as dynamic link library. > >> Does "--start-group/--end-group" options work with dynamic link libraries? > >> > >> Regards, > >> Tetsuya > >> >
(2014/10/02 17:53), Sergio Gonzalez Monroy wrote: > On Thu, Oct 02, 2014 at 05:28:04PM +0900, Tetsuya Mukawa wrote: >> (2014/10/02 17:12), Sergio Gonzalez Monroy wrote: >>> On Thu, Oct 02, 2014 at 11:48:37AM +0900, Tetsuya Mukawa wrote: >>> >>>> $ gcc -m64 -pthread -fPIC -march=native -DRTE_MACHINE_CPUFLAG_SSE >>>> -DRTE_MACHINE_CPUFLAG_SSE2 -DRTE_MACHINE_CPUFLAG_SSE3 >>>> -DRTE_MACHINE_CPUFLAG_SSSE3 -DRTE_MACHINE_CPUFLAG_SSE4_1 >>>> -DRTE_MACHINE_CPUFLAG_SSE4_2 -DRTE_MACHINE_CPUFLAG_AES >>>> -DRTE_MACHINE_CPUFLAG_PCLMULQDQ -DRTE_MACHINE_CPUFLAG_AVX >>>> -DRTE_MACHINE_CPUFLAG_F16C >>>> -DRTE_COMPILE_TIME_CPUFLAGS=RTE_CPUFLAG_SSE,RTE_CPUFLAG_SSE2,RTE_CPUFLAG_SSE3,RTE_CPUFLAG_SSSE3,RTE_CPUFLAG_SSE4_1,RTE_CPUFLAG_SSE4_2,RTE_CPUFLAG_AES,RTE_CPUFLAG_PCLMULQDQ,RTE_CPUFLAG_AVX,RTE_CPUFLAG_F16C >>>> -I/home/mukawa/tmp/dpdk/x86_64-native-linuxapp-gcc/include -include >>>> /home/mukawa/tmp/dpdk/x86_64-native-linuxapp-gcc/include/rte_config.h >>>> -W -Wall -Werror -Wstrict-prototypes -Wmissing-prototypes >>>> -Wmissing-declarations -Wold-style-definition -Wpointer-arith >>>> -Wcast-align -Wnested-externs -Wcast-qual -Wformat-nonliteral >>>> -Wformat-security -Wundef -Wwrite-strings -Wl,-Map=testacl.map,--cref >>>> -o testacl main.o -Wl,-export-dynamic >>>> -L/home/mukawa/tmp/dpdk/x86_64-native-linuxapp-gcc/lib >>>> -L/home/mukawa/tmp/dpdk/x86_64-native-linuxapp-gcc/lib >>>> -Wl,--whole-archive -Wl,-lrte_distributor -Wl,-lrte_kni >>>> -Wl,-lrte_pipeline -Wl,-lrte_table -Wl,-lrte_port -Wl,-lrte_timer >>>> -Wl,-lrte_hash -Wl,-lrte_lpm -Wl,-lrte_power -Wl,-lrte_acl >>>> -Wl,-lrte_meter -Wl,-lrte_sched -Wl,-lm -Wl,-lrt -Wl,--start-group >>>> -Wl,-lrte_kvargs -Wl,-lrte_mbuf -Wl,-lrte_ip_frag -Wl,-lethdev >>>> -Wl,-lrte_malloc -Wl,-lrte_mempool -Wl,-lrte_ring -Wl,-lrte_eal >>>> -Wl,-lrte_cmdline -Wl,-lrte_cfgfile -Wl,-lrte_pmd_bond -Wl,-lrt >>>> -Wl,-lm -Wl,-lgcc_s -Wl,-ldl -Wl,--end-group -Wl,--no-whole-archive >>>> /home/mukawa/tmp/dpdk/x86_64-native-linuxapp-gcc/lib/librte_eal.so: >>>> undefined reference to `rte_mempool_lookup' >>>> /home/mukawa/tmp/dpdk/x86_64-native-linuxapp-gcc/lib/librte_eal.so: >>>> undefined reference to `rte_mempool_create' collect2: error: ld >>>> returned 1 exit status >>> Hi Tetsuya, >>> >>> Would you mind posting the output of the last command adding the option '-v'? >> Sure, here is. >> >> $ gcc -m64 -pthread -fPIC -march=native -DRTE_MACHINE_CPUFLAG_SSE >> -DRTE_MACHINE_CPUFLAG_SSE2 -DRTE_MACHINE_CPUFLAG_SSE3 >> -DRTE_MACHINE_CPUFLAG_SSSE3 -DRTE_MACHINE_CPUFLAG_SSE4_1 >> -DRTE_MACHINE_CPUFLAG_SSE4_2 -DRTE_MACHINE_CPUFLAG_AES >> -DRTE_MACHINE_CPUFLAG_PCLMULQDQ -DRTE_MACHINE_CPUFLAG_AVX >> -DRTE_MACHINE_CPUFLAG_F16C >> -DRTE_COMPILE_TIME_CPUFLAGS=RTE_CPUFLAG_SSE,RTE_CPUFLAG_SSE2,RTE_CPUFLAG_SSE3,RTE_CPUFLAG_SSSE3,RTE_CPUFLAG_SSE4_1,RTE_CPUFLAG_SSE4_2,RTE_CPUFLAG_AES,RTE_CPUFLAG_PCLMULQDQ,RTE_CPUFLAG_AVX,RTE_CPUFLAG_F16C >> -I/home/mukawa/tmp/dpdk/x86_64-native-linuxapp-gcc/include -include >> /home/mukawa/tmp/dpdk/x86_64-native-linuxapp-gcc/include/rte_config.h -W >> -Wall -Werror -Wstrict-prototypes -Wmissing-prototypes >> -Wmissing-declarations -Wold-style-definition -Wpointer-arith >> -Wcast-align -Wnested-externs -Wcast-qual -Wformat-nonliteral >> -Wformat-security -Wundef -Wwrite-strings -Wl,-Map=testacl.map,--cref >> -o testacl main.o -Wl,-export-dynamic >> -L/home/mukawa/tmp/dpdk/x86_64-native-linuxapp-gcc/lib >> -L/home/mukawa/tmp/dpdk/x86_64-native-linuxapp-gcc/lib >> -Wl,--whole-archive -Wl,-lrte_distributor -Wl,-lrte_kni >> -Wl,-lrte_pipeline -Wl,-lrte_table -Wl,-lrte_port -Wl,-lrte_timer >> -Wl,-lrte_hash -Wl,-lrte_lpm -Wl,-lrte_power -Wl,-lrte_acl >> -Wl,-lrte_meter -Wl,-lrte_sched -Wl,-lm -Wl,-lrt -Wl,--start-group >> -Wl,-lrte_kvargs -Wl,-lrte_mbuf -Wl,-lrte_ip_frag -Wl,-lethdev >> -Wl,-lrte_malloc -Wl,-lrte_mempool -Wl,-lrte_ring -Wl,-lrte_eal >> -Wl,-lrte_cmdline -Wl,-lrte_cfgfile -Wl,-lrte_pmd_bond -Wl,-lrt -Wl,-lm >> -Wl,-lgcc_s -Wl,-ldl -Wl,--end-group -Wl,--no-whole-archive -v >> Using built-in specs. >> COLLECT_GCC=gcc >> COLLECT_LTO_WRAPPER=/usr/lib/gcc/x86_64-linux-gnu/4.8/lto-wrapper >> Target: x86_64-linux-gnu >> Configured with: ../src/configure -v --with-pkgversion='Ubuntu >> 4.8.2-19ubuntu1' --with-bugurl=file:///usr/share/doc/gcc-4.8/README.Bugs >> --enable-languages=c,c++,java,go,d,fortran,objc,obj-c++ --prefix=/usr >> --program-suffix=-4.8 --enable-shared --enable-linker-build-id >> --libexecdir=/usr/lib --without-included-gettext --enable-threads=posix >> --with-gxx-include-dir=/usr/include/c++/4.8 --libdir=/usr/lib >> --enable-nls --with-sysroot=/ --enable-clocale=gnu >> --enable-libstdcxx-debug --enable-libstdcxx-time=yes >> --enable-gnu-unique-object --disable-libmudflap --enable-plugin >> --with-system-zlib --disable-browser-plugin --enable-java-awt=gtk >> --enable-gtk-cairo >> --with-java-home=/usr/lib/jvm/java-1.5.0-gcj-4.8-amd64/jre >> --enable-java-home >> --with-jvm-root-dir=/usr/lib/jvm/java-1.5.0-gcj-4.8-amd64 >> --with-jvm-jar-dir=/usr/lib/jvm-exports/java-1.5.0-gcj-4.8-amd64 >> --with-arch-directory=amd64 >> --with-ecj-jar=/usr/share/java/eclipse-ecj.jar --enable-objc-gc >> --enable-multiarch --disable-werror --with-arch-32=i686 --with-abi=m64 >> --with-multilib-list=m32,m64,mx32 --with-tune=generic >> --enable-checking=release --build=x86_64-linux-gnu >> --host=x86_64-linux-gnu --target=x86_64-linux-gnu >> Thread model: posix >> gcc version 4.8.2 (Ubuntu 4.8.2-19ubuntu1) >> COMPILER_PATH=/usr/lib/gcc/x86_64-linux-gnu/4.8/:/usr/lib/gcc/x86_64-linux-gnu/4.8/:/usr/lib/gcc/x86_64-linux-gnu/:/usr/lib/gcc/x86_64-linux-gnu/4.8/:/usr/lib/gcc/x86_64-linux-gnu/ >> LIBRARY_PATH=/usr/lib/gcc/x86_64-linux-gnu/4.8/:/usr/lib/gcc/x86_64-linux-gnu/4.8/../../../x86_64-linux-gnu/:/usr/lib/gcc/x86_64-linux-gnu/4.8/../../../../lib/:/lib/x86_64-linux-gnu/:/lib/../lib/:/usr/lib/x86_64-linux-gnu/:/usr/lib/../lib/:/usr/lib/gcc/x86_64-linux-gnu/4.8/../../../:/lib/:/usr/lib/ >> COLLECT_GCC_OPTIONS='-m64' '-pthread' '-fPIC' '-march=native' '-D' >> 'RTE_MACHINE_CPUFLAG_SSE' '-D' 'RTE_MACHINE_CPUFLAG_SSE2' '-D' >> 'RTE_MACHINE_CPUFLAG_SSE3' '-D' 'RTE_MACHINE_CPUFLAG_SSSE3' '-D' >> 'RTE_MACHINE_CPUFLAG_SSE4_1' '-D' 'RTE_MACHINE_CPUFLAG_SSE4_2' '-D' >> 'RTE_MACHINE_CPUFLAG_AES' '-D' 'RTE_MACHINE_CPUFLAG_PCLMULQDQ' '-D' >> 'RTE_MACHINE_CPUFLAG_AVX' '-D' 'RTE_MACHINE_CPUFLAG_F16C' '-D' >> 'RTE_COMPILE_TIME_CPUFLAGS=RTE_CPUFLAG_SSE,RTE_CPUFLAG_SSE2,RTE_CPUFLAG_SSE3,RTE_CPUFLAG_SSSE3,RTE_CPUFLAG_SSE4_1,RTE_CPUFLAG_SSE4_2,RTE_CPUFLAG_AES,RTE_CPUFLAG_PCLMULQDQ,RTE_CPUFLAG_AVX,RTE_CPUFLAG_F16C' >> '-I' '/home/mukawa/tmp/dpdk/x86_64-native-linuxapp-gcc/include' >> '-include' >> '/home/mukawa/tmp/dpdk/x86_64-native-linuxapp-gcc/include/rte_config.h' >> '-Wextra' '-Wall' '-Werror' '-Wstrict-prototypes' '-Wmissing-prototypes' >> '-Wmissing-declarations' '-Wold-style-definition' '-Wpointer-arith' >> '-Wcast-align' '-Wnested-externs' '-Wcast-qual' '-Wformat-nonliteral' >> '-Wformat-security' '-Wundef' '-Wwrite-strings' '-o' 'testacl' >> '-L/home/mukawa/tmp/dpdk/x86_64-native-linuxapp-gcc/lib' >> '-L/home/mukawa/tmp/dpdk/x86_64-native-linuxapp-gcc/lib' '-v' > We have been looking at this issue over the last couple of days. > It seems to be an Ubuntu GCC related bug as it works on other distros. > GCC is passing incorrectly the option '--as-needed' to LD resulting in wrong linking. > >> /usr/lib/gcc/x86_64-linux-gnu/4.8/collect2 --sysroot=/ --build-id >> --eh-frame-hdr -m elf_x86_64 --hash-style=gnu --as-needed > The '--as-needed' just at the end of the above line is incorrect and not matching > a closing '--no-as-needed'. > You may get away with it by adding 'EXTRA_LDFLAGS=--no-as-needed'. > ie. $ make install T=x86_64-native-linuxapp-gcc EXTRA_LDFLAGS=--no-as-needed I can compile DPDK with above options. Thank you everyone for helping to solve this issue. Regards, Tetsuya > > Sergio > >> -dynamic-linker /lib64/ld-linux-x86-64.so.2 -z relro -o testacl >> /usr/lib/gcc/x86_64-linux-gnu/4.8/../../../x86_64-linux-gnu/crt1.o >> /usr/lib/gcc/x86_64-linux-gnu/4.8/../../../x86_64-linux-gnu/crti.o >> /usr/lib/gcc/x86_64-linux-gnu/4.8/crtbegin.o >> -L/home/mukawa/tmp/dpdk/x86_64-native-linuxapp-gcc/lib >> -L/home/mukawa/tmp/dpdk/x86_64-native-linuxapp-gcc/lib >> -L/usr/lib/gcc/x86_64-linux-gnu/4.8 >> -L/usr/lib/gcc/x86_64-linux-gnu/4.8/../../../x86_64-linux-gnu >> -L/usr/lib/gcc/x86_64-linux-gnu/4.8/../../../../lib >> -L/lib/x86_64-linux-gnu -L/lib/../lib -L/usr/lib/x86_64-linux-gnu >> -L/usr/lib/../lib -L/usr/lib/gcc/x86_64-linux-gnu/4.8/../../.. >> -Map=testacl.map --cref main.o -export-dynamic --whole-archive >> -lrte_distributor -lrte_kni -lrte_pipeline -lrte_table -lrte_port >> -lrte_timer -lrte_hash -lrte_lpm -lrte_power -lrte_acl -lrte_meter >> -lrte_sched -lm -lrt --start-group -lrte_kvargs -lrte_mbuf -lrte_ip_frag >> -lethdev -lrte_malloc -lrte_mempool -lrte_ring -lrte_eal -lrte_cmdline >> -lrte_cfgfile -lrte_pmd_bond -lrt -lm -lgcc_s -ldl --end-group >> --no-whole-archive -lgcc --as-needed -lgcc_s --no-as-needed -lpthread >> -lc -lgcc --as-needed -lgcc_s --no-as-needed >> /usr/lib/gcc/x86_64-linux-gnu/4.8/crtend.o >> /usr/lib/gcc/x86_64-linux-gnu/4.8/../../../x86_64-linux-gnu/crtn.o >> /home/mukawa/tmp/dpdk/x86_64-native-linuxapp-gcc/lib/librte_eal.so: >> undefined reference to `rte_mempool_lookup' >> /home/mukawa/tmp/dpdk/x86_64-native-linuxapp-gcc/lib/librte_eal.so: >> undefined reference to `rte_mempool_create' >> collect2: error: ld returned 1 exit status >> >> Regards, >> Tetsuya >> >>> Sergio >>> >>> >>>> ---------------------------------------------------------------------- >>>> >>>> I just enabled the following option, then compile DPDK. >>>> CONFIG_RTE_BUILD_SHARED_LIB >>>> Is this collect to compile PMDs as dynamic link libraries? >>>> >>>> With the option, all libraries include are compiled as dynamic link library. >>>> Does "--start-group/--end-group" options work with dynamic link libraries? >>>> >>>> Regards, >>>> Tetsuya >>>>
On Thu, Oct 02, 2014 at 06:05:09PM +0900, Tetsuya Mukawa wrote: > (2014/10/02 17:53), Sergio Gonzalez Monroy wrote: > > On Thu, Oct 02, 2014 at 05:28:04PM +0900, Tetsuya Mukawa wrote: > >> (2014/10/02 17:12), Sergio Gonzalez Monroy wrote: > >>> On Thu, Oct 02, 2014 at 11:48:37AM +0900, Tetsuya Mukawa wrote: > >>> > >>>> $ gcc -m64 -pthread -fPIC -march=native -DRTE_MACHINE_CPUFLAG_SSE > >>>> -DRTE_MACHINE_CPUFLAG_SSE2 -DRTE_MACHINE_CPUFLAG_SSE3 > >>>> -DRTE_MACHINE_CPUFLAG_SSSE3 -DRTE_MACHINE_CPUFLAG_SSE4_1 > >>>> -DRTE_MACHINE_CPUFLAG_SSE4_2 -DRTE_MACHINE_CPUFLAG_AES > >>>> -DRTE_MACHINE_CPUFLAG_PCLMULQDQ -DRTE_MACHINE_CPUFLAG_AVX > >>>> -DRTE_MACHINE_CPUFLAG_F16C > >>>> -DRTE_COMPILE_TIME_CPUFLAGS=RTE_CPUFLAG_SSE,RTE_CPUFLAG_SSE2,RTE_CPUFLAG_SSE3,RTE_CPUFLAG_SSSE3,RTE_CPUFLAG_SSE4_1,RTE_CPUFLAG_SSE4_2,RTE_CPUFLAG_AES,RTE_CPUFLAG_PCLMULQDQ,RTE_CPUFLAG_AVX,RTE_CPUFLAG_F16C > >>>> -I/home/mukawa/tmp/dpdk/x86_64-native-linuxapp-gcc/include -include > >>>> /home/mukawa/tmp/dpdk/x86_64-native-linuxapp-gcc/include/rte_config.h > >>>> -W -Wall -Werror -Wstrict-prototypes -Wmissing-prototypes > >>>> -Wmissing-declarations -Wold-style-definition -Wpointer-arith > >>>> -Wcast-align -Wnested-externs -Wcast-qual -Wformat-nonliteral > >>>> -Wformat-security -Wundef -Wwrite-strings -Wl,-Map=testacl.map,--cref > >>>> -o testacl main.o -Wl,-export-dynamic > >>>> -L/home/mukawa/tmp/dpdk/x86_64-native-linuxapp-gcc/lib > >>>> -L/home/mukawa/tmp/dpdk/x86_64-native-linuxapp-gcc/lib > >>>> -Wl,--whole-archive -Wl,-lrte_distributor -Wl,-lrte_kni > >>>> -Wl,-lrte_pipeline -Wl,-lrte_table -Wl,-lrte_port -Wl,-lrte_timer > >>>> -Wl,-lrte_hash -Wl,-lrte_lpm -Wl,-lrte_power -Wl,-lrte_acl > >>>> -Wl,-lrte_meter -Wl,-lrte_sched -Wl,-lm -Wl,-lrt -Wl,--start-group > >>>> -Wl,-lrte_kvargs -Wl,-lrte_mbuf -Wl,-lrte_ip_frag -Wl,-lethdev > >>>> -Wl,-lrte_malloc -Wl,-lrte_mempool -Wl,-lrte_ring -Wl,-lrte_eal > >>>> -Wl,-lrte_cmdline -Wl,-lrte_cfgfile -Wl,-lrte_pmd_bond -Wl,-lrt > >>>> -Wl,-lm -Wl,-lgcc_s -Wl,-ldl -Wl,--end-group -Wl,--no-whole-archive > >>>> /home/mukawa/tmp/dpdk/x86_64-native-linuxapp-gcc/lib/librte_eal.so: > >>>> undefined reference to `rte_mempool_lookup' > >>>> /home/mukawa/tmp/dpdk/x86_64-native-linuxapp-gcc/lib/librte_eal.so: > >>>> undefined reference to `rte_mempool_create' collect2: error: ld > >>>> returned 1 exit status > >>> Hi Tetsuya, > >>> > >>> Would you mind posting the output of the last command adding the option '-v'? > >> Sure, here is. > >> > >> $ gcc -m64 -pthread -fPIC -march=native -DRTE_MACHINE_CPUFLAG_SSE > >> -DRTE_MACHINE_CPUFLAG_SSE2 -DRTE_MACHINE_CPUFLAG_SSE3 > >> -DRTE_MACHINE_CPUFLAG_SSSE3 -DRTE_MACHINE_CPUFLAG_SSE4_1 > >> -DRTE_MACHINE_CPUFLAG_SSE4_2 -DRTE_MACHINE_CPUFLAG_AES > >> -DRTE_MACHINE_CPUFLAG_PCLMULQDQ -DRTE_MACHINE_CPUFLAG_AVX > >> -DRTE_MACHINE_CPUFLAG_F16C > >> -DRTE_COMPILE_TIME_CPUFLAGS=RTE_CPUFLAG_SSE,RTE_CPUFLAG_SSE2,RTE_CPUFLAG_SSE3,RTE_CPUFLAG_SSSE3,RTE_CPUFLAG_SSE4_1,RTE_CPUFLAG_SSE4_2,RTE_CPUFLAG_AES,RTE_CPUFLAG_PCLMULQDQ,RTE_CPUFLAG_AVX,RTE_CPUFLAG_F16C > >> -I/home/mukawa/tmp/dpdk/x86_64-native-linuxapp-gcc/include -include > >> /home/mukawa/tmp/dpdk/x86_64-native-linuxapp-gcc/include/rte_config.h -W > >> -Wall -Werror -Wstrict-prototypes -Wmissing-prototypes > >> -Wmissing-declarations -Wold-style-definition -Wpointer-arith > >> -Wcast-align -Wnested-externs -Wcast-qual -Wformat-nonliteral > >> -Wformat-security -Wundef -Wwrite-strings -Wl,-Map=testacl.map,--cref > >> -o testacl main.o -Wl,-export-dynamic > >> -L/home/mukawa/tmp/dpdk/x86_64-native-linuxapp-gcc/lib > >> -L/home/mukawa/tmp/dpdk/x86_64-native-linuxapp-gcc/lib > >> -Wl,--whole-archive -Wl,-lrte_distributor -Wl,-lrte_kni > >> -Wl,-lrte_pipeline -Wl,-lrte_table -Wl,-lrte_port -Wl,-lrte_timer > >> -Wl,-lrte_hash -Wl,-lrte_lpm -Wl,-lrte_power -Wl,-lrte_acl > >> -Wl,-lrte_meter -Wl,-lrte_sched -Wl,-lm -Wl,-lrt -Wl,--start-group > >> -Wl,-lrte_kvargs -Wl,-lrte_mbuf -Wl,-lrte_ip_frag -Wl,-lethdev > >> -Wl,-lrte_malloc -Wl,-lrte_mempool -Wl,-lrte_ring -Wl,-lrte_eal > >> -Wl,-lrte_cmdline -Wl,-lrte_cfgfile -Wl,-lrte_pmd_bond -Wl,-lrt -Wl,-lm > >> -Wl,-lgcc_s -Wl,-ldl -Wl,--end-group -Wl,--no-whole-archive -v > >> Using built-in specs. > >> COLLECT_GCC=gcc > >> COLLECT_LTO_WRAPPER=/usr/lib/gcc/x86_64-linux-gnu/4.8/lto-wrapper > >> Target: x86_64-linux-gnu > >> Configured with: ../src/configure -v --with-pkgversion='Ubuntu > >> 4.8.2-19ubuntu1' --with-bugurl=file:///usr/share/doc/gcc-4.8/README.Bugs > >> --enable-languages=c,c++,java,go,d,fortran,objc,obj-c++ --prefix=/usr > >> --program-suffix=-4.8 --enable-shared --enable-linker-build-id > >> --libexecdir=/usr/lib --without-included-gettext --enable-threads=posix > >> --with-gxx-include-dir=/usr/include/c++/4.8 --libdir=/usr/lib > >> --enable-nls --with-sysroot=/ --enable-clocale=gnu > >> --enable-libstdcxx-debug --enable-libstdcxx-time=yes > >> --enable-gnu-unique-object --disable-libmudflap --enable-plugin > >> --with-system-zlib --disable-browser-plugin --enable-java-awt=gtk > >> --enable-gtk-cairo > >> --with-java-home=/usr/lib/jvm/java-1.5.0-gcj-4.8-amd64/jre > >> --enable-java-home > >> --with-jvm-root-dir=/usr/lib/jvm/java-1.5.0-gcj-4.8-amd64 > >> --with-jvm-jar-dir=/usr/lib/jvm-exports/java-1.5.0-gcj-4.8-amd64 > >> --with-arch-directory=amd64 > >> --with-ecj-jar=/usr/share/java/eclipse-ecj.jar --enable-objc-gc > >> --enable-multiarch --disable-werror --with-arch-32=i686 --with-abi=m64 > >> --with-multilib-list=m32,m64,mx32 --with-tune=generic > >> --enable-checking=release --build=x86_64-linux-gnu > >> --host=x86_64-linux-gnu --target=x86_64-linux-gnu > >> Thread model: posix > >> gcc version 4.8.2 (Ubuntu 4.8.2-19ubuntu1) > >> COMPILER_PATH=/usr/lib/gcc/x86_64-linux-gnu/4.8/:/usr/lib/gcc/x86_64-linux-gnu/4.8/:/usr/lib/gcc/x86_64-linux-gnu/:/usr/lib/gcc/x86_64-linux-gnu/4.8/:/usr/lib/gcc/x86_64-linux-gnu/ > >> LIBRARY_PATH=/usr/lib/gcc/x86_64-linux-gnu/4.8/:/usr/lib/gcc/x86_64-linux-gnu/4.8/../../../x86_64-linux-gnu/:/usr/lib/gcc/x86_64-linux-gnu/4.8/../../../../lib/:/lib/x86_64-linux-gnu/:/lib/../lib/:/usr/lib/x86_64-linux-gnu/:/usr/lib/../lib/:/usr/lib/gcc/x86_64-linux-gnu/4.8/../../../:/lib/:/usr/lib/ > >> COLLECT_GCC_OPTIONS='-m64' '-pthread' '-fPIC' '-march=native' '-D' > >> 'RTE_MACHINE_CPUFLAG_SSE' '-D' 'RTE_MACHINE_CPUFLAG_SSE2' '-D' > >> 'RTE_MACHINE_CPUFLAG_SSE3' '-D' 'RTE_MACHINE_CPUFLAG_SSSE3' '-D' > >> 'RTE_MACHINE_CPUFLAG_SSE4_1' '-D' 'RTE_MACHINE_CPUFLAG_SSE4_2' '-D' > >> 'RTE_MACHINE_CPUFLAG_AES' '-D' 'RTE_MACHINE_CPUFLAG_PCLMULQDQ' '-D' > >> 'RTE_MACHINE_CPUFLAG_AVX' '-D' 'RTE_MACHINE_CPUFLAG_F16C' '-D' > >> 'RTE_COMPILE_TIME_CPUFLAGS=RTE_CPUFLAG_SSE,RTE_CPUFLAG_SSE2,RTE_CPUFLAG_SSE3,RTE_CPUFLAG_SSSE3,RTE_CPUFLAG_SSE4_1,RTE_CPUFLAG_SSE4_2,RTE_CPUFLAG_AES,RTE_CPUFLAG_PCLMULQDQ,RTE_CPUFLAG_AVX,RTE_CPUFLAG_F16C' > >> '-I' '/home/mukawa/tmp/dpdk/x86_64-native-linuxapp-gcc/include' > >> '-include' > >> '/home/mukawa/tmp/dpdk/x86_64-native-linuxapp-gcc/include/rte_config.h' > >> '-Wextra' '-Wall' '-Werror' '-Wstrict-prototypes' '-Wmissing-prototypes' > >> '-Wmissing-declarations' '-Wold-style-definition' '-Wpointer-arith' > >> '-Wcast-align' '-Wnested-externs' '-Wcast-qual' '-Wformat-nonliteral' > >> '-Wformat-security' '-Wundef' '-Wwrite-strings' '-o' 'testacl' > >> '-L/home/mukawa/tmp/dpdk/x86_64-native-linuxapp-gcc/lib' > >> '-L/home/mukawa/tmp/dpdk/x86_64-native-linuxapp-gcc/lib' '-v' > > We have been looking at this issue over the last couple of days. > > It seems to be an Ubuntu GCC related bug as it works on other distros. > > GCC is passing incorrectly the option '--as-needed' to LD resulting in wrong linking. > > Just a quick follow up on this issue and to rectify myself. This is not a bug but expected behavior: https://wiki.debian.org/ToolChain/DSOLinking#Onlylinkwithneededlibraries Sergio > >> /usr/lib/gcc/x86_64-linux-gnu/4.8/collect2 --sysroot=/ --build-id > >> --eh-frame-hdr -m elf_x86_64 --hash-style=gnu --as-needed > > The '--as-needed' just at the end of the above line is incorrect and not matching > > a closing '--no-as-needed'. > > You may get away with it by adding 'EXTRA_LDFLAGS=--no-as-needed'. > > ie. $ make install T=x86_64-native-linuxapp-gcc EXTRA_LDFLAGS=--no-as-needed > > I can compile DPDK with above options. > Thank you everyone for helping to solve this issue. > > Regards, > Tetsuya > > > > > Sergio > > > >> -dynamic-linker /lib64/ld-linux-x86-64.so.2 -z relro -o testacl > >> /usr/lib/gcc/x86_64-linux-gnu/4.8/../../../x86_64-linux-gnu/crt1.o > >> /usr/lib/gcc/x86_64-linux-gnu/4.8/../../../x86_64-linux-gnu/crti.o > >> /usr/lib/gcc/x86_64-linux-gnu/4.8/crtbegin.o > >> -L/home/mukawa/tmp/dpdk/x86_64-native-linuxapp-gcc/lib > >> -L/home/mukawa/tmp/dpdk/x86_64-native-linuxapp-gcc/lib > >> -L/usr/lib/gcc/x86_64-linux-gnu/4.8 > >> -L/usr/lib/gcc/x86_64-linux-gnu/4.8/../../../x86_64-linux-gnu > >> -L/usr/lib/gcc/x86_64-linux-gnu/4.8/../../../../lib > >> -L/lib/x86_64-linux-gnu -L/lib/../lib -L/usr/lib/x86_64-linux-gnu > >> -L/usr/lib/../lib -L/usr/lib/gcc/x86_64-linux-gnu/4.8/../../.. > >> -Map=testacl.map --cref main.o -export-dynamic --whole-archive > >> -lrte_distributor -lrte_kni -lrte_pipeline -lrte_table -lrte_port > >> -lrte_timer -lrte_hash -lrte_lpm -lrte_power -lrte_acl -lrte_meter > >> -lrte_sched -lm -lrt --start-group -lrte_kvargs -lrte_mbuf -lrte_ip_frag > >> -lethdev -lrte_malloc -lrte_mempool -lrte_ring -lrte_eal -lrte_cmdline > >> -lrte_cfgfile -lrte_pmd_bond -lrt -lm -lgcc_s -ldl --end-group > >> --no-whole-archive -lgcc --as-needed -lgcc_s --no-as-needed -lpthread > >> -lc -lgcc --as-needed -lgcc_s --no-as-needed > >> /usr/lib/gcc/x86_64-linux-gnu/4.8/crtend.o > >> /usr/lib/gcc/x86_64-linux-gnu/4.8/../../../x86_64-linux-gnu/crtn.o > >> /home/mukawa/tmp/dpdk/x86_64-native-linuxapp-gcc/lib/librte_eal.so: > >> undefined reference to `rte_mempool_lookup' > >> /home/mukawa/tmp/dpdk/x86_64-native-linuxapp-gcc/lib/librte_eal.so: > >> undefined reference to `rte_mempool_create' > >> collect2: error: ld returned 1 exit status > >> > >> Regards, > >> Tetsuya > >> > >>> Sergio > >>> > >>> > >>>> ---------------------------------------------------------------------- > >>>> > >>>> I just enabled the following option, then compile DPDK. > >>>> CONFIG_RTE_BUILD_SHARED_LIB > >>>> Is this collect to compile PMDs as dynamic link libraries? > >>>> > >>>> With the option, all libraries include are compiled as dynamic link library. > >>>> Does "--start-group/--end-group" options work with dynamic link libraries? > >>>> > >>>> Regards, > >>>> Tetsuya > >>>> > >
diff --git a/mk/rte.app.mk b/mk/rte.app.mk index 34dff2a..172ba4d 100644 --- a/mk/rte.app.mk +++ b/mk/rte.app.mk @@ -121,10 +121,6 @@ endif LDLIBS += --start-group -ifeq ($(CONFIG_RTE_LIBRTE_KVARGS),y) -LDLIBS += -lrte_kvargs -endif - ifeq ($(CONFIG_RTE_LIBRTE_MBUF),y) LDLIBS += -lrte_mbuf endif @@ -137,6 +133,10 @@ ifeq ($(CONFIG_RTE_LIBRTE_ETHER),y) LDLIBS += -lethdev endif +ifeq ($(CONFIG_RTE_LIBRTE_EAL),y) +LDLIBS += -lrte_eal +endif + ifeq ($(CONFIG_RTE_LIBRTE_MALLOC),y) LDLIBS += -lrte_malloc endif @@ -158,10 +158,6 @@ ifeq ($(CONFIG_RTE_LIBGLOSS),y) LDLIBS += -lgloss endif -ifeq ($(CONFIG_RTE_LIBRTE_EAL),y) -LDLIBS += -lrte_eal -endif - ifeq ($(CONFIG_RTE_LIBRTE_CMDLINE),y) LDLIBS += -lrte_cmdline endif @@ -174,6 +170,10 @@ ifeq ($(CONFIG_RTE_LIBRTE_PMD_BOND),y) LDLIBS += -lrte_pmd_bond endif +ifeq ($(CONFIG_RTE_LIBRTE_KVARGS),y) +LDLIBS += -lrte_kvargs +endif + ifeq ($(CONFIG_RTE_LIBRTE_PMD_XENVIRT),y) LDLIBS += -lrte_pmd_xenvirt LDLIBS += -lxenstore