библиотека не найдена для -lrt с QtCreator [mac os]

У меня проблемы с QT, который он строит с опцией "-lrt"

Я использую Mac OS 10.6 с QT Creator 1.2.1, heeeeeeelp!

это полная команда сборки:

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 / local / usr библиотека / -ltokyocabinet -lz -lbz2 -lrt -lpthread -lm -lc

и это заканчивается

ld: библиотека не найдена для -lrt collect2: ld вернул 1 статус выхода


person Houssem    schedule 01.10.2009    source источник


Ответы (2)


Зачем программе нужен librt?

Я знаю, что некоторые платформы (на ум приходит Solaris) требуют librt для некоторых функций, которые могут существовать в других библиотеках вашей ОС. (sem_init () и др. такие)

Вы можете попытаться связать без -lrt и посмотреть, работает ли это.

person asveikau    schedule 01.10.2009
comment
Да, я изменил команду сборки, чтобы отключить библиотеку -lrt, и она работает :) спасибо ^^ - person Houssem; 04.10.2009

Компоновщик не может найти librt, которая, вероятно, является библиотекой расширений реального времени Posix. Я не думаю, что это доступно в OSX. Google дает это из списки разработчиков Apple

Вопрос из списка

Я пытаюсь создать симулятор, разработанный в моем университете (в Linux), и я получаю ошибку от компоновщика, который, кажется, не может найти librt.a - в коде используется для clock_gettime (), и я хотел бы знать, есть ли порт такой библиотеки или другую подобную функцию, которая позволяет мне компилировать даже на Mac OS X.

Ответ librt.a - это имя System V библиотеки, содержащей функции POSIX Advanced Realtime [RT} Option. Конкретная функция, о которой вы спрашиваете, является частью опции [TMR]. Если бы Mac OS X поддерживал его, он был бы в libSystem.B, dylib, а не в librt.a. Рассматриваемая функция не поддерживается Mac OS X.

Ваш код должен проверить, реализованы ли в целевой ОС необязательные для реализации вещи, выходящие за рамки стандарта UNIX, и, если это не так, использовать другой интерфейс.

person mmmmmm    schedule 01.10.2009
comment
Как ни странно, для работы POSIX требуется -lrt. Кажется, Apple решила эту проблему, проигнорировав этот флаг, когда компилятор вызывается стандартной командой POSIX c99. pubs.opengroup.org/onlinepubs/9699919799/utilities/ - person Per Johansson; 28.06.2014