digitalmars.D - linux 64/32
- Kevin Bealer (15/15) Feb 13 2006 I tried a bit ago to compile D programs on my computer, under Linux - wh...
- Sean Kelly (7/20) Feb 13 2006 Are you using a 32 or 64 bit kernel? Using an AMD-64 all by itself
- Kevin Bealer (14/34) Feb 13 2006 I'm using a 64 bit kernel, Linux Ubuntu. I tried this again with the la...
- Thomas Kuehne (19/57) Feb 13 2006 -----BEGIN PGP SIGNED MESSAGE-----
- John Demme (14/39) Feb 13 2006 A 64-bit Linux system should be able to run 32-bit binaries as long as i...
- Kevin Bealer (15/54) Feb 14 2006 Thanks; I tried this, but using -Xlinker, I get this:
I tried a bit ago to compile D programs on my computer, under Linux - which I upgraded to a 64 bit machine. This didn't work. I thought I could at least get a 32 bit executable, but it had linking errors. I was able to fix these, but each fix only revealed a further obstacle - I stopped when I got to pthreads, which I couldn't find a 32 bit version of (I suspect I could build one, but I have no idea what other libs I would be missing at that point.) I was surprised, when I tried under WinXP and it worked - I assumed this is because it doesn't do 64 bits yet? In any case, has anyone figured out how to build code on a 64 bit machine? If it's completely impossible for now, I'm okay with that, I just don't want to climb the mountain if there's nothing at the top. If noone knows, I can try again and report what I did and give more details. (P.S. the previous try was with a D compiler that was several versions back.) Thanks, Kevin
Feb 13 2006
Kevin Bealer wrote:I tried a bit ago to compile D programs on my computer, under Linux - which I upgraded to a 64 bit machine. This didn't work. I thought I could at least get a 32 bit executable, but it had linking errors. I was able to fix these, but each fix only revealed a further obstacle - I stopped when I got to pthreads, which I couldn't find a 32 bit version of (I suspect I could build one, but I have no idea what other libs I would be missing at that point.) I was surprised, when I tried under WinXP and it worked - I assumed this is because it doesn't do 64 bits yet? In any case, has anyone figured out how to build code on a 64 bit machine? If it's completely impossible for now, I'm okay with that, I just don't want to climb the mountain if there's nothing at the top.Are you using a 32 or 64 bit kernel? Using an AMD-64 all by itself should affect things--it's the OS that matters. I'm not sure about other changes, but the pthread stuff shouldn't be too difficult to fix, as that is all declared in std/thread.d--simply add "version(x86_64)" blocks where appropriate. Sean
Feb 13 2006
In article <dsr2jl$4n0$1 digitaldaemon.com>, Sean Kelly says...Kevin Bealer wrote:I'm using a 64 bit kernel, Linux Ubuntu. I tried this again with the latest version, and it had an error, but I can work around it. I don't think I could have just missed this before; I don't know if Ubuntu has upgraded their libraries, or D has changed, but somehow it works now: It seems like what I need to do to compile is: dmd -c hello.d gcc hello.o -o hi -lphobos -lpthread -lm -m32 I don't know how to specify the "-m32" to dmd - passing as a link flag doesn't seem to work, but I can build binaries again, hurrah! In any case, the last time I looked at this (a month or 3 ago), I spend many hours with libraries with no success (at that time). Thanks, KevinI tried a bit ago to compile D programs on my computer, under Linux - which I upgraded to a 64 bit machine. This didn't work. I thought I could at least get a 32 bit executable, but it had linking errors. I was able to fix these, but each fix only revealed a further obstacle - I stopped when I got to pthreads, which I couldn't find a 32 bit version of (I suspect I could build one, but I have no idea what other libs I would be missing at that point.) I was surprised, when I tried under WinXP and it worked - I assumed this is because it doesn't do 64 bits yet? In any case, has anyone figured out how to build code on a 64 bit machine? If it's completely impossible for now, I'm okay with that, I just don't want to climb the mountain if there's nothing at the top.Are you using a 32 or 64 bit kernel? Using an AMD-64 all by itself should affect things--it's the OS that matters. I'm not sure about other changes, but the pthread stuff shouldn't be too difficult to fix, as that is all declared in std/thread.d--simply add "version(x86_64)" blocks where appropriate. Sean
Feb 13 2006
-----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 Kevin Bealer schrieb am 2006-02-14:In article <dsr2jl$4n0$1 digitaldaemon.com>, Sean Kelly says...I am using dmd on AMD-64 with Gentoo with the following setup: 1) 32bit emulation libs: emul-linux-x86-baselibs-2.3 emul-linux-x86-compat-1.0 emul-linux-x86-glibc-1000 2) gcc wraper: /opt/dmd/bin/gcc gcc -m32 $* 3) changed path, so that dmd uses the gcc script PATH=/opt/dmd/bin/:$PATH dmd somesource.d Thomas -----BEGIN PGP SIGNATURE----- iD8DBQFD8YRS3w+/yD4P9tIRAux/AJ9vwsYt7KOSUYWq6myxbjtZh2+MyQCgizTe /0QGFARh7PzA1UqA23QDtM4= =1SZ0 -----END PGP SIGNATURE-----Kevin Bealer wrote:I'm using a 64 bit kernel, Linux Ubuntu. I tried this again with the latest version, and it had an error, but I can work around it. I don't think I could have just missed this before; I don't know if Ubuntu has upgraded their libraries, or D has changed, but somehow it works now: It seems like what I need to do to compile is: dmd -c hello.d gcc hello.o -o hi -lphobos -lpthread -lm -m32 I don't know how to specify the "-m32" to dmd - passing as a link flag doesn't seem to work, but I can build binaries again, hurrah! In any case, the last time I looked at this (a month or 3 ago), I spend many hours with libraries with no success (at that time). Thanks, KevinI tried a bit ago to compile D programs on my computer, under Linux - which I upgraded to a 64 bit machine. This didn't work. I thought I could at least get a 32 bit executable, but it had linking errors. I was able to fix these, but each fix only revealed a further obstacle - I stopped when I got to pthreads, which I couldn't find a 32 bit version of (I suspect I could build one, but I have no idea what other libs I would be missing at that point.) I was surprised, when I tried under WinXP and it worked - I assumed this is because it doesn't do 64 bits yet? In any case, has anyone figured out how to build code on a 64 bit machine? If it's completely impossible for now, I'm okay with that, I just don't want to climb the mountain if there's nothing at the top.Are you using a 32 or 64 bit kernel? Using an AMD-64 all by itself should affect things--it's the OS that matters. I'm not sure about other changes, but the pthread stuff shouldn't be too difficult to fix, as that is all declared in std/thread.d--simply add "version(x86_64)" blocks where appropriate. Sean
Feb 13 2006
A 64-bit Linux system should be able to run 32-bit binaries as long as it has the 32-bit versions of the libraries to link to (both the static libraries and dynamic). I'm not sure about Ubuntu, but I know Gentoo 64-bit provides 32-bit libraries. You should be able to send -m32 to the gcc linker using -L-m32 . You may also want to check out gdc. It may be able to generate 64-bit code, although I'm not sure. I don't have a 64-bit box (yet) so I'm not sure how much help that was, but in theory it should be possible. BTW, I think the reason there aren't any issues with Windows in because Windows doesn't use 64-bit anything, just 32. They may have upgraded since I last heard, however. ~John Demme Kevin Bealer wrote:I tried a bit ago to compile D programs on my computer, under Linux - which I upgraded to a 64 bit machine. This didn't work. I thought I could at least get a 32 bit executable, but it had linking errors. I was able to fix these, but each fix only revealed a further obstacle - I stopped when I got to pthreads, which I couldn't find a 32 bit version of (I suspect I could build one, but I have no idea what other libs I would be missing at that point.) I was surprised, when I tried under WinXP and it worked - I assumed this is because it doesn't do 64 bits yet? In any case, has anyone figured out how to build code on a 64 bit machine? If it's completely impossible for now, I'm okay with that, I just don't want to climb the mountain if there's nothing at the top. If noone knows, I can try again and report what I did and give more details. (P.S. the previous try was with a D compiler that was several versions back.) Thanks, Kevin
Feb 13 2006
Thanks; I tried this, but using -Xlinker, I get this: /usr/bin/ld: unrecognised emulation mode: 32 Supported emulations: elf_i386 i386linux collect2: ld returned 1 exit status It seems like "-m32" needs to go to the compiler phase, even when just linking the code. I don't know exactly why, though. Maybe there is glue code *between* the library and application that needs to be 32 or 64. It might be simple for dmd to automatically provide the -m32 option, but of course the user will need all the 32 bit versions of things too (which I have, but which will not be standard on most 64 bit systems I think). In any case, it all works for me now. BTW, Walter, great idea on the -run option, I've always thought D was only inches from being a great scripting language. Kevin In article <dsrmje$m91$1 digitaldaemon.com>, John Demme says...A 64-bit Linux system should be able to run 32-bit binaries as long as it has the 32-bit versions of the libraries to link to (both the static libraries and dynamic). I'm not sure about Ubuntu, but I know Gentoo 64-bit provides 32-bit libraries. You should be able to send -m32 to the gcc linker using -L-m32 . You may also want to check out gdc. It may be able to generate 64-bit code, although I'm not sure. I don't have a 64-bit box (yet) so I'm not sure how much help that was, but in theory it should be possible. BTW, I think the reason there aren't any issues with Windows in because Windows doesn't use 64-bit anything, just 32. They may have upgraded since I last heard, however. ~John Demme Kevin Bealer wrote:I tried a bit ago to compile D programs on my computer, under Linux - which I upgraded to a 64 bit machine. This didn't work. I thought I could at least get a 32 bit executable, but it had linking errors. I was able to fix these, but each fix only revealed a further obstacle - I stopped when I got to pthreads, which I couldn't find a 32 bit version of (I suspect I could build one, but I have no idea what other libs I would be missing at that point.) I was surprised, when I tried under WinXP and it worked - I assumed this is because it doesn't do 64 bits yet? In any case, has anyone figured out how to build code on a 64 bit machine? If it's completely impossible for now, I'm okay with that, I just don't want to climb the mountain if there's nothing at the top. If noone knows, I can try again and report what I did and give more details. (P.S. the previous try was with a D compiler that was several versions back.) Thanks, Kevin
Feb 14 2006