DPDK compile error with ubuntu 16.04 glibc 2.23-0ubuntu3

Bug #1578118 reported by 沈游人 on 2016-05-04
16
This bug affects 3 people
Affects Status Importance Assigned to Milestone
dpdk (Ubuntu)
Low
Unassigned

Bug Description

When I trying to compile dpdk 2.2.0 without any change in source files, I encounter a error which the detailed message is listed behind.
My computer system is ubuntu 16.94 with glibc version 2.23-0ubuntu3. Also my target of dpdk configuration is x86_64-native-linuxapp-gcc.
I consider this as a glibc c bug because I can compile this target in 15.10, but in the newest ubuntu, it failed.

== Build drivers/net/i40e
== Build drivers/net/ixgbe
== Build drivers/net/null
== Build drivers/net/ring
== Build drivers/net/virtio
== Build drivers/net/vmxnet3
== Build drivers/crypto
== Build app
== Build app/test
  LD test
/usr/lib/x86_64-linux-gnu/libmvec_nonshared.a(svml_finite_alias.oS): In function `_ZGVbN2v___log_finite':
(.text+0x0): multiple definition of `_ZGVbN2v___log_finite'
/usr/lib/x86_64-linux-gnu/libmvec_nonshared.a(svml_finite_alias.oS):(.text+0x0): first defined here
/usr/lib/x86_64-linux-gnu/libmvec_nonshared.a(svml_finite_alias.oS): In function `_ZGVcN4v___log_finite':
(.text+0x10): multiple definition of `_ZGVcN4v___log_finite'
/usr/lib/x86_64-linux-gnu/libmvec_nonshared.a(svml_finite_alias.oS):(.text+0x10): first defined here
/usr/lib/x86_64-linux-gnu/libmvec_nonshared.a(svml_finite_alias.oS): In function `_ZGVdN4v___log_finite':
(.text+0x20): multiple definition of `_ZGVdN4v___log_finite'
/usr/lib/x86_64-linux-gnu/libmvec_nonshared.a(svml_finite_alias.oS):(.text+0x20): first defined here
/usr/lib/x86_64-linux-gnu/libmvec_nonshared.a(svml_finite_alias.oS): In function `_ZGVeN8v___log_finite':
(.text+0x30): multiple definition of `_ZGVeN8v___log_finite'
/usr/lib/x86_64-linux-gnu/libmvec_nonshared.a(svml_finite_alias.oS):(.text+0x30): first defined here
/usr/lib/x86_64-linux-gnu/libmvec_nonshared.a(svml_finite_alias.oS): In function `_ZGVbN4v___logf_finite':
(.text+0x40): multiple definition of `_ZGVbN4v___logf_finite'
/usr/lib/x86_64-linux-gnu/libmvec_nonshared.a(svml_finite_alias.oS):(.text+0x40): first defined here
/usr/lib/x86_64-linux-gnu/libmvec_nonshared.a(svml_finite_alias.oS): In function `_ZGVcN8v___logf_finite':
(.text+0x50): multiple definition of `_ZGVcN8v___logf_finite'
/usr/lib/x86_64-linux-gnu/libmvec_nonshared.a(svml_finite_alias.oS):(.text+0x50): first defined here
/usr/lib/x86_64-linux-gnu/libmvec_nonshared.a(svml_finite_alias.oS): In function `_ZGVdN8v___logf_finite':
(.text+0x60): multiple definition of `_ZGVdN8v___logf_finite'
/usr/lib/x86_64-linux-gnu/libmvec_nonshared.a(svml_finite_alias.oS):(.text+0x60): first defined here
/usr/lib/x86_64-linux-gnu/libmvec_nonshared.a(svml_finite_alias.oS): In function `_ZGVeN16v___logf_finite':
(.text+0x70): multiple definition of `_ZGVeN16v___logf_finite'
/usr/lib/x86_64-linux-gnu/libmvec_nonshared.a(svml_finite_alias.oS):(.text+0x70): first defined here
/usr/lib/x86_64-linux-gnu/libmvec_nonshared.a(svml_finite_alias.oS): In function `_ZGVbN2v___exp_finite':
(.text+0x80): multiple definition of `_ZGVbN2v___exp_finite'
/usr/lib/x86_64-linux-gnu/libmvec_nonshared.a(svml_finite_alias.oS):(.text+0x80): first defined here
/usr/lib/x86_64-linux-gnu/libmvec_nonshared.a(svml_finite_alias.oS): In function `_ZGVcN4v___exp_finite':
(.text+0x90): multiple definition of `_ZGVcN4v___exp_finite'
/usr/lib/x86_64-linux-gnu/libmvec_nonshared.a(svml_finite_alias.oS):(.text+0x90): first defined here
/usr/lib/x86_64-linux-gnu/libmvec_nonshared.a(svml_finite_alias.oS): In function `_ZGVdN4v___exp_finite':
(.text+0xa0): multiple definition of `_ZGVdN4v___exp_finite'
/usr/lib/x86_64-linux-gnu/libmvec_nonshared.a(svml_finite_alias.oS):(.text+0xa0): first defined here
/usr/lib/x86_64-linux-gnu/libmvec_nonshared.a(svml_finite_alias.oS): In function `_ZGVeN8v___exp_finite':
(.text+0xb0): multiple definition of `_ZGVeN8v___exp_finite'
/usr/lib/x86_64-linux-gnu/libmvec_nonshared.a(svml_finite_alias.oS):(.text+0xb0): first defined here
/usr/lib/x86_64-linux-gnu/libmvec_nonshared.a(svml_finite_alias.oS): In function `_ZGVbN4v___expf_finite':
(.text+0xc0): multiple definition of `_ZGVbN4v___expf_finite'
/usr/lib/x86_64-linux-gnu/libmvec_nonshared.a(svml_finite_alias.oS):(.text+0xc0): first defined here
/usr/lib/x86_64-linux-gnu/libmvec_nonshared.a(svml_finite_alias.oS): In function `_ZGVcN8v___expf_finite':
(.text+0xd0): multiple definition of `_ZGVcN8v___expf_finite'
/usr/lib/x86_64-linux-gnu/libmvec_nonshared.a(svml_finite_alias.oS):(.text+0xd0): first defined here
/usr/lib/x86_64-linux-gnu/libmvec_nonshared.a(svml_finite_alias.oS): In function `_ZGVdN8v___expf_finite':
(.text+0xe0): multiple definition of `_ZGVdN8v___expf_finite'
/usr/lib/x86_64-linux-gnu/libmvec_nonshared.a(svml_finite_alias.oS):(.text+0xe0): first defined here
/usr/lib/x86_64-linux-gnu/libmvec_nonshared.a(svml_finite_alias.oS): In function `_ZGVeN16v___expf_finite':
(.text+0xf0): multiple definition of `_ZGVeN16v___expf_finite'
/usr/lib/x86_64-linux-gnu/libmvec_nonshared.a(svml_finite_alias.oS):(.text+0xf0): first defined here
/usr/lib/x86_64-linux-gnu/libmvec_nonshared.a(svml_finite_alias.oS): In function `_ZGVbN2vv___pow_finite':
(.text+0x100): multiple definition of `_ZGVbN2vv___pow_finite'
/usr/lib/x86_64-linux-gnu/libmvec_nonshared.a(svml_finite_alias.oS):(.text+0x100): first defined here
/usr/lib/x86_64-linux-gnu/libmvec_nonshared.a(svml_finite_alias.oS): In function `_ZGVcN4vv___pow_finite':
(.text+0x110): multiple definition of `_ZGVcN4vv___pow_finite'
/usr/lib/x86_64-linux-gnu/libmvec_nonshared.a(svml_finite_alias.oS):(.text+0x110): first defined here
/usr/lib/x86_64-linux-gnu/libmvec_nonshared.a(svml_finite_alias.oS): In function `_ZGVdN4vv___pow_finite':
(.text+0x120): multiple definition of `_ZGVdN4vv___pow_finite'
/usr/lib/x86_64-linux-gnu/libmvec_nonshared.a(svml_finite_alias.oS):(.text+0x120): first defined here
/usr/lib/x86_64-linux-gnu/libmvec_nonshared.a(svml_finite_alias.oS): In function `_ZGVeN8vv___pow_finite':
(.text+0x130): multiple definition of `_ZGVeN8vv___pow_finite'
/usr/lib/x86_64-linux-gnu/libmvec_nonshared.a(svml_finite_alias.oS):(.text+0x130): first defined here
/usr/lib/x86_64-linux-gnu/libmvec_nonshared.a(svml_finite_alias.oS): In function `_ZGVbN4vv___powf_finite':
(.text+0x140): multiple definition of `_ZGVbN4vv___powf_finite'
/usr/lib/x86_64-linux-gnu/libmvec_nonshared.a(svml_finite_alias.oS):(.text+0x140): first defined here
/usr/lib/x86_64-linux-gnu/libmvec_nonshared.a(svml_finite_alias.oS): In function `_ZGVcN8vv___powf_finite':
(.text+0x150): multiple definition of `_ZGVcN8vv___powf_finite'
/usr/lib/x86_64-linux-gnu/libmvec_nonshared.a(svml_finite_alias.oS):(.text+0x150): first defined here
/usr/lib/x86_64-linux-gnu/libmvec_nonshared.a(svml_finite_alias.oS): In function `_ZGVdN8vv___powf_finite':
(.text+0x160): multiple definition of `_ZGVdN8vv___powf_finite'
/usr/lib/x86_64-linux-gnu/libmvec_nonshared.a(svml_finite_alias.oS):(.text+0x160): first defined here
/usr/lib/x86_64-linux-gnu/libmvec_nonshared.a(svml_finite_alias.oS): In function `_ZGVeN16vv___powf_finite':
(.text+0x170): multiple definition of `_ZGVeN16vv___powf_finite'
/usr/lib/x86_64-linux-gnu/libmvec_nonshared.a(svml_finite_alias.oS):(.text+0x170): first defined here
collect2: error: ld returned 1 exit status
/home/os/mtcp/dpdk-2.2.0/mk/rte.app.mk:221: recipe for target 'test' failed
make[5]: *** [test] Error 1
/home/os/mtcp/dpdk-2.2.0/mk/rte.subdir.mk:61: recipe for target 'test' failed

Matthias Klose (doko) on 2016-05-04
affects: glibc (Ubuntu) → dpdk (Ubuntu)

Do you build form upstream source or the ubunut packaged source?
Also depending on what you do you might just install it as DPDK is available in Xenial.

Since it builds in sbuild/adt/locally for X and Y for me I just gave a quick try.

# get build environment with all you need to dpdk
sudo apt install ubuntu-dev-tools build-essential
sudo apt-get build-dep dpdk

# build what we package:
pull-lp-source dpdk
./debian/rules build

# upstream 2.2
wget http://dpdk.org/browse/dpdk/snapshot/dpdk-2.2.0.tar.gz
tar -xzf dpdk-2.2.0.tar.gz
cd dpdk-2.2.0
make T=x86_64-native-linuxapp-gcc config
There are some issues with gcc 5 and the native config which were fixed post 2.2, so I'd recommend for now:
sed -ri -e 's,(RTE_MACHINE=).*,\1"default",' build/.config
make

Both work for me.
If this really is an issue we need more information why/how that is caused, because as I just shown both options seem to work for me.

Changed in dpdk (Ubuntu):
status: New → Incomplete
沈游人 (shenyouren) wrote :

hi, Christian,
Thanks for your reply. I need to develop on dpdk, so I prefer to build dpdk from source code. And I followed your guild on Upstream 2.2, but still fails with same error.
Here is the version of my Glibc[1]:
I don't know how u success on this, would you mind to show your version of glibc?

[1].
GNU C Library (Ubuntu GLIBC 2.23-0ubuntu3) stable release version 2.23, by Roland McGrath et al.
Copyright (C) 2016 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.
There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A
PARTICULAR PURPOSE.
Compiled by GNU CC version 5.3.1 20160413.
Available extensions:
        crypt add-on version 2.1 by Michael Glad and others
        GNU Libidn by Simon Josefsson
        Native POSIX Threads Library by Ulrich Drepper et al
        BIND-8.2.3-T5B
libc ABIs: UNIQUE IFUNC
For bug reporting instructions, please see:
<https://bugs.launchpad.net/ubuntu/+source/glibc/+bugs>.

Changed in dpdk (Ubuntu):
importance: Undecided → Low

Hi,
I have 2.23-0ubuntu3 just as you.
Also this is building all the time in Xenial and Yakkety over the last few months, so it should work for

To be free of any "I fixed that before" differences i did that build I reported above in a fresh system that I created with uvt-kvm.
Maybe it is vice versa and something on your config is modified that causes this error.

You might want to try to
uvt-simplestreams-libvirt sync --source http://cloud-images.ubuntu.com/daily release=xenial arch=amd64
uvt-kvm create --memory 4096 --cpu 4 --password=ubuntu xenial release=xenial arch=amd64 label=daily

And then try your build in there, if it works just like mine did you can start searching differences from there.

Sean Brown (seanb) wrote :

I am having the same issue with Ubuntu 16.04 and dpdk. I am building from dpdk version 2.1.0.

Sean Brown (seanb) wrote :
Download full text (6.4 KiB)

here are my install logs:

== Build app/test
  LD test
/usr/lib/x86_64-linux-gnu/libmvec_nonshared.a(svml_finite_alias.oS): In function `_ZGVbN2v___log_finite':
(.text+0x0): multiple definition of `_ZGVbN2v___log_finite'
/usr/lib/x86_64-linux-gnu/libmvec_nonshared.a(svml_finite_alias.oS):(.text+0x0): first defined here
/usr/lib/x86_64-linux-gnu/libmvec_nonshared.a(svml_finite_alias.oS): In function `_ZGVcN4v___log_finite':
(.text+0x10): multiple definition of `_ZGVcN4v___log_finite'
/usr/lib/x86_64-linux-gnu/libmvec_nonshared.a(svml_finite_alias.oS):(.text+0x10): first defined here
/usr/lib/x86_64-linux-gnu/libmvec_nonshared.a(svml_finite_alias.oS): In function `_ZGVdN4v___log_finite':
(.text+0x20): multiple definition of `_ZGVdN4v___log_finite'
/usr/lib/x86_64-linux-gnu/libmvec_nonshared.a(svml_finite_alias.oS):(.text+0x20): first defined here
/usr/lib/x86_64-linux-gnu/libmvec_nonshared.a(svml_finite_alias.oS): In function `_ZGVeN8v___log_finite':
(.text+0x30): multiple definition of `_ZGVeN8v___log_finite'
/usr/lib/x86_64-linux-gnu/libmvec_nonshared.a(svml_finite_alias.oS):(.text+0x30): first defined here
/usr/lib/x86_64-linux-gnu/libmvec_nonshared.a(svml_finite_alias.oS): In function `_ZGVbN4v___logf_finite':
(.text+0x40): multiple definition of `_ZGVbN4v___logf_finite'
/usr/lib/x86_64-linux-gnu/libmvec_nonshared.a(svml_finite_alias.oS):(.text+0x40): first defined here
/usr/lib/x86_64-linux-gnu/libmvec_nonshared.a(svml_finite_alias.oS): In function `_ZGVcN8v___logf_finite':
(.text+0x50): multiple definition of `_ZGVcN8v___logf_finite'
/usr/lib/x86_64-linux-gnu/libmvec_nonshared.a(svml_finite_alias.oS):(.text+0x50): first defined here
/usr/lib/x86_64-linux-gnu/libmvec_nonshared.a(svml_finite_alias.oS): In function `_ZGVdN8v___logf_finite':
(.text+0x60): multiple definition of `_ZGVdN8v___logf_finite'
/usr/lib/x86_64-linux-gnu/libmvec_nonshared.a(svml_finite_alias.oS):(.text+0x60): first defined here
/usr/lib/x86_64-linux-gnu/libmvec_nonshared.a(svml_finite_alias.oS): In function `_ZGVeN16v___logf_finite':
(.text+0x70): multiple definition of `_ZGVeN16v___logf_finite'
/usr/lib/x86_64-linux-gnu/libmvec_nonshared.a(svml_finite_alias.oS):(.text+0x70): first defined here
/usr/lib/x86_64-linux-gnu/libmvec_nonshared.a(svml_finite_alias.oS): In function `_ZGVbN2v___exp_finite':
(.text+0x80): multiple definition of `_ZGVbN2v___exp_finite'
/usr/lib/x86_64-linux-gnu/libmvec_nonshared.a(svml_finite_alias.oS):(.text+0x80): first defined here
/usr/lib/x86_64-linux-gnu/libmvec_nonshared.a(svml_finite_alias.oS): In function `_ZGVcN4v___exp_finite':
(.text+0x90): multiple definition of `_ZGVcN4v___exp_finite'
/usr/lib/x86_64-linux-gnu/libmvec_nonshared.a(svml_finite_alias.oS):(.text+0x90): first defined here
/usr/lib/x86_64-linux-gnu/libmvec_nonshared.a(svml_finite_alias.oS): In function `_ZGVdN4v___exp_finite':
(.text+0xa0): multiple definition of `_ZGVdN4v___exp_finite'
/usr/lib/x86_64-linux-gnu/libmvec_nonshared.a(svml_finite_alias.oS):(.text+0xa0): first defined here
/usr/lib/x86_64-linux-gnu/libmvec_nonshared.a(svml_finite_alias.oS): In function `_ZGVeN8v___exp_finite':
(.text+0xb0): multiple definition of `_ZGVeN8v___exp_finite'
/usr/lib/x86_64-linux-...

Read more...

I tried to recreate again and went a bit back and forth.
I was able to trigger it finally.

You are encountering an issue that happens only when CONFIG_RTE_BUILD_COMBINE_LIBS=n.
If it is an option just set it to y and be good with the single lib.

If combined build is not an option the next you should go it dpdk 16.04 which I'd recommend anyway when you are developing anything as of today.

沈游人 (shenyouren) wrote :

Thanks, Christian

Set CONFIG_RTE_BUILD_COMBINE_LIBS as y surely can avoid this error message. But as you said, the combined build is not an option. Also 15.10 can build in the counter way that set CONFIG_RTE_BUILD_COMBINE_LIBS=y. However, I can understand this is not a critical bug and should not spend to much time. I will rollback to 15.10 for develop.

Thanks for your help!

Hi,
yes you probably would get this bug with any recent compiler/glibc (not sure which is the trigger, guess the former) environment.
There is not much Ubuntu does particularly wrong/right here.
And since it is fixed upstream in the DPDK project (working in 16.04) it is not much more we could do about it unless we miss something.

I'll look into compiling DPDK 16.04 (and later 16.07) in various configs soon and if anything comes up there I'll tackle it again.

Setting the bug to incomplete, so that Sean can easily reopen it if it is still an issue for him.
Otherwise it will auto timeout from incomplete after 90 days

sorry, timeout in 59 days now.

Launchpad Janitor (janitor) wrote :

[Expired for dpdk (Ubuntu) because there has been no activity for 60 days.]

Changed in dpdk (Ubuntu):
status: Incomplete → Expired
vishal (vverma88) wrote :

Hi - I'm facing the same compilation issue.
Has anyone looked into it?

Error: multiple definition of `_ZGVbN2v___log_finite'

OS: Ubuntu 16.04 LTS
Kernel: 4.4.0-21-generic

I'm compiling DPDK 2.2 inside Ubuntu VM on CentOS Host.

Hi vishal,
these days - even more when this was reported - I'd recommend a newer DPDK.
In Zesty proposed you can find 16.11 in Yakkety the latest stable release being 16.07.2.
The same applies if you compile yourself - so might I ask are you also seeing this with a recent DPDK version?

TL;DR (in my personal opinion):
a) go to newer DPDK version
b) build with combined libs enabled (outlined in the comments before)

Download full text (6.5 KiB)

Hello, I have the same problem with ubuntu 16.04 and dpdk 16.11.
the errors are as followed:

/usr/lib/x86_64-linux-gnu/libmvec_nonshared.a(svml_finite_alias.oS): In function `_ZGVbN2v___log_finite':
(.text+0x0): multiple definition of `_ZGVbN2v___log_finite'
/usr/lib/x86_64-linux-gnu/libmvec_nonshared.a(svml_finite_alias.oS):(.text+0x0): first defined here
/usr/lib/x86_64-linux-gnu/libmvec_nonshared.a(svml_finite_alias.oS): In function `_ZGVcN4v___log_finite':
(.text+0x10): multiple definition of `_ZGVcN4v___log_finite'
/usr/lib/x86_64-linux-gnu/libmvec_nonshared.a(svml_finite_alias.oS):(.text+0x10): first defined here
/usr/lib/x86_64-linux-gnu/libmvec_nonshared.a(svml_finite_alias.oS): In function `_ZGVdN4v___log_finite':
(.text+0x20): multiple definition of `_ZGVdN4v___log_finite'
/usr/lib/x86_64-linux-gnu/libmvec_nonshared.a(svml_finite_alias.oS):(.text+0x20): first defined here
/usr/lib/x86_64-linux-gnu/libmvec_nonshared.a(svml_finite_alias.oS): In function `_ZGVeN8v___log_finite':
(.text+0x30): multiple definition of `_ZGVeN8v___log_finite'
/usr/lib/x86_64-linux-gnu/libmvec_nonshared.a(svml_finite_alias.oS):(.text+0x30): first defined here
/usr/lib/x86_64-linux-gnu/libmvec_nonshared.a(svml_finite_alias.oS): In function `_ZGVbN4v___logf_finite':
(.text+0x40): multiple definition of `_ZGVbN4v___logf_finite'
/usr/lib/x86_64-linux-gnu/libmvec_nonshared.a(svml_finite_alias.oS):(.text+0x40): first defined here
/usr/lib/x86_64-linux-gnu/libmvec_nonshared.a(svml_finite_alias.oS): In function `_ZGVcN8v___logf_finite':
(.text+0x50): multiple definition of `_ZGVcN8v___logf_finite'
/usr/lib/x86_64-linux-gnu/libmvec_nonshared.a(svml_finite_alias.oS):(.text+0x50): first defined here
/usr/lib/x86_64-linux-gnu/libmvec_nonshared.a(svml_finite_alias.oS): In function `_ZGVdN8v___logf_finite':
(.text+0x60): multiple definition of `_ZGVdN8v___logf_finite'
/usr/lib/x86_64-linux-gnu/libmvec_nonshared.a(svml_finite_alias.oS):(.text+0x60): first defined here
/usr/lib/x86_64-linux-gnu/libmvec_nonshared.a(svml_finite_alias.oS): In function `_ZGVeN16v___logf_finite':
(.text+0x70): multiple definition of `_ZGVeN16v___logf_finite'
/usr/lib/x86_64-linux-gnu/libmvec_nonshared.a(svml_finite_alias.oS):(.text+0x70): first defined here
/usr/lib/x86_64-linux-gnu/libmvec_nonshared.a(svml_finite_alias.oS): In function `_ZGVbN2v___exp_finite':
(.text+0x80): multiple definition of `_ZGVbN2v___exp_finite'
/usr/lib/x86_64-linux-gnu/libmvec_nonshared.a(svml_finite_alias.oS):(.text+0x80): first defined here
/usr/lib/x86_64-linux-gnu/libmvec_nonshared.a(svml_finite_alias.oS): In function `_ZGVcN4v___exp_finite':
(.text+0x90): multiple definition of `_ZGVcN4v___exp_finite'
/usr/lib/x86_64-linux-gnu/libmvec_nonshared.a(svml_finite_alias.oS):(.text+0x90): first defined here
/usr/lib/x86_64-linux-gnu/libmvec_nonshared.a(svml_finite_alias.oS): In function `_ZGVdN4v___exp_finite':
(.text+0xa0): multiple definition of `_ZGVdN4v___exp_finite'
/usr/lib/x86_64-linux-gnu/libmvec_nonshared.a(svml_finite_alias.oS):(.text+0xa0): first defined here
/usr/lib/x86_64-linux-gnu/libmvec_nonshared.a(svml_finite_alias.oS): In function `_ZGVeN8v___exp_finite':
(.text+0xb0): multiple definition of `_ZGVe...

Read more...

To post a comment you must log in.
This report contains Public information  Edit
Everyone can see this information.

Other bug subscribers