Running 64-bit Windows and Linux in 32-bit mode - operating-system

I need to test my C code for 32- and 64-bit versions of Windows (XP and 7) and Linux. But I have got access only to their 64-bit installations.
Question: Is it possible to use some boot-time settings or other hacks to run/emulate these OSes in 32-bit mode? If not, is there any other way to test the portability of my C code?
Note: The C code in question is not a full-fledged application but rather a .dll/.so file.

Neither Linux nor Windows 64Bit can run as 32Bit OS. Also, while you can run 32Bit executables on the 64Bit OS, it is not quite the same as running the same under a 32Bit OS. But it might work as a quick screening test. Besides, you certainly want that to work as well, right?
Your choices are full multi-boot setup, using VMs (might hide/expose bugs), being content with the emulation layer or running the other OS's on different hardware.
BTW: If you have Windows 64Bit, the license allows you to run 32Bit instead and vice versa. Anyway, you might want to check different language versions as well...

Related

Is running a Windows on mac the same or very close to running windows traditionally?

It's been my understanding the OS sits on top of the hardware. Is it more or less the same to run windows from a macbook? When installing SQL on a windows partition, does this install similar to an all Windows setup?
I've heard the kernel is the main connector between hardware and basic OS, so would the mac kernel cause potential differences in operation?
Would installing the linux OS also adhere to these rules?
Thanks, and sorry for the simple question.
Generally, you are correct to say that, installing different operating systems on the same hardware would be the same. You will be able to both install Windows and Linux on the same laptop (whether that would be an Asus brand laptop, or HP, or whatever). Once you install an OS on some hardware, and the OS is able to recognize the hardware, and is able to utilize it, then you are in the clear. What's important is to install on OS that is compatible with the architecture of the computer. So if you get a Linux distro that supports x86 architecture, then you would have to install it on hardware that is with a x86 architecture.
Side note: Modern OS's are very smart and they have a wide range of architecture support (list of Linux architecture support, Windows support for ARM, Apple also has a wide range of architecture support).
Since you are asking about a macbook and Windows, then the short answer is: there won't be a problem for you to install Windows on your mac. Apple even gives you Boot Camp to easily do this (there are also quite a bit of recent tutorials on this topic as well).
So the end experience would be almost the same as having Windows on any other machine.
I've heard the kernel is the main connector between hardware and basic OS, so would the mac kernel cause potential differences in operation?
This is true. The kernel is the heart of any OS, but once you have your Windows running, it would be using its own heart and it won't touch the mac kernel. So if you remove your macOS and install only Windows, then only the Windows kernel would be taking control of the Mac hardware. But if you load your macOS, then the Mac kernel would be running and operating on the hardware.
Will Windows run faster on Mac hardware than macOS on its hardware? It's debatable and I would assume not a lot of studies have been made in that sphere. But, at least, it will run.
But what about dual-booting your macbook with Linux? Technically, it is possible (and the principle is the same), but Apple have made restrictions to their firmware, limiting the option of having both a macOS and a Linux distro at the same time. What's so different here than the case with Windows? Well mainly that the firmware of the macbook (the software embedded in the hardware of the laptop) doesn't allow for Linux to be installed. Maybe things have changed, but these are the (not so recent anymore) news I know about (I guess there are still ways of installing Linux on mac hardware).

How to compile c/cpp code for target Solaris 64bit SPARC from linux/windows

I want to compile a customized Apache module for OHS on Solaris 64bit SPARC machine. It is a Apache C code. But what I have is only Windows machine and Linux VMs. Can this achieved using Oracle developer studio IDE. Or is there any other way? Please help
You can use QEMU and run a SPARC virtual machine under emulation:
Status
The table below gives the status of the SPARC machines available in
QEMU and is correct as of the latest release:
Machine Status
sun4m Complete, supported
sun4u Beta, supported
sun4v Incomplete, unsupported
niagara Complete, supported
Pay particular attention to the exact architecture you need to compile for. You should be able to run Oracle Developer Studio on the emulated system. You may have to use an older SPARC architecture to generate binaries runnable on your target systems. For example, you might want to use something like -xarch=sparcv9.
Note that the emulated system will be S-L-O-W. Large compiles can take hours or even days. You should probably develop your Solaris-specific code on an x86 VM, and only do the final SPARC compile on the emulated system. Just be aware that you can get away with strict aliasing and alignment violations on x86 systems that will throw a SIGBUS on SPARC systems.

I've heard that Smalltalk is also an OS. How can I install Smalltalk on my X86 instead of Linux or windows?

I've heard that Smalltalk is also an OS.
How can I install Smalltalk on my X86 instead of Linux or windows?
What are the steps to do that?
Any tutorials on installing Smalltalk on a bare-metal machine ?
I don't know if there is a standalone smalltalk environment, but you can try squeak, which runs above your os (linux, windows or mac). Not just an os but a complete working environment.
There was a project called SqueakNOS. That was the only post-PARC experiment to use Smalltalk directly loaded over the hardware, with no other operating system. It had even a version to work on an OLPC.
I don't know if currently someone follows that development, but it's very interesting and an excellent place to learn about hardware, in human-readable (but executable) terms. You can see and debug how a device driver works, for instance.
Smalltalk Virtual Machine is handling memory allocation, access to file systems, network connections, process (green thread)...
So viewed from Smalltalk world, it is very similar to an OS.
But how to implement the virtual machine without an underlying OS?
There is a project SqueakNOS and a fork PharoNOS meaning No Operating System, whose goal is to completely bypass the OS, and have Squeak/Pharo running on bare hardware.
So yes, it's possible.
But what you'll get with this is still a Smalltalk world, maybe not what you expect from a linux or windows distribution...

OS-Specific Applications

I just want know why some games are only Windows-based and won't run on other OSs like Mac OS X and Linux. What makes them different, and how does the program know that the OS is Windows, Linux, or Mac?
Also, similarly, why won't a Windows 7 32-bit driver work on 64-bit and vice versa?
Besides how Mac and Linux use a different executable type (they use Mach-O and ELF, as far as I've seen) than Windows (PE), if the executable loader was able to parse everything and load it into memory, many things can go wrong. Library calls, such as printf(3) rely on underlying system calls, which calls the kernel of the OS. In the case of printf(3), it calls fstat(2), sbrk(2) and write(2). (Note that this is the case under the newlib library; I am unsure about the other standard C libraries.) As far as you know, the system call interface for Windows can be very different from the one Linux uses, and Windows may even be missing a few system calls that Linux has (like fork(2))

Compiled perl executable fails to run on Windows 7 (64 bit)

I have created an executable (.exe) of a perl script on a 64-bit linux kernel. It executes correctly in this environment.
When the executable is run in 64-bit Windows 7, the following error message is displayed:
The version of this file is not compatible with the version of Windows
you're running. Check your computer's system information to see
whether you need x86 (32-bit) or x64 (64-bit) version of the program,
and then contact the software publisher.
Given that the source and destination OS's were both 64-bit, I'm not sure that the architecture of the build is the issue. Are there any special considerations to make a compiled perl program execute properly in Windows? Thank you.
Executable files are not compatible across platforms. They will run on the original platform only unless they are explicitly cross-compiled to a different target. That's actually the reason we use interpreted languages. What you want to do is not possible because the Windows and Linux APIs, libraries, and well just about everything are completely different.
This is why you need to download a different version of a program for linux/windows/mac.