linux 64bit - cannot execute binary???
Hi
Have been trying to get some 64bit binaries to work on my machine; but seem to be having some issues when it comes to running them. The box is running slackware 13 with kernel 2.6.37, I've since re-compiled the kernel and enabled the following in addition to the smp kernels default configuration, as I have not been able to execute the 64 bit file. Processor Types and Features -> Processor family - selected "Core 2/newer Xeon" - was previously Pentium-4 / older Xeon -> High Memory Support - > changed from 4 gb to 64 gb (system has 8 gb of ram) Even after re-compiling, I still have not had any luck... Any ideas? processor : 0 vendor_id : GenuineIntel cpu family : 6 model : 15 model name : Intel(R) Xeon(R) CPU 5160 @ 3.00GHz stepping : 6 cpu MHz : 2992.252 cache size : 4096 KB fdiv_bug : no hlt_bug : no f00f_bug : no coma_bug : no fpu : yes fpu_exception : yes cpuid level : 10 wp : yes flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss tm pbe nx lm constant_tsc arch_perfmon pebs bts aperfmperf pni dtes64 monitor ds_cpl vmx est tm2 ssse3 cx16 xtpr pdcm dca lahf_lm dts tpr_shadow bogomips : 5984.50 clflush size : 64 cache_alignment : 64 address sizes : 36 bits physical, 48 bits virtual power management: # uname -a Linux dell1950 2.6.37.6-smp #4 SMP Wed Apr 11 00:02:22 EDT 2012 i686 Intel(R) Xeon(R) CPU 5160 @ 3.00GHz GenuineIntel GNU/Linux # file unrar unrar: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked (uses shared libs), stripped #./unrar -bash: ./unrar: cannot execute binary file # ls -al unrar -rwxr-xr-x 1 1000 1000 221192 Feb 17 10:05 unrar* thanks very much Jonathan |
Quote:
(I do not use Slackware, so if for some reason you're expecting that to work, do tell us why) |
Quote:
Quote:
Quote:
You can't run any 64 bit programs under a 32 bit kernel even though you have a 64 bit CPU. Quote:
My best guess is that the "linux 64bit" in your thread title is an error. You have an ordinary 32 bit Linux on a 64 bit CPU. To run 64 bit programs, you should reinstall Linux using a 64 bit Linux. |
Hey
All I can say is AH Crap! Your right and thanks for the responses, I honestly didn't know there was a "64 bit kernel", I had just gone to kernel.org and pulled down the latest 2.6.37 kernel, and thought that was all that was required. Once running the 64 bit kernel, and 64 bit modules, the 32 bit binaries should still run. Not looking to get flammed, but rather as a learning experience: So going forward, where would I find a 64 bit kernel; On http://www.kernel.org/pub/linux/kernel/v2.6/, I just see the regular kernels available. Based on that I assume the 64 bit compiler use different flags that compile into a 64 bit kernel? thanks Jonathan Quote:
|
Quote:
I have read one thread in which someone installed a 64 bit Kernel in a 32 bit Linux and got 64 bit programs to work, but it isn't supposed to be that simple. Inserting a 64 bit kernel into a 32 bit install of Linux is not supposed to be enough to get 64 bit programs working. Quote:
A 32 bit Linux could have gcc configured to build your choice of 32 bit or 64 bit, but typically gcc in 32 bit Linux is set up to build 32 bit only. If gcc can build 64 bit, then I'm sure an expert in building Linux kernels could compile a 64 bit kernel while running on a 32 bit Linux. But I don't come close to knowing how. |
Hey
Thanks, really appreciate the help! I think what I wanted to do with the source I downloaded was make ARCH=x86_64, or make ARCH=ia64 ... instead of just doing make =.=. At least you've got me pointed in the right direction! I think in the end your most likely right; reinstalling the OS is the most straight forward. Jonathan Quote:
|
Quote:
Keep that in mind if you continue trying to build the kernel yourself or if you get a binary distribution. Some distributions are available in ia64 binaries and those are not what you can use. AMD64 is the same as x86_64, so if you find an AMD64 distribution, that is perfectly compatible with your Intel CPU. IA64 is something entirely different. Intel's name for x86_64 is EM64T. Any of AMD64, EM64T and X86_64 describe the same architecture for an OS kernel. The name EM64T is very common in identifying the architecture of Windows binaries, but is rarely used in identifying the architecture of Linux binaries. |
All times are GMT -5. The time now is 01:42 PM. |