Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

unexpected reloc type 0x03

I'm trying to execute a program compiled with my own library, but when i execute the program I get the following error:

./a.out 
./a.out: error while loading shared libraries: ../../lib-arm/libCustomLibrary.so: unexpected reloc type 0x03

That just happens with the Release execution, with the Debug execution all works fine.

Where do you think that may be the problem?

The CustomLibrary Library is linked with the following arguments:

-lSubLibrary -fPIC -Wl,-Bstatic -lboost_system -lboost_filesystem -lboost_thread -lpthread -Wl,-Bdynamic -lrt

I attatch the lld unix library command output for my library.

ldd ../../lib-arm/libCustomLibrary.so 
/usr/lib/arm-linux-gnueabihf/libcofi_rpi.so (0x76e5d000)
libSubLibrary.so => ../../lib-arm/libSubLibrary.so (0x76e2d000)
librt.so.1 => /lib/arm-linux-gnueabihf/librt.so.1 (0x76e10000)
libstdc++.so.6 => /usr/lib/arm-linux-gnueabihf/libstdc++.so.6 (0x76d3e000)
libm.so.6 => /lib/arm-linux-gnueabihf/libm.so.6 (0x76ccd000)
libgcc_s.so.1 => /lib/arm-linux-gnueabihf/libgcc_s.so.1 (0x76ca5000)
libc.so.6 => /lib/arm-linux-gnueabihf/libc.so.6 (0x76b75000)
libdl.so.2 => /lib/arm-linux-gnueabihf/libdl.so.2 (0x76b6a000)
libpthread.so.0 => /lib/arm-linux-gnueabihf/libpthread.so.0 (0x76b4b000)
/lib/ld-linux-armhf.so.3 (0x76f05000)
like image 854
Alejandro Rosas Avatar asked Nov 02 '15 09:11

Alejandro Rosas


1 Answers

From https://lists.linaro.org/pipermail/linaro-toolchain/2012-November/002939.html :

Relocation type 3 is R_ARM_REL32 which is a static relocation not allowed in shared objects. How did you create the shared lib? Make sure you compile all the code going into it with -fPIC.

In other words, you are using -fPIC when linking your program, but perhaps not when building your shared library.

like image 142
John Zwinck Avatar answered Sep 22 '22 13:09

John Zwinck