LD Changes To Implicit DSO Linking Update

Roland Grunberg rgrunber at redhat.com
Tue Feb 9 15:44:21 UTC 2010


>Most of the time upstream (myself included) just forgets to add a
>library at the end of the LDADD line, so all I had to do was send a
>trivial patch upstream to add "-lm" or something.

>See here for an example:
>http://bugzilla-attachments.gnome.org/attachment.cgi?id=152993

In fact most of the changes will probably involve a one line addition.

As an example, galculator-1.3.4-2.fc12.src.rpm was found to be failing
because libm is used but not explicitly linked. 

RPM build errors:
/usr/bin/ld.bfd: math_functions.o: undefined reference to symbol 'sin@@GLIBC_2.0'
/usr/bin/ld.bfd: note: 'sin@@GLIBC_2.0' is defined in DSO /lib/libm.so.6 so try
adding it to the linker command line
/lib/libm.so.6: could not read symbols: Invalid operation

The following would fix this and allow the package to build.

--- configure.in.old	2010-02-09 10:25:30.000000000 -0500
+++ configure.in	2010-02-09 10:26:28.000000000 -0500
@@ -16,6 +16,7 @@
 PKG_CHECK_MODULES(PACKAGE, [$pkg_modules])
 AC_SUBST(PACKAGE_CFLAGS)
 AC_SUBST(PACKAGE_LIBS)
+AC_CHECK_LIB(m, pow)
 
 GETTEXT_PACKAGE=galculator
 AC_DEFINE_UNQUOTED(GETTEXT_PACKAGE, "$GETTEXT_PACKAGE", [Name of gettext package])


There's an example at the bottom of the page :
https://fedoraproject.org/wiki/UnderstandingDSOLinkChange

demonstrating what a failed build message would look like,
and how to go about fixing the issue.

-- 
Roland Grunberg


More information about the devel mailing list