I have created a simple linux 32bit shared library(.so) for my rendering wrappers but i\'ve hit a wall when i figured that i can only use them through 32bit applications....
You can't do what you're asking. You must compile both the final executable and any libraries (both static and shared) for the same architecture.
On GCC, this can be done easily by passing the command line argument -m32
either directly in the command line or by adding it CCFLAGS
in your Makefile
.
While it is possible to run x86 code on a x86_64 operating system (you just need to have all the right libraries and their respective recursive dependencies), you cannot, in one executable or in one address space, combine x86 and x86_64 binaries.
You must be consistent. A 64-bit application can only use 64-bit libraries and a 32-bit application can only use 32-bit libraries. Both work; either choice is fine, and it's possible to compile the same code for both systems.
If you go for 'all 32-bit', use:
gcc -m32
If you go for 'all 64-bit', use:
gcc -m64
Sometimes, I'll tell make
that the C compiler is gcc -m32
(or -m64
) rather than just gcc
to ensure the right value is used everywhere.