Я новичок в Ubuntu и до сих пор программирую на glfw3 в Mac.Проблема заключается в следующем.После того, как я загрузил пакет glfw3 с
sudo aptitude install libglfw3 libglfw3-dev
в Ubuntu, я проверил расположение библиотеки glfw3.Я гуглил онлайн и обнаружил, что dpkg --listfiles packagename
возвращает путь ко всем файлам, связанным с пакетом, который я установил.Результат dpkg --listfiles libglfw3
таков.(Я просто покажу пути с файлами .so)
/usr/lib/x86_64-linux-gnu/libglfw.so.3.2
/usr/lib/x86_64-linux-gnu/libglfw.so.3
Результат dpkg --listfiles libglfw3-dev
таков:
/usr/lib/x86_64-linux-gnu/libglfw.so
Существует 3 типа файлов .so, поэтомуЯ хотел использовать самый последний (3.2), и make-файл, использующий версию 3.2, очень хорошо работал на Mac.Вот make-файл, который я пытался использовать в Ubuntu
LINK_TARGET = Animation
OBJS = glad.o Animation.o
REBUILDABLES = $(OBJS) $(LINK_TARGET)
INCLUDES = -I/usr/include
all : $(LINK_TARGET)
echo All successfully linked!
$(LINK_TARGET) : $(OBJS)
g++ -o $@ $^ -L/usr/lib/x86_64-linux-gnu -ldl -lglfw.3.2
Animation.o : Animation.cpp
g++ -c Animation.cpp $(INCLUDES)
glad.o : glad.c
g++ -c glad.c $(INCLUDES)
clean :
rm -f $(REBUILDABLES)
echo Clean done!
Если мы сосредоточимся на строке
$(LINK_TARGET) : $(OBJS)
g++ -o $@ $^ -L/usr/lib/x86_64-linux-gnu -ldl -lglfw.3.2
Опция -lglfw.3.2
, которая так хорошо работала в Mac (Mac использовался длябыть файлами .dylib вместо файлов .so. Однако флаг -ldl
также не нужен в Mac).Теперь он печатает сообщение об ошибке /usr/bin/ld: cannot find -lglfw3.2
, если запускается make-файл.
Makefile успешно запускается, если я изменяю параметр -lglfw3.2
на -lglfw
, и я не понимаю, почему.libglfw.so.3.2
и libglfw.so
оба существуют в каталоге.Я хочу понять, почему это происходит.Заранее спасибо!