Problem when import C model
Nick Craig-Wood
nick at craig-wood.com
Mon Jul 3 10:30:03 EDT 2006
cmdrrickhunter at yaho.com <conrad.ammon at gmail.com> wrote:
> What you describe makes perfect sense to me. If python is a 64 bit
> program, it can only link to 64 bit libraries. If you compiled your
> library in 32-bit mode, then the library headers will indicate this,
> and linux's library loading code will ignore it when loading libraries
> for 64-bit programs.
32 bit and 64 bit are completely different architectures - you can't
mix and match them in one executable.
The python solution is to use distutils and build a setup.py then you
can compile for each platform easily.
> I think there' might be a trick that lets you compile ELF files
> with both 64-bit and 32-bit code, but actually doing so is outside
> of my expertise.
I don't think so.
You can choose which you compile with. On 32 bit you'll compile 32
bit by default. If you want 64 bit choose -m64, eg
echo <<'#END' >z.c
#include <stdio.h>
int main(void)
{
printf("Hello\n");
return 0;
}
#END
gcc -c -m32 -o z32.o z.c
gcc -c -m64 -o z64.o z.c
file z*.o
gives
z32.o: ELF 32-bit LSB relocatable, Intel 80386, version 1 (SYSV), not stripped
z64.o: ELF 64-bit LSB relocatable, AMD x86-64, version 1 (SYSV), not stripped
--
Nick Craig-Wood <nick at craig-wood.com> -- http://www.craig-wood.com/nick
More information about the Python-list
mailing list