Не похоже, что это возможно, вы можете изменить реализацию во время загрузки, чтобы не было возможности узнать во время компиляции, что бы вы ни делали.
со страницы руководства pthreads:
В системах с поддержкой glibc
как LinuxThreads, так и NPTL (т.е.
glibc 2.3.x), LD_ASSUME_KERNEL
переменная окружения может быть использована для
переопределить динамический компоновщик по умолчанию
выбор реализации потоков.
Эта переменная сообщает динамическому компоновщику
предположить, что он работает поверх
конкретная версия ядра. От
указав версию ядра, которая делает
не предоставлять поддержку, требуемую
NPTL, мы можем заставить использование
LinuxThreads. (Наиболее вероятная причина
для этого нужно запустить (сломанный)
приложение, которое зависит от некоторых
несоответствующее поведение в
LinuxThreads.) Например:
bash$ $( LD_ASSUME_KERNEL=2.2.5 ldd /bin/ls | grep libc.so | \
awk '{print $3}' ) | egrep -i 'threads|ntpl'
linuxthreads-0.10 by Xavier Leroy
Не говоря уже о том, что две реализации (в основном) двоично-совместимы, поэтому в основном вы НЕ МОЖЕТЕ знать во время компиляции, какая библиотека потоков будет использоваться НИКОГДА, поскольку она может меняться в зависимости от переменных среды, присутствующих при запуске вашей программы или кто-то может скопировать двоичный файл из системы NPTL в систему LinuxThreads. Вы просто не можете этого сделать, потому что это не то, что известно во время компиляции, по крайней мере, не так, как вы можете положиться.
Вы должны будете найти какой-нибудь способ использовать обнаружение во время выполнения, или, возможно, вы могли бы обновить свой пост информацией о ПОЧЕМУ вы хотите сделать это, и кто-то может, возможно, дать совет о том, как сделать это каким-то другим способом, или как чтобы сделать возможным использование во время выполнения определения того, какие pthreads используются.
Другое возможное решение - добавить опцию к вашему скрипту конфигурации и сделать так, чтобы лицо, компилирующее его, выбирало.