[Bug 1271468] Re: collect2 --as-needed option causes build failure
Marc Fournier
1271468 at bugs.launchpad.net
Wed Jan 22 09:49:22 UTC 2014
** Attachment added: "gcc -v on jessie"
https://bugs.launchpad.net/ubuntu/+source/gcc-4.8/+bug/1271468/+attachment/3954219/+files/gcc-v-jessie.txt
--
You received this bug notification because you are a member of Ubuntu
Foundations Bugs, which is subscribed to gcc-4.8 in Ubuntu.
https://bugs.launchpad.net/bugs/1271468
Title:
collect2 --as-needed option causes build failure
Status in “gcc-4.8” package in Ubuntu:
New
Bug description:
Testing a package build on upcoming trusty, I encountered a rather
strange issue.
Given this simple program:
#include <amqp_tcp_socket.h>
int main () {
return amqp_tcp_socket_new (0);
}
I installed "librabbitmq-dev" which provides amqp_tcp_socket.h, and
then ran "gcc -o /tmp/test -g -O2 -lrabbitmq -ldl amqp.c", which fails
with:
/tmp/amqp.c:2: undefined reference to `amqp_tcp_socket_new'
collect2: error: ld returned 1 exit status
Using "gcc -v", I discovered that if /usr/lib/gcc/x86_64-linux-
gnu/4.8/collect2 was called without the --as-needed option, the
program builds fine.
I'm actually opening this bug against gcc and not librabbitmq-dev for
a reason: this simple C program builds perfectly on debian jessie/sid.
librabbitmq-dev/librabbitmq1 are exactly identical between trusty and
debian unstable. The problem also occurs when manually building
librabbitmq from the upstream source tarball.
Also, it's not just a matter of fixing my broken program or calling
gcc with some other option. This program actually is a stripped down
version of what is generated by autoconf (also same version and output
on sid and trusty, BTW) with this macro:
AC_CHECK_FUNC(amqp_tcp_socket_new, [with_amqp_tcp_socket="yes"],
[with_amqp_tcp_socket="no"])
Attaching the output of "gcc -v" on both trusty and jessie. Apart from
a couple of paths and version strings, collect2 is called with "--as-
needed" and "-z relro" on trusty but not on debian jessie.
"--as-needed" is what makes the difference between failing to build
(on trusty) or not (on jessie).
Thanks for taking a look at this !
To manage notifications about this bug go to:
https://bugs.launchpad.net/ubuntu/+source/gcc-4.8/+bug/1271468/+subscriptions
More information about the foundations-bugs
mailing list