Free Pascal Compiler(FPC) dapat didownload dengan bebas pada situs https://www.freepascal.org terdapat beberapa package binary klo males compile sendiri baik untuk windows, linux, dan mac.
Saya sarankan untuk menggunakan versi stable jika tidak ada keperluan khusus, untuk menghindari permasalahan yang tidak perlu terjadi hehe.
Install
Sama dengan dokument sebelumnya bagian install di pisah per OS.
Linux
Pada Artix linux FPC sudah tersedia di repo jadi tinggal install menggunakan pacman atau yay.
$ pacman -S fpc
Windows
Download package yang sesuai baik OS dan Arch nya, misal untuk windows 7 keatas dan cpu menggunakan AMD64 (intel atau amd yang bertulisan x64) ada pada alamat dibawah initial
$ fpc
Free Pascal Compiler version 3.2.0 [2020/10/05]for x86_64
Copyright (c)1993-2020 by Florian Klaempfl and others
/usr/bin/fpc [options] <inputfile> [options]
Only options valid for the default or selected platform are listed.
Put + after a boolean switch option to enable it, - to disable it.
@<x> Read compiler options from <x> in addition to the default fpc.cfg
-a The compiler does not delete the generated assembler file
-a5 Don't generate Big Obj COFF files for GNU Binutils older than 2.25 (Windows, NativeNT) -al List sourcecode lines in assembler file -an List node info in assembler file (-dEXTDEBUG compiler) -ao Add an extra option to external assembler call (ignored for internal) -ap Use pipes instead of creating temporary assembler files -ar List register allocation/release info in assembler file -at List temp allocation/release info in assembler file -A<x> Output format: -Adefault Use default assembler -Aas Assemble using GNU AS -Agas Assemble using GNU GAS -Agas-darwin Assemble darwin Mach-O64 using GNU GAS*** press enter *** -Amasm Win64 object file using ml64 (Microsoft) -Apecoff PE-COFF (Win64) using internal writer -Aelf ELF (Linux-64bit) using internal writer -Ayasm Assemble using Yasm (experimental) -Anasm Assemble using Nasm (experimental) -Anasmwin64 Assemble Win64 object file using Nasm (experimental) -Anasmelf Assemble Linux-64bit object file using Nasm (experimental) -Anasmdarwin Assemble darwin macho64 object file using Nasm (experimental) -b Generate browser info -bl Generate local symbol info -B Build all modules -C<x> Code generation options: -C3 Turn on ieee error checking for constants -Ca<x> Select ABI; see fpc -i or fpc -ia for possible values -Cb Generate code for a big-endian variant of the target architecture -Cc<x> Set default calling convention to <x> -CD Create also dynamic library (not supported) -Ce Compilation with emulated floating point opcodes -Cf<x> Select fpu instruction set to use; see fpc -i or fpc -if for possible values*** press enter *** -CF<x> Minimal floating point constant precision (default, 32, 64) -Cg Generate PIC code -Ch<n>[,m] <n> bytes min heap size (between 1023 and 67107840) and optionally [m] max heap size -Ci IO-checking -Cn Omit linking stage -Co Check overflow of integer operations -CO Check for possible overflow of integer operations -Cp<x> Select instruction set; see fpc -i or fpc -ic for possible values -CP<x>=<y> packing settings -CPPACKSET=<y> <y> set allocation: 0, 1 or DEFAULT or NORMAL, 2, 4 and 8 -CPPACKENUM=<y> <y> enum packing: 0, 1, 2 and 4 or DEFAULT or NORMAL -CPPACKRECORD=<y> <y> record packing: 0 or DEFAULT or NORMAL, 1, 2, 4, 8, 16 and 32 -Cr Range checking -CR Verify object method call validity -Cs<n> Set stack checking size to <n> -Ct Stack checking (for testing only, see manual) -CT<x> Target-specific code generation options*** press enter *** -CTcld Emit a CLD instruction before using the x86 string instructions -CX Create also smartlinked library -d<x> Defines the symbol <x> -D Generate a DEF file -Dd<x> Set description to <x> -Dv<x> Set DLL version to <x> -e<x> Set path to executable -E Same as -Cn -fPIC Same as -Cg -F<x> Set file names and paths: -Fa<x>[,y] (for a program) load units <x> and [y] before uses is parsed -Fc<x> Set input codepage to <x> -FC<x> Set RC compiler binary name to <x> -Fd Disable the compiler's internal directory cache
-FD<x> Set the directory where to search for compiler utilities
-Fe<x> Redirect error output to <x>
-Ff<x> Add <x> to framework path (Darwin only)
-FE<x> Set exe/unit output path to <x>
-Fi<x> Add <x> to include path
-Fl<x> Add <x> to library path
-FL<x> Use <x> as dynamic linker
*** press enter ***
-Fm<x> Load unicode conversion table from <x>.txt in the compiler dir
-FM<x> Set the directory where to search for unicode binary files
-FN<x> Add <x> to list of default unit scopes (namespaces)
-Fo<x> Add <x> to object path
-Fr<x> Load error message file <x>
-FR<x> Set resource (.res) linker to <x>
-Fu<x> Add <x> to unit path
-FU<x> Set unit output path to <x>, overrides -FE
-FW<x> Store generated whole-program optimization feedback in <x>
-Fw<x> Load previously stored whole-program optimization feedback from <x>
-g Generate debug information (default format for target)
-gc Generate checks for pointers (experimental, only available on some targets, might generate false positive)
-gh Use heaptrace unit (for memory leak/corruption debugging)
-gl Use line info unit (show more info with backtraces)
-gm Generate Microsoft CodeView debug information (experimental)
-go<x> Set debug information options
-godwarfsets Enable DWARF 'set'type debug information (breaks gdb < 6.5)
-gostabsabsincludes Store absolute/full include file paths in Stabs
*** press enter ***
-godwarfmethodclassprefix Prefix method names in DWARF with class name
-godwarfcpp Simulate C++ debug information in DWARF
-godwarfomflinnum Generate line number information in OMF LINNUM records in MS LINK format in addition to the DWARF debug information (Open Watcom Debugger/Linker compatibility)
-gp Preserve casein stabs symbol names
-gs Generate Stabs debug information
-gt Trash local variables (to detect uninitialized uses; multiple 't' changes the trashing value)
-gv Generates programs traceable with Valgrind
-gw Generate DWARFv2 debug information (same as -gw2)
-gw2 Generate DWARFv2 debug information
-gw3 Generate DWARFv3 debug information
-gw4 Generate DWARFv4 debug information (experimental)
-i Information
-iD Return compiler date
-iSO Return compiler OS
-iSP Return compiler host processor
-iTO Return target OS
-iTP Return target processor
-iV Return short compiler version
*** press enter ***
-iW Return full compiler version
-ia Return list of supported ABI targets
-ic Return list of supported CPU instruction sets
-if Return list of supported FPU instruction sets
-ii Return list of supported inline assembler modes
-io Return list of supported optimizations
-ir Return list of recognized compiler and RTL features
-it Return list of supported targets
-iu Return list of supported microcontroller types
-iw Return list of supported whole program optimizations
-I<x> Add <x> to include path
-k<x> Pass <x> to the linker
-l Write logo
-M<x> Set language mode to <x>
-Mfpc Free Pascal dialect (default)
-Mobjfpc FPC mode with Object Pascal support
-Mdelphi Delphi 7 compatibility mode
-Mtp TP/BP 7.0 compatibility mode
-Mmacpas Macintosh Pascal dialects compatibility mode
-Miso ISO 7185 mode
-Mextendedpascal ISO 10206 mode
-Mdelphiunicode Delphi 2009 and later compatibility mode
*** press enter ***
-n Do not read the default config files
-o<x> Change the name of the executable produced to <x>
-O<x> Optimizations:
-O- Disable optimizations
-O1 Level 1 optimizations (quick and debugger friendly)
-O2 Level 2 optimizations (-O1 + quick optimizations)
-O3 Level 3 optimizations (-O2 + slow optimizations)
-O4 Level 4 optimizations (-O3 + optimizations which might have unexpected side effects)
-Oa<x>=<y> Set alignment
-Oo[NO]<x> Enable or disable optimizations; see fpc -i or fpc -io for possible values
-Op<x> Set target cpu for optimizing; see fpc -i or fpc -ic for possible values
-OW<x> Generate whole-program optimization feedback for optimization <x>; see fpc -i or fpc -iw for possible values
-Ow<x> Perform whole-program optimization <x>; see fpc -i or fpc -iw for possible values
-Os Optimize for size rather than speed
-pg Generate profile code for gprof (defines FPC_PROFILE)
-P<x> Target CPU / compiler related options:
-PB Show default compiler binary
*** press enter ***
-PP Show default target cpu
-P<x> Set target CPU (aarch64,arm,avr,i386,i8086,jvm,m68k,mips,mipsel,powerpc,powerpc64,sparc,x86_64)
-R<x> Assembler reading style:
-Rdefault Use default assembler for target
-Ratt Read AT&T style assembler
-Rintel Read Intel style assembler
-S<x> Syntax options:
-S2 Same as -Mobjfpc
-Sc Support operators like C (*=,+=,/= and -=)
-Sa Turn on assertions
-Sd Same as -Mdelphi
-Se<x> Error options. <x> is a combination of the following:
<n> : Compiler halts after the <n> errors (default is 1)
w : Compiler also halts after warnings
n : Compiler also halts after notes
h : Compiler also halts after hints
-Sf Enable certain features in compiler and RTL; see fpc -i or fpc -ir for possible values)
-Sg Enable LABEL and GOTO (default in -Mtp and -Mdelphi)
-Sh Use reference counted strings (ansistring by default) instead of shortstrings
*** press enter ***
-Si Turn on inlining of procedures/functions declared as "inline"
-Sj Allows typed constants to be writeable (default in all modes)
-Sk Load fpcylix unit
-SI<x> Set interface style to <x>
-SIcom COM compatible interface (default)
-SIcorba CORBA compatible interface
-Sm Support macros like C (global)
-So Same as -Mtp
-Sr Transparent file names in ISO mode
-Ss Constructor name must be init (destructor must be done)
-Sv Support vector processing (use CPU vector extensions if available)
-Sx Enable exception keywords (default in Delphi/ObjFPC modes)
-Sy @<pointer> returns a typed pointer, same as $T+
-s Do not call assembler and linker
-sh Generate script to link on host
-st Generate script to link on target
-sr Skip register allocation phase (use with -alr)
-T<x> Target operating system:
-Taros AROS
-Tdarwin Darwin/Mac OS X
-Tdragonfly DragonFly BSD
*** press enter ***
-Tembedded Embedded
-Tfreebsd FreeBSD
-Tiphonesim iPhoneSimulator
-Tlinux Linux
-Tnetbsd NetBSD
-Topenbsd OpenBSD
-Tsolaris Solaris
-Twin64 Win64 (64 bit Windows systems)
-u<x> Undefines the symbol <x>
-U Unit options:
-Un Do not check where the unit name matches the file name
-Ur Generate release unit files (never automatically recompiled)
-Us Compile a system unit
-v<x> Be verbose. <x> is a combination of the following letters:
e : Show errors (default)0 : Show nothing (except errors)
w : Show warnings u : Show unit info
n : Show notes t : Show tried/used files
h : Show hints c : Show conditionals
i : Show general info d : Show debug info
l : Show linenumbers r : Rhide/GCC compatibility mode
s : Show time stamps q : Show message numbers
a : Show everything x : Show info about invoked tools
*** press enter ***
b : Write file names messages p : Write tree.log with parse tree
with full path v : Write fpcdebug.txt with
z : Write output to stderr lots of debugging info
m<x>,<y> : Do not show messages numbered <x> and <y>
-V<x> Append '-<x>' to the used compiler binary name (e.g. for version)
-W<x> Target-specific options (targets)
-WA Specify native type application (Windows)
-Wb Create a bundle instead of a library (Darwin)
-WB Create a relocatable image (Windows)
-WB<x> Set image base to <x> (Windows)
-WC Specify console type application (Windows)
-WD Use DEFFILE to export functions of DLL or EXE (Windows)
-We Use external resources (Darwin)
-WG Specify graphic type application (Windows)
-Wi Use internal resources (Darwin)
-WI Turn on/off the usage of import sections (Windows)
-WM<x> Minimum Mac OS X deployment version: 10.4, 10.5.1, ... (Darwin)
-WN Do not generate relocation code, needed for debugging (Windows)
-WP<x> Minimum iOS deployment version: 8.0, 8.0.2, ... (iphonesim)
-WR Generate relocation code (Windows)
*** press enter ***
-WX Enable executable stack (Linux)
-X Executable options:
-X9 Generate linkerscript for GNU Binutils ld older than version 2.19.1 (Linux)
-Xc Pass --shared/-dynamic to the linker (BeOS, Darwin, FreeBSD, Linux)
-Xd Do not search default library path (sometimes required for cross-compiling when not using -XR)
-Xe Use external linker
-Xf Substitute pthread library name for linking (BSD)
-Xg Create debuginfo in a separate file and add a debuglink section to executable
-XD Try to link units dynamically (defines FPC_LINK_DYNAMIC)
-Xi Use internal linker
-XLA Define library substitutions for linking
-XLO Define order of library linking
-XLD Exclude default order of standard libraries
-Xm Generate link map
-XM<x> Set the name of the 'main' program routine (default is 'main')
-Xn Use target system native linker instead of GNU ld (Solaris, AIX)
-Xp<x> First search for the compiler binary in the directory <x>
*** press enter ***
-XP<x> Prepend the binutils names with the prefix <x>
-Xr<x> Set the linker's rlink-path to <x> (needed for cross compile, see the ld manual for more information)(BeOS, Linux)
-XR<x> Prepend <x> to all linker search paths (BeOS, Darwin, FreeBSD, Linux, Mac OS, Solaris)
-Xs Strip all symbols from executable
-XS Try to link units statically (default, defines FPC_LINK_STATIC)
-Xt Link with static libraries (-static is passed to linker)
-Xv Generate table for Virtual Entry calls
-XV Use VLink as external linker (default on Amiga, MorphOS)
-XX Try to smartlink units (defines FPC_LINK_SMART)
-? Show this help
-h Shows this help without waiting
Hmm panjang hehehe. but ini artinya fpc sudah siap untuk digunakan.