2016-04-24 4 views
2

Ich versuche libpipeline auf Mac OS X zu bauen, aber ich bekomme Fehler, die ich nicht mit anderen Programmen, die autotools verwenden, aufgetreten bin.libpipeline kann nicht unter Mac OS X kompilieren

Dies ist der erste Fehler, den ich bekommen:

/Developer/usr/bin/ranlib: file: .libs/libgnu.a(sig-handler.o) has no symbols 

Der zweite Fehler ist viel mehr kryptisch:

warning: /Developer/usr/bin/nm: no name list 

Schließlich bekomme ich diesen Fehler, die spekulativ ein Höhepunkt der bisherigen Fehler ist .

Undefined symbols for architecture x86_64: 
    "_program_name", referenced from: 
     _error in libgnu.a(error.o) 
     _error_at_line in libgnu.a(error.o) 
ld: symbol(s) not found for architecture x86_64 

Vollprotokoll: https://gist.github.com/ahyattdev/7e4da95d48a6d25ad77aad926a14e7b0

Schritte zum Reproduzieren: Erhalten Sie die Quelle von libpipeline 1.4.1, führen configure; make.

+1

Die erste ist kein Fehler, es ist eine einfache Informationsnachricht. Soweit ich weiß, werden weder 'libpipeline' noch' libgnu' unter OS X unterstützt. – Leandros

+1

'programmname' ist ein externes Symbol. Versuchen Sie es mit 'CFLAGS =" - Wl, -flat_namespace, -undefiniert, unterdrücken "'. – baf

+0

Diese Argumente haben dieses Problem für mich behoben. Ein bibliotheksspezifisches Problem wurde dann eingeführt, das ich mit einem Dummy-Header fixierte. – ahyattdev

Antwort

2

This comment was the main contribution to this answer

Configure Befehl:

CFLAGS="-Wl,-flat_namespace,-undefined,suppress -Iwindows.h" ./configure 

Einige Fehler auftreten einen Kopf Zusammenhang, dass Windows spezifisch ist, aber es braucht nur ein paar Einträge in der Kopfzeile dieses zu kompilieren.

Inhalt von windows.h (I legte es in dem Stammprojekt)

typedef intptr_t; 
#define INVALID_HANDLE_VALUE -1 

Dies ist das Projekt erfolgreich zu bauen ermöglicht.

+2

Die Flags scheinen Configure-Skript zu verwechseln. Dies kann zu einer fehlerhaften Binärdatei führen. Versuchen Sie stattdessen, sie zum 'make'-Befehl hinzuzufügen:' make CFLAGS = "- Wl, -flat_namespace, -undefined, suppress" '. – baf

+1

@baf Sie haben Recht, wenn Sie diese Flags an "configure" übergeben, verwirren und zu einer fehlerhaften Binärdatei führen. Zumindest für mich. Wenn Sie sie stattdessen an "make" übergeben, scheint das Problem behoben zu sein. – GDP2