Solaris 64-bit Developer's Guide

Appendix B Frequently Asked Questions (FAQs)

How can I tell if my system is running the 32-bit or the 64-bit version of the operating system?

You can determine what applications the operating system can run using the isainfo -v command. It displays the set of applications supported by the operating system. See the isainfo(1) man page for more information.

Can I run the 64-bit version of the operating system on 32-bit hardware?

No. It is not possible to run the 64-bit operating system on 32-bit hardware. The 64-bit operating system requires 64-bit MMU and CPU hardware.

Do I need to change my 32-bit application if I plan to run that application on a system with a 32-bit operating system?

No. Your application does not require changes or recompilation if it is being executed only on a system running the 32-bit operating system.

Do I need to change my 32-bit application if I plan to run that application on a system with the 64-bit operating system?

Most applications can remain 32-bit and still execute on a system running the 64-bit operating system without requiring code changes or recompilation. Those 32-bit applications not requiring 64-bit capabilities can remain 32-bit to maximize portability.

If your application uses libkvm(3LIB) , it must be recompiled as 64-bit, to execute on a system running the 64-bit operating system. If your application uses /proc, it might need to be recompiled as 64-bit; otherwise it cannot understand a 64-bit process. This is because the existing interfaces and data structures that describe the process are not large enough to contain the 64-bit quantities involved.

What program do I need to invoke in order to get the 64-bit capabilities?

No program is available that specifically invokes 64-bit capabilities. In order to take advantage of the 64-bit capabilities of your system running the 64-bit version of the operating system, you need to rebuild your application.

Can I build a 32-bit application on a system running the 64-bit operating system?

Yes. Both native and cross-compilation modes are supported. The default compilation mode is 32-bit, whether on a system running the 32-bit or 64-bit version of the operating system.

Can I build a 64-bit application on a system running the 32-bit operating system?

Yes, provided you have the system headers and 64–bit libraries installed. However, it is not possible to run the 64-bit application on a system running the 32-bit operating system.

Can I combine 32-bit libraries and 64-bit libraries when building and linking applications?

No. 32-bit applications must link with 32-bit libraries and 64-bit applications with 64-bit libraries. Attempts to build or link with the wrong version of a library will result in an error.

What are the sizes of floating point data types in the 64-bit implementation?

The only types that have changed are long and pointer. See Table 4–1.

What about time_t?

The time_t type remains a long quantity. In the 64-bit environment, this grows to a 64-bit quantity. Thus, 64-bit applications will be year 2038 safe.

What is the value of uname(1) on a machine running the 64-bit Solaris operating environment?

The output of the uname -p command is unchanged.

Can I create 64–bit XView or OLIT Applications?

No. These libraries are already obsolete for the 32–bit environment and will not be carried forward to the 64–bit environment.

Why is there a 64–bit version of ls in /usr/bin/sparcv9/ls?

In normal operation, there is no need for a 64–bit version of ls. However, since it is possible to create file system objects in /tmp and /proc that are “too large” for 32–bit ls to understand, the 64–bit version of ls allows users to examine those objects.