У меня есть программа cpp, которая использует SDL_TTF из SDL2. Я использую функции TTF_OpenFont
, TTF_RenderText_Solid
и TTF_CloseFont
. Затем я пытаюсь скомпилировать код в моем Makefile в библиотеку, которую я могу загрузить позже с dl_open
из <dlfcn.h>
.
Вот так выглядит мой Makefike
NAME = libSnakeSDL.so
SRC = SnakeSDL.cpp
SRC2 = SnakeSDL.cpp main.cpp
CC = LD_LIBRARY_PATH=$$PWD/SDL2/lib g++ -Wall -Wextra -Werror std=c++11
FLAGS = -L SDL2/lib -lSDL2 -lSDL2main -lSDL2_ttf -lfreetype
all: $(NAME)
$(NAME): fclean
@ # $(CC) -o snake $(SRC2) -I ../ -I SDL2/include $(FLAGS)
@ $(CC) -o $(NAME) -shared -fPIC $(SRC) -I ../ -I SDL2/include $(FLAGS)
clean:
@rm -fr $(NAME)
fclean : clean
re: fclean all
Когда я запускаю make
, я получаю эту ошибку
/usr/bin/ld: SDL2/lib/libSDL2_ttf.a(SDL_ttf.c.o): relocation R_X86_64_PC32 against symbol `TTF_CloseFont' can not be used when making a shared object; recompile with -fPIC
/usr/bin/ld: final link failed: Bad value
collect2: error: ld returned 1 exit status
Makefile:25: recipe for target 'libSnakeSDL.so' failed
make: *** [libSnakeSDL.so] Error 1
кое-что выяснил, что может означать эта ошибка, и нашел что-то вроде You can't use fPIC on a library that doesn't support fpic
, но я пока не знаком с fpic и общими библиотеками. Как мне исправить эту проблему / ошибку?