2009-10-01 17 views
9

sto ottenendo alcuni problemi con QT si costruisce con l'opzione "-lrt"biblioteca non trovato per -lrt con QtCreator [Mac OS]

sto usando Mac OS 10.6 con Qt Creator 1.2.1, heeeeeeelp !

questo è il comando completo di generazione:

g ++ -o -headerpad_max_install_names AMiningCoreTest main.o tokenizer.o DictionnaryToolBox.o mysql.o btree.o BTreeDataTable.o tcaccess.o -L/Library/Frameworks -L/usr/lib/mysql -lmysqlclient -L/usr/local/lib/-ltokyocabinet -lz -lbz2 -lrt -lpthread -lm -lc

e si conclude con

ld: libreria non trovato per -lrt collect2: ld returned 1 exit status

risposta

9

Perché il programma necessita di librt?

So che alcune piattaforme (viene in mente Solaris) richiedono la libreria per alcune funzioni che potrebbero esistere in altre librerie del sistema operativo. (sem_init() et al. sono così)

Si potrebbe provare a collegare senza -lrt e vedere se funziona.

+1

Sì, ho modificato il comando build per disabilitare la libreria -lrt e funziona :) grazie ^^ – Houssem

13

Il linker non riesce a trovare librt che è probabilmente la libreria di estensioni in tempo reale Posix. Non penso che questo sia disponibile su OSX. Googling dà questo da Apple developer lists

domanda dalla lista

Sto cercando di costruire un simulatore sviluppato nella mia università (su Linux) e ottengo l'errore dal linker che sembra incapace di trovare librt.a - nel il codice viene utilizzato per clock_gettime() e vorrei sapere se c'è un porto di tale libreria, o qualche altra funzione simile che mi permette di compilare anche su Mac OS X.

risposta librt .a è il sistema V nome della libreria contenente le funzioni opzionali POSIX Advanced Realtime [RT}. La funzione specifica che si sta chiamando fa parte dell'opzione [TMR]. Se Mac OS X lo supporta, è in libSystem.B, dylib, non librt.a. La funzione in questione non è supportato da Mac OS X.

Il codice dovrebbe controllare per vedere se opzionale implementare le cose di sopra e al di là dello standard UNIX sono implementate nel sistema operativo di destinazione, e se non sono, usa un'interfaccia diversa

+1

Stranamente, POSIX richiede '-lrt' per funzionare. Sembra che Apple abbia risolto questo problema ignorando quel flag quando il compilatore è invocato con il comando standard 'c99' di POSIX. http://pubs.opengroup.org/onlinepubs/9699919799/utilities/c99.html#tag_20_11_13_01 –