How to Solve: Recompile with -fPIE Error?

I tried to compile the code with a makefile but this is the error that the terminal shows to me:

rm -f test/bst_is_not_empty
rm -f test/ht_sepchain_is_not_empty
rm -f *.o test/*.o
cc -Wall -Wextra -std=c11 -pedantic -g -I./include   -c -o test/bst_is_not_empty. test/bst_is_not_empty.c
cc -Wall -Wextra -std=c11 -pedantic -g -I./include   -c -o exam.o exam.c
cc -L./lib  test/bst_is_not_empty.o exam.o  -lm -lupoalglib -o test/bst_is_not_empty
/usr/bin/ld: ./lib/libupoalglib.a(test.o): relocation R_X86_64_32 against `.rodata' can not be used when making a PIE object; recompile with -fPIE
/usr/bin/ld: ./lib/libupoalglib.a(bst.o): relocation R_X86_64_32 against `.rodata' can not be used when making a PIE object; recompile with -fPIE
collect2: error: ld returned 1 exit status
make: *** [<builtin>: test/bst_is_not_empty] Error 1

This is the makefile:

CFLAGS += -Wall -Wextra -std=c11 -pedantic
CFLAGS += -g
CFLAGS += -I./include
LDFLAGS += -L./lib
LDLIBS += -lm -lupoalglib


.PHONY: all clean

all: test/bst_is_not_empty test/ht_sepchain_is_not_empty

test/bst_is_not_empty: test/bst_is_not_empty.o exam.o

test/ht_sepchain_is_not_empty: test/ht_sepchain_is_not_empty.o exam.o

clean:
    $(RM) test/bst_is_not_empty
    $(RM) test/ht_sepchain_is_not_empty
    $(RM) *.o test/*.o

The makefile, and all source/header files were provided by my professor (is a test example, so...) I tried to figure out how to solve this issue but I'm still confused about this error

2

1 Answer

Try recompile ./lib/libupoalglib.a with -fPIC

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Sarah Jenkins

Sarah Jenkins

Senior Technology Editor & AI Specialist

Sarah Jenkins is a veteran tech journalist with over 12 years of experience covering artificial intelligence, mobile innovations, and digital ethics. Her insights have appeared in leading technology publications worldwide.

Share this article
Twitter Facebook Pinterest