2009-10-01 8 views
9

me estoy poniendo algunas dificultades con QT obra con la opción "-lrt"biblioteca no se encontró para -lrt con QtCreator [Mac OS]

Estoy utilizando Mac OS 10.6 con Qt Creator 1.2.1, heeeeeeelp !

este es el dominio total de construcción:

g ++ -headerpad_max_install_names -o 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

y termina con

ld: biblioteca no se encontró para -lrt collect2: ld devolvió el código de salida 1

Respuesta

9

¿Por qué el programa necesita librt?

Sé que algunas plataformas (Solaris viene a la mente) requieren librt para algunas funciones que pueden existir en otras bibliotecas en su sistema operativo. (sem_init() y otros son así)

Puede tratar de vincular sin -lrt y ver si funciona.

+1

Sí, he modificado el comando de compilación para deshabilitar la biblioteca -lrt y funciona :) gracias ^^ – Houssem

13

El enlazador no puede encontrar librtad que es probablemente la biblioteca de extensiones POSIX en tiempo real. No creo que esto esté disponible en OSX. Googlear da esto desde Apple developer lists

pregunta de la lista

Estoy tratando de construir un simulador desarrollado en mi universidad (en Linux) y me da error por el enlazador que parece incapaz de encontrar librt.a - en el código se utiliza para clock_gettime() y me gustaría saber si hay un puerto de dicha biblioteca, o alguna otra función similar que me permite compilar, incluso en Mac OS X.

respuesta librtad .a es el Sistema V nombre de la biblioteca que contiene las funciones POSIX Advanced Realtime [RT} Option. La función específica en la que está preguntando es parte de la opción [TMR]. Si Mac OS X lo admite, estaría en libSystem.B, dylib, no librt.a. La función en cuestión no es compatible con Mac OS X.

El código debe comprobar para ver si opcional para poner en práctica las cosas por encima y más allá del estándar de UNIX se ejecutan en el sistema operativo de destino, y si no lo son, usa una interfaz diferente

+1

Curiosamente, POSIX requiere '-lrt' para funcionar. Parece que Apple resolvió esto ignorando ese indicador cuando el compilador se invoca con el comando POSIX estándar 'c99'. http://pubs.opengroup.org/onlinepubs/9699919799/utilities/c99.html#tag_20_11_13_01 –