|
|
(10 intermediate revisions by 6 users not shown) |
Line 1: |
Line 1: |
| == Specific Platforms==
| | {{CMake/Template/Moved}} |
|
| |
|
| === Linux ===
| | This page has moved [https://gitlab.kitware.com/cmake/community/wikis/doc/cmake/Platform-Dependent-Issues here]. |
| * [[CMake IA64 Issues|IA64 Issues]]
| |
| | |
| === Mac OSX ===
| |
| * [[CMake:Bundles And Frameworks|Bundles and Frameworks]]
| |
| * http://www.kernelthread.com/mac/apme/optimizations/
| |
| * http://0xfe.blogspot.com/2006/03/how-os-x-executes-applications.html
| |
| | |
| === Windows ===
| |
| * [[CMake Borland Compiler Issues|Borland Compiler Issues]]
| |
| | |
| * [[CMake MinGW Compiler Issues|MinGW Compiler Issues]]
| |
| | |
| * [[CMake Wacom Compiler Issues|Wacom Compiler Issues]]
| |
| | |
| == OS Specific Programs ==
| |
| | |
| {| border="1"
| |
| |- bgcolor="#abcdef"
| |
| ! Platform !! System Info !! OS Distribution Version
| |
| |-
| |
| | Linux || uname -a ||
| |
| |-
| |
| | HP-UX || uname -a ||
| |
| |-
| |
| | AIX || uname -a ||
| |
| |-
| |
| | SunOS || uname -a ||
| |
| |-
| |
| | IRIX || hinv, uname -a ||
| |
| |-
| |
| | Max OSX / Darwin || system_profiler, uname -a || About This Mac, /usr/bin/sw_ver
| |
| |-
| |
| | Cygwin || uname -a ||
| |
| |-
| |
| |rowspan=3| Windows || ver || ver
| |
| |}
| |
| | |
| | |
| == The Platforms / Compilers Table ==
| |
| | |
| {| border="1"
| |
| |- bgcolor="#abcdef"
| |
| ! Platform !! Compilers !! Macros !! List Dependencies !! List Symbols !! Trace Syscal/Signal !! Runtime Library Path
| |
| |-
| |
| | Linux || gcc, g++, icc || __linux || ldd program || nm || strace || LD_LIBRARY_PATH
| |
| |-
| |
| | HP-UX || cc, [http://docs.hp.com/en/B3901-90019/index.html aCC] || __hpux || chatr program || nm || || SHLIB_PATH (32), LD_LIBRARY_PATH (64)
| |
| |-
| |
| | AIX || xlc, xlC || _AIX || dump -H program || nm || || LIBPATH
| |
| |-
| |
| | SunOS || cc, CC || __sparc || ldd program || nm || || LD_LIBRARY_PATH (32), LD_LIBRARY_PATH_64 (64)
| |
| |-
| |
| | IRIX || cc, CC || __sgi || ldd program || || || LD_LIBRARY_PATH (o32), LD_LIBRARYN32_PATH (n32), LD_LIBRARY64_PATH (64)
| |
| |-
| |
| | Max OSX / Darwin || gcc, g++ || __APPLE__ || otool -L program || nm || ktrace -f outfile program; kdump outfile || DYLD_LIBRARY_PATH
| |
| |-
| |
| | Cygwin || gcc, g++ || __CYGWIN__, _WIN32 || depends program.exe || nm || || PATH
| |
| |-
| |
| |rowspan=3| Windows || Visual Studio 6, cl ||rowspan=3| _WIN32 || depends program.exe ||rowspan=3| dumpbin ||rowspan=3| ||rowspan=3| PATH
| |
| |-
| |
| |Visual Studio 7, cl || depends program.exe '''†'''
| |
| |-
| |
| |Visual Studio 7.1, cl || depends program.exe '''†'''
| |
| |}
| |
| | |
| * '''†''' In order for ''depends'' to be installed, the "Win32 Platform SDK Tool" needs to be selected when installing Visual Studio (See [http://msdn.microsoft.com/library/default.asp?url=/library/en-us/vccore/html/vccondeterminingwhichdllstoredistribute.asp Determining Which DLLs to Redistribute]).
| |
| | |
| This is a useful reference for predefined macros: http://predef.sourceforge.net/precomp.html
| |
| | |
| ==Architecture Modes==
| |
| | |
| {| border="1"
| |
| |- bgcolor="#abcdef"
| |
| ! Compiler !! Command !! Languages !! Architecture Flags !!colspan=2| Macros
| |
| |-
| |
| |rowspan=2| GNU || gcc || C || || ||rowspan=2| __GNUC__, __GNUC_MINOR__, __GNUC_PATCHLEVEL__
| |
| |-
| |
| | g++ || C++ || ||
| |
| |-
| |
| |rowspan=2| SGI MIPSpro || cc || C ||rowspan=2| -o32, -n32, -64 || ||rowspan=2| _COMPILER_VERSION, _MIPS_SIM==_ABIO32 (o32), _MIPS_SIM==_ABIN32 (n32), _MIPS_SIM==_ABI64 (64)
| |
| |-
| |
| | CC || C++ ||
| |
| |-
| |
| |rowspan=2| SunPro || cc || C ||rowspan=2| -xarch=... || __SUNPRO_C ||rowspan=2| #include <sys/isa_defs.h>: _ILP32 (32), _LP64 (64)
| |
| |-
| |
| | CC || C++ || __SUNPRO_CC
| |
| |-
| |
| |rowspan=2| HP || cc || C ||rowspan=2| +DD64 || ||rowspan=2| __LP64__ (64)
| |
| |-
| |
| | aCC || C++ || __HP_aCC
| |
| |-
| |
| |rowspan=2| IBM VisualAge || xlc || C ||rowspan=2| -q32, -q64 || __IBMC__ ||
| |
| |-
| |
| | xlC || C++ || __IBMCPP__ ||
| |
| |}
| |
| | |
| ==Compiler Options and Flags==
| |
| | |
| {| border="1"
| |
| |- bgcolor="#abcdef"
| |
| ! Compiler !! Full Warnings !! No Warnings !! Warnings as Errors !! Suppress Warning #n !! Warning #n as Error
| |
| |-
| |
| | gcc || -W -Wall || -w || -Werror || -Wno-<warning-name> ||
| |
| |-
| |
| | MIPS Pro || -fullwarn || -w or -woffall or -woff all || -w2 || -woff (#n)[,n0..n1,...] or -diag_suppress (#n)[,n0..n1,...] || -diag_error (#n)[,n0..n1,...]
| |
| |-
| |
| | icc || -Wall -w2 -Wcheck || -w || -Werror || -wd(#n)[,arg2,..argn] || -we(#n)[,arg2,..argn]
| |
| |-
| |
| | bcc32 || -w+ || -w- || -g1 || -w-(#n) ||
| |
| |-
| |
| | xlc || -qlanglv=ansi or -qflag=w:w || -w or -qflag=e:e || -qhalt=w || -qsuppress=(#n)[:arg2:..argn] ||
| |
| |-
| |
| | xlC || -qlanglv=ansi or -qflag=w:w || -w or -qflag=e:e || -qhalt=w || -qsuppress=(#n)[:arg2:..argn] || -qhaltonmsg=(#n)[,arg2,..argn]
| |
| |-
| |
| | VS6: cl || /W4 || /w || /WX || ||
| |
| |-
| |
| | VS7-8: cl || /Wall /Wp64 || /w || /WX || /wd(#n) || /we(#n)
| |
| |-
| |
| | HP cc || +w1 || -w or +w3 || || +W (#n)[,arg2,..argn] || +We (#n)[,arg2,..argn]
| |
| |-
| |
| | HP aCC || +w || -w || || +W(#n)[,arg2,..argn] || +We(#n)[,arg2,..argn]
| |
| |-
| |
| | wcl386 || -wx || -w=0 || -we || -wcd=(#n) || -wce=(#n)
| |
| |}
| |
| | |
| * More platform specific information can be found in [http://bhami.com/rosetta.html ROSETTA STONE] platforms table (Mostly for system administrators)
| |
| | |
| * Another even more complete table: [http://www.fortran-2000.com/ArnaudRecipes/sharedlib.html Using static and shared libraries across platforms] (For various compiler flags and options)
| |
| | |
| == Debugging Tips ==
| |
| | |
| === Using special debug libraries on various systems===
| |
| {| border="1"
| |
| |- bgcolor="#abcdef"
| |
| ! Platform !! Operation
| |
| |-
| |
| | Debian GNU/Linux || export LD_LIBRARY_PATH=/usr/lib/debug
| |
| |-
| |
| | Mac OS X || export DYLD_IMAGE_SUFFIX=_debug
| |
| |}
| |
| | |
| === The gdbrun Script for UNIX-like Platforms ===
| |
| | |
| The following is an extremely useful script that will run any command line in a gdb debugger. Put this text in an executable file called "gdbrun":
| |
| | |
| <pre><nowiki>
| |
| #!/bin/sh
| |
| | |
| extra_text=""
| |
| if [ "$1" == "--break-main" ]; then
| |
| extra_text="break main"
| |
| shift
| |
| fi
| |
| | |
| EXEC="$1"
| |
| | |
| shift
| |
| | |
| run_text="run"
| |
| for a in "$@"; do
| |
| run_text="${run_text} \"$a\""
| |
| done
| |
| | |
| TMPFILE=/tmp/gdbrun.$$.$#.tmp
| |
| cat > ${TMPFILE} <<EOF
| |
| ${extra_text}
| |
| ${run_text}
| |
| EOF
| |
| | |
| gdb -x ${TMPFILE} "${EXEC}"
| |
| rm -f "${TMPFILE}"
| |
| | |
| </nowiki></pre>
| |
| | |
| Then one may debug a test like this:
| |
| | |
| <pre><nowiki>
| |
| gdbrun /path/to/myexe --some-arg --some-other-arg
| |
| </nowiki></pre>
| |
| | |
| Notes about this script:
| |
| * It supports spaces in argument names (note the for loop)
| |
| * Takes extra argument --break-main, which causes the program to stop once all the libraries are loaded
| |
| * It always run debugger, even when program exits normally
| |
| * Cannot be used with MPI or any other system that runs your program from a shell script
| |
| | |
| {{CMake/Template/Footer}}
| |