unix package does not check properly for sem_close
On modern Linux systems (in my case, Fedora 13 and 14), the sem_close
and other functions are in the rt
and pthread
libraries. This combination is not checked for properly by the unix
package's autoconf
script. As a result attempting to build the unix
package will succeed, but linking applications against the misconfigured unix
will result in undefined symbol errors for e.g. sem_close
.
I believe that the C compiler needs to be invoked with -pthread
for the right thing to happen, as unix.buildinfo
contains a reference to rt
that is nevertheless not enough:
buildable: True
cc-options:
ld-options:
extra-libraries: rt util dl
Here's my current workaround hack:
--- old-unix/configure.ac 2010-11-23 15:25:33.741849630 -0800
+++ new-unix/configure.ac 2010-11-23 15:25:33.760849987 -0800
@@ -215,6 +215,9 @@
PTHREAD_CFLAGS=-pthread
PTHREAD_LDFLAGS=-pthread
;;
+linux*)
+ PTHREAD_LIBS=pthread
+ ;;
esac
AC_SUBST(PTHREAD_CFLAGS)
AC_SUBST(PTHREAD_LDFLAGS)
Trac metadata
Trac field | Value |
---|---|
Version | 7.0.1 |
Type | Bug |
TypeOfFailure | OtherFailure |
Priority | normal |
Resolution | Unresolved |
Component | libraries/unix |
Test case | |
Differential revisions | |
BlockedBy | |
Related | |
Blocking | |
CC | |
Operating system | |
Architecture |