Not finding __USE_UNIX98 definitions or pthread_mutexattr_settype()
Philip A. Prindeville
philipp_subx at redfish-solutions.com
Sun Jan 10 22:50:24 UTC 2010
We're using uClibc 0.9.28 (patched) for the Astlinux project (and yes, we intend to update... after we get this release out).
We're trying to compile spandsp and app_rxfax (an app for Asterisk that's part of spandsp) and getting:
In file included from app_rxfax.c:29:
/home/philipp/kernel/build_i586/asterisk-220.127.116.11/include/asterisk/lock.h: In function 'ast_mutex_init':
/home/philipp/kernel/build_i586/asterisk-18.104.22.168/include/asterisk/lock.h:1698: warning: implicit declaration of function 'pthread_mutexattr_settype'
/home/philipp/kernel/build_i586/asterisk-22.214.171.124/include/asterisk/lock.h: At top level:
/home/philipp/kernel/build_i586/asterisk-126.96.36.199/include/asterisk/lock.h:1760: error: expected '=', ',', ';', 'asm' or '__attribute__' before 'ast_rwlock_t'
/home/philipp/kernel/build_i586/asterisk-188.8.131.52/include/asterisk/lock.h:1770: error: expected ')' before '*' token
/home/philipp/kernel/build_i586/asterisk-184.108.40.206/include/asterisk/lock.h:1786: error: expected ')' before '*' token
/home/philipp/kernel/build_i586/asterisk-220.127.116.11/include/asterisk/lock.h:1791: error: expected ')' before '*' token
/home/philipp/kernel/build_i586/asterisk-18.104.22.168/include/asterisk/lock.h:1796: error: expected ')' before '*' token
/home/philipp/kernel/build_i586/asterisk-22.214.171.124/include/asterisk/lock.h:1801: error: expected ')' before '*' token
/home/philipp/kernel/build_i586/asterisk-126.96.36.199/include/asterisk/lock.h:1822: error: expected ')' before '*' token
/home/philipp/kernel/build_i586/asterisk-188.8.131.52/include/asterisk/lock.h:1827: error: expected ')' before '*' token
/home/philipp/kernel/build_i586/asterisk-184.108.40.206/include/asterisk/lock.h:1832: error: expected ')' before '*' token
/home/philipp/kernel/build_i586/asterisk-220.127.116.11/include/asterisk/lock.h:1855: error: expected ')' before '*' token
>From what I can tell, pthread_mutexattr_settype() isn't being declared because __USE_UNIX98 isn't set when <pthread.h> gets included, and __USE_UNIX96 gets set in <features.h> by having _LIBC set. So why isn't _LIBC getting set?
Is there a header file I forgot to include?
My understanding was that most system header files are self-including (i.e. pthread.h pulls in features.h and whatever else might be needed for me... I don't need to do that).
So my next thought is that either I'm missing some patch, or I'm not passing in some compile-time flag like -D_GNU_SOURCE=1...
Which one is it?
More information about the uClibc