26.11.2012 Views

Compiler Usage Guidelines for 64-Bit Operating Systems on AMD64 ...

Compiler Usage Guidelines for 64-Bit Operating Systems on AMD64 ...

Compiler Usage Guidelines for 64-Bit Operating Systems on AMD64 ...

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

<str<strong>on</strong>g>Compiler</str<strong>on</strong>g> <str<strong>on</strong>g>Usage</str<strong>on</strong>g> <str<strong>on</strong>g>Guidelines</str<strong>on</strong>g> <str<strong>on</strong>g>for</str<strong>on</strong>g> AMD<str<strong>on</strong>g>64</str<strong>on</strong>g> Plat<str<strong>on</strong>g>for</str<strong>on</strong>g>ms<br />

Enable excepti<strong>on</strong> handling with the appropriate /EH switch.<br />

4.7 Sun <str<strong>on</strong>g>Compiler</str<strong>on</strong>g>s (<str<strong>on</strong>g>64</str<strong>on</strong>g>-bit) <str<strong>on</strong>g>for</str<strong>on</strong>g> Solaris<br />

32035 Rev. 3.22 November 2007<br />

See secti<strong>on</strong> 4.13, “Sun <str<strong>on</strong>g>Compiler</str<strong>on</strong>g>s (32-bit) <str<strong>on</strong>g>for</str<strong>on</strong>g> Solaris”, <strong>on</strong> page 54 <str<strong>on</strong>g>for</str<strong>on</strong>g> the portability and<br />

troubleshooting issues with this compiler.<br />

4.8 GCC <str<strong>on</strong>g>Compiler</str<strong>on</strong>g>s (32-<str<strong>on</strong>g>Bit</str<strong>on</strong>g>) <str<strong>on</strong>g>for</str<strong>on</strong>g> Linux ®<br />

This secti<strong>on</strong> addresses errors and unexpected results that may be encountered when using 32-bit GNU<br />

<str<strong>on</strong>g>Compiler</str<strong>on</strong>g> Collecti<strong>on</strong> (GCC) compilers <str<strong>on</strong>g>for</str<strong>on</strong>g> Linux®.<br />

4.8.1 Compilati<strong>on</strong> Errors<br />

Do you need ANSI-compliant code?<br />

If a developer requires ANSI-compliant code in a program, the GCC compiler provides the -ansi<br />

switch to test the ANSI-compliance of the code in a program. To see gratuitous errors and warnings<br />

<str<strong>on</strong>g>for</str<strong>on</strong>g> the n<strong>on</strong>-ANSI parts of the program, the user should use the -pedantic switch. The user can then<br />

modify the program to be ANSI-compliant. The user can also use the -std switch to specify the<br />

required versi<strong>on</strong> of ISO C.<br />

GCC also provides the -Wall switch to show almost all warnings. This switch enables all the<br />

warnings about c<strong>on</strong>structi<strong>on</strong>s that some users c<strong>on</strong>sider questi<strong>on</strong>able.<br />

Users should note that -Wall is not sufficient to get all warnings from gcc. Warning switches that turn<br />

GCC into an effective 'lint' are: -Werror, -Wall, -W, -Wstrict-prototypes, -Wmissing-prototypes, -<br />

Wpointer-arith, -Wreturn-type, -Wcast-qual, -Wwrite-strings, -Wswitch, -Wshadow,<br />

-Wcast-align, -Wuninitialized, -Wbad-functi<strong>on</strong>-cast, -Wchar-subscripts, -Winline,<br />

-Wnested-externs, -Wredundant-decl, -ansi, -pedantic. For further details <strong>on</strong> these switches, refer<br />

to the GCC manual.<br />

4.8.2 Link-Time Errors<br />

Are you trying to link C and Fortran code?<br />

Compile the Fortran 77 code with the -fno-f2c switch. The -fno-f2c switch prevents the g77<br />

command from generating code designed to be compatible with code generated by the f2c command<br />

and uses the GNU calling c<strong>on</strong>venti<strong>on</strong>s instead.<br />

4.8.3 Run-Time Errors<br />

Is your code causing buffer overruns?<br />

Turn <strong>on</strong> the -fbounds-check switch. When the -fbounds-check switch is turned <strong>on</strong>, the GCC<br />

compiler generates additi<strong>on</strong>al code that checks whether the indices used to access arrays are or are not<br />

48 Troubleshooting and Portability Issues Chapter 4

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!