Проблемы со связью общих объектов и Fpic - PullRequest
0 голосов
/ 16 октября 2018

Я пишу некоторый код c для класса и у меня возникают проблемы с компилятором, который необходимо сделать в файле make, при запуске он всегда выдает ошибку

usr/bin/ld: main.o: relocation R_X86_64_32S against symbol "integrand" can not be used when making a shared object; recompile with -fPIC /usr/bin/ld: integration.o: relocation R_X86_64_32S against ".rodata" can not be used when making a shared object; recompile with -fPIC

Я пытался изменить make-файл несколькими способами, чтобы исправить эту ошибку в системе Linux, но, увы, это все еще безрезультатно.

all: main.o integration.o libintegration.so
    gcc -fPIC main.o integration.o libintegration.so -o target_bin
libintegration.so: main.o integration.o
    gcc main.o integration.o -shared -o libintegration.so
main.o: main.c integration.h
    gcc -I . -c main.c
integration.o: integration.c integration.h
    gcc -I . -c integration.c
clean:
    rm -rf *.o *.so
    rm target_bin

Спасибо за любую помощь, которую вы можете оказать

1 Ответ

0 голосов
/ 16 октября 2018

Скомпилируйте main.c иgration.c с помощью fpic.

...