2015-10-22

'PTHREAD_MUTEX_RECURSIVE' undeclared solution

如果使用 glibc 2.11 的 Linux 機器,有可能會遇到這個問題(如果有使用 PTHREAD_MUTEX_RECURSIVE 的話)。

解決方法:

在 Makefile 或者是 Makefile.in (如果是使用 autoconf/configure)加入下面的判斷:

# glibc 2.11 not declaring pthread_mutexattr_settype and PTHREAD_MUTEX_RECURSIVE
# by default, causing compilation failures on some Debian and Ubuntu version.
ifneq ("$(OS)","Windows_NT")
ifneq ($(shell ldd --version | head -n 1 | grep 2.11),)
        PKG_CFLAGS += -D_GNU_SOURCE
endif
endif

這樣就可以解決問題。但是我還沒有在不是使用 glibc 2.11 的 Linux 機器與 Windows 平台上測試,確定加入以後只針對 glibc 2.11 所造成的問題。

沒有留言: