2009-10-01 7 views
9

Dostaję jakieś kłopoty z QT Buduje z opcją "-lrt"biblioteka nie znaleziono -lrt z Qt Creator [Mac OS]

Używam Mac OS 10.6 z Qt Creator 1.2.1, heeeeeeelp !

jest pełna polecenie Budowa:

g ++ -headerpad_max_install_names -o AMiningCoreTest main.o tokenizer.o DictionnaryToolBox.o mysql.o btree.o BTreeDataTable.o tcaccess.o -L/Biblioteki/Konstrukcje -l/usr/lib/mysql -lmysqlclient -l/usr/local/lib/-ltokyocabinet -lZ -lbz2 -lrt -lpthread -lm -lc

i kończy

ld: biblioteki nie znaleziono -lrt collect2: ld zwróconym stanem wyjścia 1

Odpowiedz

9

Dlaczego program wymaga librt?

Wiem, że niektóre platformy (Solaris przychodzi do głowy) wymagają librt dla niektórych funkcji, które mogą istnieć w innych bibliotekach w systemie operacyjnym. (sem_init() i inni są tacy)

Możesz spróbować połączyć bez -lrt i sprawdzić, czy to działa.

+1

Tak, zmodyfikowałem polecenie budowania, aby wyłączyć bibliotekę -lrt i działa :) dziękuję ^^ – Houssem

13

Łącznik nie może znaleźć librt który jest prawdopodobnie POSIX rozszerzenia czasu rzeczywistego biblioteka. Nie sądzę, że jest to dostępne w systemie OSX. Googling daje to od Apple developer lists

pytanie z listy

Próbuję zbudować symulator opracowany w mojej uczelni (w systemie Linux) i dostaję błąd przez łącznik, który wydaje się nie mogąc znaleźć librt.a - w kod służy do clock_gettime() i chciałbym wiedzieć, czy tam port takiej bibliotece, albo jakaś inna podobna funkcja pozwala mi skompilować nawet na Mac OS X.

Odpowiedź librt .a to System V nazwa biblioteki zawierającej zaawansowane funkcje czasu rzeczywistego [RT} w funkcji czasu rzeczywistego POSIX . Określona funkcja, o którą pytasz, jest częścią opcji [TMR]. Jeśli Mac OS X go obsługuje, to będzie to plik libSystem.B, dylib, a nie librt.a. Funkcja w pytaniu nie jest obsługiwany przez system Mac OS X.

Kod powinien sprawdzić, czy opcja wdrożyć rzeczy ponad i poza standardem UNIX są realizowane w docelowym systemie operacyjnym, a jeśli nie są, użyj innego interfejsu.

+1

Co zabawne, POSIX wymaga, aby '-lrt' działał. Wydaje się, że Apple to rozwiązał, ignorując tę ​​flagę, gdy kompilator jest wywoływany za pomocą standardowego polecenia POSIX standardu POSIX. http://pubs.opengroup.org/onlinepubs/9699919799/utilities/c99.html#tag_20_11_13_01 –