Clock_gettime() - ошибка при компоновке

Автор: feol Дата: 25.12.2007 15:31 ASP Linux 12. При компоновке программы возникает ошибка - не может разрешить ссылку но функцию clock_gettime(). Makefile сделан утилитами Qt: qmake -project, затем qmake. Что можно сделать, нужно подключить доп. библиотеку?
Re: clock_gettime() - ошибка при компоновке 25.12.2007 16:01Bircoph -lимя_библиотеки_без_префикса_lib
Re: clock_gettime() - ошибка при компоновке 25.12.2007 17:57feol Ага, спасибо, а в какой библиотеке она должна быть, никто случайно не знает? Я в программировании Линукс человек довольно новый..
Re: clock_gettime() - ошибка при компоновке 25.12.2007 18:14peter_ir Надо хотя бы дать команду "man clock_gettime" и увидеть, что она не из Qt.
Б-ка - libpthread, т.е. -lpthread, но, как я понял, перед вызовом
clock_gettime надо
вызвать, например, clock_getcpuclockid, для которой надо указать -lrt.
Найти, в какой б-ке функция, уже сложнее, это можно сделать из скрипта с
помощью команд nm и grep.
Re: clock_gettime() - ошибка при компоновке 25.12.2007 19:04Bircoph > Б-ка - libpthread, т.е. -lpthread, но, как я понял, перед
> вызовом clock_gettime надо вызвать, например,
> clock_getcpuclockid, для которой надо указать -lrt.

Лучше всегда явно линковать используемые библиотеки, т.к.
в одной системе данная имплицитная линковка может
использоваться, а в других -- нет.

> Найти, в какой б-ке функция, уже сложнее, это можно
> сделать из скрипта с помощью команд nm и grep.

Или использовать готовую программу, которая пошустрее
скриптов будет ;-).
Re: clock_gettime() - ошибка при компоновке 25.12.2007 19:51peter_ir Да и скрипт недолго. Нижеприведённый искал эти функции 7 и 10 секунд.

#
foreach ln ( `ls *.a` )
(nm --undefined-only $ln > lst) >& /dev/null
set n = `grep -e "\w\.o:" < lst| grep -c $1`
if ( $n > 0 ) then
echo $ln $1 $n
rm -f lst
exit
endif
end
Re: clock_gettime() - ошибка при компоновке 25.12.2007 20:11Bircoph > foreach ln ( `ls *.a` )

На каком основании только в *.a да ещё и из текущего
каталога? Не верю, что /lib и /usr/lib со всеми вложенными
прошло за 7-10 секунд (без использования кэша диска после
предыдущего запуска).
Re: clock_gettime() - ошибка при компоновке 25.12.2007 20:25peter_ir Честно говоря, без всякого основания.
Разумеется, поиск осушествлялся только в /usr/lib, в который я и поместил
этот скрипт, т.к. надеялся найти б-ку непосредственно там, а сделал так,
чтобы поскорее.
Также просьба посмотреть моё сообщение о работе сайта на форуме "Предложения
разработчикам", м.б., зто-нибудь посоветуете.
И на форуме "Общий" "user after root".
Re: clock_gettime() - ошибка при компоновке 26.12.2007 12:08feol То, что это функция не Qt я знал конечно. Но не знал, откуда она. Оказалось, да, lib_rt, -lrt помогло и всё замечательно Улыбка. Плохо, что в man не пишут, из какой библиотеки функция. Первое, что сделал, там посмотрел, но увы. Так или иначе, заработало, спасибо.
Re: clock_gettime() - ошибка при компоновке 26.12.2007 15:44peter_ir Только вот в Qt, поскольку это кросс-платформенный пакет, не рекомендуется использовать
нативные функции.
Re: clock_gettime() - ошибка при компоновке 26.12.2007 16:18feol Нет, не Qt проект, просто нужно очень срочно перенести приложение под Линкус. Мат. модель оптического прибора, заряда ПЗС и внешней среды. Многопоточное, чуть больше 1мб исх. кода, написаное как консольное Windows. К сожалению никогда не работал раньше в Линукс, использовал qmake -project, qmake для получения Makefile, ибо их формат совершенно не знаю, а так вроде работа движется. Но надо разбираться с ним, конечно. Вот..
RSS-материал