2016-05-06 26 views
-1

Ich verwende ./configure, um eines der Projekte zu konfigurieren. Ich erhalte den folgenden Fehler.Autoconf - Keine POSIX-Thread-Unterstützung. Konfigurieren Sie möglicherweise mit falschem Code, um die Unterstützung zu überprüfen. Wie man es repariert?

checking for the pthreads library -lpthreads... no 
checking whether pthreads work without any flags... no 
checking whether pthreads work with -Kthread... no 
checking whether pthreads work with -kthread... no 
checking for the pthreads library -llthread... no 
checking whether pthreads work with -pthread... no 
checking whether pthreads work with -pthreads... no 
checking whether pthreads work with -mthreads... no 
checking for the pthreads library -lpthread... no 
checking whether pthreads work with --thread-safe... no 
checking whether pthreads work with -mt... no 
checking for pthread-config... no 
configure: error: POSIX threads support is required 

Wenn ich die configure-Datei überprüfen, sehe ich, dass es den folgenden Code verwendet für pthread Unterstützung zu überprüfen:

#include <pthread.h> 
int main() 
{ 
pthread_t th; pthread_join(th, 0); 
        pthread_attr_init(0); pthread_cleanup_push(0, 0); 
        pthread_create(0,0,0,0); pthread_cleanup_pop(0); 
    ; 
    return 0; 
} 

Wenn ich es separat kompilieren, ist es nicht kompilieren. Aber mit Warnungen von pthread_create.

test_pthread.c:5:22: warning: null argument where non-null required (argument 1) [-Wnonnull] 
         pthread_attr_init(0); pthread_cleanup_push(0, 0); 
        ^
test_pthread.c:6:22: warning: null argument where non-null required (argument 1) [-Wnonnull] 
         pthread_create(0,0,0,0); pthread_cleanup_pop(0); 
        ^
test_pthread.c:6:22: warning: null argument where non-null required (argument 3) [-Wnonnull] 

Ist dies ein Fehler in der Art und Weise, wie configure nach -pthread-Unterstützung mit dem Compiler sucht? Wie kann ich das beheben?

Ich benutze Autoreconf -i, bevor ich ./configure ausführen. Was ist ein sauberer Weg, um dieses Problem zu beheben?

------------ EDIT: Hinzufügen Mehr Infos ----------

ich die folgenden Zeilen in der Datei configure.ac bin mit zu überprüfen Pthread. Ich habe es gerade von einer Config online bekommen.

# Check for POSIX thread support 

    ACX_PTHREAD([ 
        LIBS="$LIBS $PTHREAD_LIBS" 
        CFLAGS="$CFLAGS $PTHREAD_CFLAGS -g -Wall" 
        CC="$PTHREAD_CC" 
        AC_SUBST([LIBS]) 
        AC_SUBST([CFLAGS]) 
        AC_SUBST([CC]) 
       ], 
       [AC_MSG_ERROR([POSIX threads support is required])]) 
+0

Die Warnungen sollten den Test nicht stoppen. Sie müssen in die Frage mehr der autoconf-Quelldatei aufnehmen, die diese Tests implementiert. – caf

+0

@caf: Hinzufügen der Codezeilen, die ich in der Datei configure.ac verwende. – theCuriousOne

+0

Sie haben noch nicht "-Werror" in Ihren CFLAGS gesetzt? – caf

Antwort

2

Von Kommentaren ist es offensichtlich, dass Sie -Werror in Ihrem CFLAGS früh in Ihrem autoconf-Skript festgelegt haben.

Tun Sie das nicht. Wenn Sie -Werror möchten, fügen Sie es zu CFLAGS direkt am Ende des Skripts hinzu, nachdem alle Tests ausgeführt wurden, die den Compiler aufrufen. Die meisten Autoconf-Tests wurden nicht geschrieben, um mit -Werror zu arbeiten.