Попытка скомпилировать что-нибудь для 64-битного Unix с помощью Ubuntu. Как заявление об отказе от ответственности, я начал использовать linux и gcc только несколько дней назад, поэтому все еще учусь. В любом случае, получаю следующую ошибку:
/ home / myuser / myproject / myfile.cpp: 437: неопределенная ссылка на `clock_gettime '
Быстрый Google показывает, что мне нужна опция -lrt для связи с librt.a. Поэтому я проверяю свою командную строку (отформатирован для удобства чтения, разных имен файлов и удаляю списки имен файлов):
/usr/bin/g++
-Wl,
--gc-sections
-fno-exceptions
-m64
-B/usr/bin
-o
"/home/myuser/myproject"
-Wl,
-Map, "/home/myuser/myproject/myproject.map"
-g
"/home/myuser/myproject/myproject.cpp.obj"
..and some more .objs..
-Xlinker
--start-group
"-lpthread"
"-lrt"
"/home/myuser/myproject/lib/mylib.a"
..and some more .as..
-Xlinker
--end-group
Хм. Похоже, что -lrt уже есть, может быть, у меня нет librt.a? Нет поиска по всем файлам показывает, что у меня /usr/lib/x86_64-linux-gnu/librt.a. Я думаю, что g ++ ищет не в том месте. Поэтому в приведенной выше командной строке я заменяю -lrt на /usr/lib/x86_64-linux-gnu/librt.a и bingo! он компилируется и ссылки нормально. К сожалению, это автоматизированный инструмент, и мне нужно, чтобы он работал на многих компьютерах, и я не могу делать предположения о местонахождении librt.a, поэтому он мне действительно нужен для работы с -lrt. Итак, как мне установить путь поиска в локальной библиотеке? Первая попытка - изменить переменную окружения LD_LIBRARY_PATH, но, по-видимому (из того, что я могу сказать по поиску в Google) это игнорируется в Ubuntu, и вместо этого я должен возиться с файлами .conf в /etc/ld.so.conf.d/, однако я уже похоже, у меня уже есть x86_64-linux-gnu.conf со следующими строками:
# Multiarch support
/lib/x86_64-linux-gnu
/usr/lib/x86_64-linux-gnu
Из того, что я прочитал выше, похоже, что это все, что мне нужно. Вид застрял в том, куда идти дальше ...