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