Ошибка привязки SDL g ++ при создании динамических разделяемых библиотек -fPIC - PullRequest
0 голосов
/ 03 июля 2019

У меня есть программа 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 и общими библиотеками. Как мне исправить эту проблему / ошибку?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...