Hello, I am trying to port Bionic Libc on to Genode. At time,I'm struck with the following error that comes when i compiled the library.
/home/paramesh/genode-14.08/mybuild/var/libcache/bionic_libc_x86/bionic_libc_x86.lib.a(syscall.o): relocation R_X86_64_PC32 against undefined symbol `__set_errno' can not be used when making a shared object; recompile with -fPIC
From the above compilation error, I understood that *bionic_libc_x86.lib.a*
is not compiled with* -fPIC* flag enabled(which is needed for Position Independent code generation by compiler and that is what essentially needed in Shared LIb buiding(*bionic_libstdc++.lib.so*) that uses the above static library). So, i assigned *-fPIC* flag to compiler variable *CC_OPT* to resolve it, but it is not showing the effect.
So, can any one tell me how can I resolve it. Correct me if I'm wrong somewhere.
Hello Paramesh,
/home/paramesh/genode-14.08/mybuild/var/libcache/bionic_libc_x86/bionic_libc_x86.lib.a(syscall.o): relocation R_X86_64_PC32 against undefined symbol `__set_errno' can not be used when making a shared object; recompile with -fPIC
From the above compilation error, I understood that /bionic_libc_x86.lib.a/ is not compiled with/-fPIC/ flag enabled(which is needed for Position Independent code generation by compiler and that is what essentially needed in Shared LIb buiding(/bionic_libstdc++.lib.so/) that uses the above static library). So, i assigned /-fPIC/ flag to compiler variable /CC_OPT/ to resolve it, but it is not showing the effect.
So, can any one tell me how can I resolve it. Correct me if I'm wrong somewhere.
you should probably build your 'bionic_lib_x86' library as a shared object. To do that, add the following line to your 'bionic_lib_x86.mk' file:
SHARED_LIB = yes
For validating the command-line arguments passed to the compiler, you may append 'VERBOSE=' (without the quotes) to the make command when building. The -fPIC argument should be there.
Regards Norman