Free Pascal编译器选项

编译器选项:

普通选项:

 -h 该选项将把所有的命令行选项列出来,然后退出程序
 -? 同-H一样的,在分屏显示,输出选项表后退出

 -i 这个选项显示编译器版权信息,你能给一个选项,类似下面 -ixxx
   D   返回编译器的日期
   V   返回编译器版本
   SO   返回编译器的系统版本
   SP   返回编译器所选的处理器
   TO   返回编译目标系统
   TP   返回编译后目标处理器
   -l   在标准出上显示Free Pascal的LOGO,同时显示Free Pascal的版本号
   -n   告诉编译器不读入默认的配置文件,仍然可以通过@选项来使用配置文件

编译器返回的信息:

 -vxxx xxx可以是下面的:
   e : 默认的选项,只显示错误
   i : 只显示普通的信息
   w : 显示警告
   n : 显示注意
   h : 显示提醒.
   l : 使用百分比显示错误行的位置.
   u : 显示加载的单元名称?
   t : 显示程序试图打开的文件.
   p : 显示过程和函数的名称.
   c : 告诉编译器警告你当它处理有条件时.
   m : 显示被定义的宏.
   d : 显示其它的调试信息.
   a : 显示所有的可能的信息.
   0 : 不要任何信息. 当你想不使用配置文件中的默认设置时有用.
   b : 显示所有所有声明的过程如果一个重载函数出现错误.
   x : 输出一些执行信息(只对Win32系统游).
   r : Rhide/GCC兼容模式: 将错误整理以便RHIDE能够使用.

  V
   创建一个包含有很多调试信息的FPcdebug.txt. 主要是给编译器开发者的

关于路径及文件的选项
 -exxx
   xxx指明可执行文件 as (the assembler)和ld (the linker)的路径.
 -FaXYZ
  在系统单元后但是在其他单元之前加载单元 XYZ . XYZ 是一个用逗号分隔的单元名称列表. 只能用于程序,并且和把XYZ放在USES语句的一条效果一致.
 -FcXXX
  设置输入代码页 to XXX.还在试验中.
 -FD
  和 -e 一样.
 -Fexxx
  将错误写入文件名为 xxx的文件.
 -FExxx
  将编译输出的可执行程序和单元输出到目录XXX中.通常是存在当前目录(*.pas)下.
 -Fixxx
  将目录 xxx 加入到目标文件的搜索目录中 .
 -Flxxx
  将 xxx作为library查找路径, 被传给连接器.
 -FLxxx
  (LINUX only) 使用 xxx 作为动态链接库连接器,默认是 /lib/ld-linux.so.2, or /Hlib/ld-linux.so.1, 取决于谁先找到.
 -Foxxx
  添加目录 xxx 到目标文件(*.obj)查找路径. 这个路径将在查找要连接的文件时有用.
 -Frxxx
  xxx 制定包含调试代码信息的文件. 默认是编译器内置的信息.如果 指定就忽略默认的
 -Fuxxx
  把目录xxx添加到单元搜索路径. 单元将首先在当前路径下查找.如果没有发现将去单元路径查找. 你必须提供系统单元路径.
 -FUxxx
  将编译好的单元放在 xxx 代替当前路径. 将忽略 -FE 开关.
 -Ixxx
  将 xxx 放入包含的文件查找路径中. 这个开关的作用和 -Fi 一样.

控制输出的选项
 -a
  告诉编译器不要删除产生的汇编代码文件.
 -al
  告诉编译器汇编文件中将源代码作为注释.
 -an
  将节点信息写入汇编文件 (节点是编译器在中间的局部声明). 最初是编译器为了调试代码而产生的.
 -ap
  输出到管道代替创建一个临时汇编文件,这个能够提升OS/2 and LINUX下的编译器速度.只有汇编程序类似GNU的内置汇编程序使用咯.
 -ar
  在汇编代码中显示寄存器的分配和释放信息.这是编译器对于调试代码预制的首选.
 -at
   在汇编文件中列出临时存储单元分配.
 -Axxx
  指明产生哪种汇编代码 xxx 可以是下面的 :
   default
    使用内置默认的.
   as
    使用GNU as 汇编.
   nasmcoff
    coff (Go32v2) 使用 Nasm.
   nasmelf
    elf32 (Linux)文件 Nasm.
   nasmobj
    obj文件使用 Nasm.
   masm
    obj文件使用 Masm (Microsoft).
   tasm
    obj文件使用 Tasm (Borland).
   elf
    elf32 (Linux) using internal writer.
   coff
    coff obj文件使用 (Go32v2) using the internal binary object writer.
   pecoff
    pecoff obj文件使用 (Win32) using the internal binary object writer.

 -B
  告诉编译器重新编译所有的文件,尽管从上次编译后再没有更改过.
 -b
  告诉编译器产生浏览信息,这些信息能够提供给IDE单元内的 classes, objects, procedures, types and variables .
 -bl
  和 -b 一样,但还产生局部变量,类型,过程的信息.
 -Cc
  设置为编译器默认的中断.
 -CD
  创建动态链接库,这个用来把单元转化为动态链接库,适用于LINUX.
 -Ce
  模仿浮点数协处理器
 -CfXXX
  设置使用浮点数处理器.
 -Cg
  允许产生PIC图像文件存储格式代码.
 -Chxxx
  保留 xxx 字节的堆. xxx 在 1024 和 67107840之间.
 -Ci
  检查输入输出检查. 防止你程序输入输出代码返回错误的代码, 程序将在退出时显示一个运行错误. 这个错误是 I/O 引起的r.
 -Cn
  忽略连接阶段.
 -Co
  检查整数溢出. 防止整形溢出,你的程序将产生一个运行错误.
 -Cr
  范围检查. 防止你的程序运行时读数组越界, 或者一个类型增大超过范围,将产生一个运行错误.
 -CR
  校检是不是正确调用对象内部的虚函数.
 -Csxxx
  设置栈的大小为 xxx.
 -Ct
  检查栈溢出.在你的程序栈溢出时产生一个运行错误.
 -CX
  创建一种只有你的程序需要的代码才被连接,不需要的代码全部省去. 这样就能产生更小的程序.
 -dxxx
  定义 xxx 符号. 这样条件编译代码.
 -D
  产生一个 DEF文件(模块定义文件,供生成动态链接库时使用) (for OS/2)
 -Dd
  设置可执行文件/动态链接库的描述信息(Windows)
 -Dv
  设置可执行文件/动态链接库的版本 (Windows)
 -E 与 -Cn一样的.
 -g
  为 GNU 调试器 gdb 产生调试信息,使之可以用于GD调试.
 -gc
  对指针类型(pointers)进行检查. 这个必须和 -gh 一起使用. 当这个开启时,将对访问堆的指针进行校检.
 -gd
  为 dbx 产生调试信息.
 -gg
  与 -g 相同.
 -gh
  使用 heaptrc 单元 . (显示堆的使用情况,当程序推出后)
 -gl
  使用 lineinfo 单元 . (显示文件的名称和行号当文件存在退出于一个错误时)
 -gv
  emit info for valgrind.
 -gw
  使调试信息变小.
 -kxxx
  传递xxx 给连接程序.
 -Oxxx
  编译器输出的代码最优化; xxx 可以是下面的值 :
   g
    为代码长短而优化.
   G
    为运行时间而优化(默认).
   r
   使用寄存器变量 (试验中, 谨慎使用).
   u
   不确定的优化
  1
   一层优化 (快速优化).
  2
   二层优化(-O1 加上一些更慢的优化).
  3
   三层优化 (-O2 加上 -Ou).
  Pn
    (Intel only) 指定处理器: n 可以是:
  1
   针对 386/486 进行优化
  2
   针对 Pentium/PentiumMMX ™进行优化
  3
   针对 PentiumPro/PII/Cyrix 6×86/K6 ™ 进行优化

  你能在 Programmers guide 中找到这些优化后精确的结果.

 -oxxx
  将xxx作为输出的可执行文件名. 只适用于程序.
 -pg
  Generate profiler code for gprof. This will define the symbol FPC_PROFILE, which can be used in conditional defines.
 -s
  不使用汇编程序和连接程序. 取而代之的,编译程序将生成一个脚本(ODS下的ppas.bat和 LINUX下的ppas.sh) ,可以运行产生可执行文件.
   这样能提高编译程序的速度,还有程序的调试信息输出速度. 这个选项有几个扩展的参数, 主要是为了交差编辑. 能含有下面的一个值:
  h
   产生的脚本在本机上连接运行.
  t
   产生的脚本在目标平台上编译.也就是编译后的可执行文件能在目标系统中运行
  r
   跳过注册分配阶段,不能进行最优化//Skip register allocation phase .
 -Txxx
  指明目标操作系统. xxx可以是下面中的一个:
  emx : OS/2 via EMX (and DOS via EMX extender)
  freebsd : FreeBSD.
  go32v2 : DOS and version 2 of the DJ DELORIE extender.
  linux : LINUX.
  netbsd : NetBSD.
  netware : Novell Netware Module (clib)
  netwlibc : Novell Netware Module (libc)
  os2 : OS/2 (2.x) using the EMX extender.
  sunos : SunOS/Solaris.
  watcom : watcom compatible DOS extender
  wdosx : WDOSX extender.
  win32 : WINDOWS 32 bit.

 -uxxx
  取消 xxx的定义. 与 -d 选项相反.
 -Ur
  产生一个永久单元.这个文件将不会再被编译, 即使当源程序更改了. 当发行一个版本时有用. 对于发行的单元将忽略 -B选项 .
 -W
  设置产生的可行文件一些WINDOWS 或 OS/2的文件属性 .可以是像下面的一项或是多项
  Bhhh
   set preferred base address to hhh (一个十六进制数地址)
  C
   产生一个控制台应用程序(+)或者可视界面程序 (-)//a console application (+) or a gui application (-).
  D
   强制使用Def文件用以输出.
  F
   Generate a FS application (+) 或控制台应用程序(-).
  G
   生成可视化界面的程序 (+) 或控制台应用程序(-).
  N
   Do not generate relocation section.
  R
   Generate a relocation section.
  T
   Generate a TOOL application (+) 或控制台应用程序 (-).
 -Xx
  可执行文件选项,告诉编译器编译成什么样的程序.参数 x 可以是下面中的一个:
  c : (LINUX only) Link with the C library. You should only use this when you start to port Free Pascal to another operating system.
  d :don’t use the standard library path. This is needed for cross-compilation, to avoid linking with the host platform’s libraries.
  D : Link with dynamic libraries (defines the FPC_LINK_DYNAMIC symbol)
  pXXX : Prepend binutils names with XXX for cross-compiling.
  rXXX : 设置 XXX 为库搜寻路径.
  s : 从可执行程序中去除符号.
  S : Link with static units (defines the FPC_LINK_STATIC symbol)
  t : link static. It passes the -static option to the linker.
  X : Link with smartlinked units (defines the FPC_LINK_SMART symbol)

关于源程序的选项(语言选项)
 -Mmode
   设置语言类型,可以是下面的一种:
     delphi
       Delphi兼容模式.这个比objFPc模式更加严谨, 因为关闭了一些 Free Pascal扩展的功能.
     FPc
       Free Pascal 模式,默认的
     gpc
       与GPC兼容
     macpas
       与MAC上的Pascal兼容.
     objFPc
       一些Delphi 2地扩展功能将打开.但是与Delph模式不同.因为Free Pascal特性仍然可以使用.
     tp
      与TP/BP 7.0兼容. 这就意味着不能使用函数重载等功能.
 -Rxxx
  指明你使用的汇编代码类型. xxx是下面中的一个:
   att
     AT&T格式的汇编代码. 默认的格式.
   intel
    Intel格式的汇编代码.
   direct
    asm blocks should be copied as-is in the assembler, only replacing certain variables. file.

 -S2
  打开Delphi 2扩展 (objFPc mode). 建议使用 -Mobjfpc 代替.
 -Sa
  Include assert statements in compiled code. Omitting this option will cause assert statements to be ignored.
 -Sc
  提供C风格的操作符,也就是 *=, +=, /= and -=.
 -Sd
  与Delphi兼容.推荐使用 -Mdelphi 代替.
 -SeN
  编译器将在第N个错误后停止.如果N没有,那么默认N为50. 通常编译器将在一个错误后试图继续编译,直到有50个错误或者发现了致命的错误才停止.
 -Sg
  提供使用label和goto命令.默认是不支持的. 你也要使用这个选项如果你在汇编语句中使用了Label. (如果你使用 AT&T格式地的代码)
 -Sh
  使用ansistrings代替默认的 strings. 如果指明,那么编译器将把string认为是ansistring. 否则只提供短字符串(TP 类型).
 -Si
  提供C++风格的INLINE//Support C++ style INLINE.
 -SIXXX
  set interfaces style to XXX.
 -Sm
  提供C风格的宏.
 -So
  与Borland TP 7.0 兼容. 建议使用 -Mtp 代替.
 -Sp
  与gpc (GNU pascal compiler) 兼容.建议使用 -Mgpc 代替.
 -Ss
  构造函数必须初始化,析构函数必须完成.//我也不太清楚,大概是二者都要有吧.
 -St
  在对象(Objects)中允许使用static关键字.
 -Un
  不检查单元名称. 通常单元名好文件名要求是一样的.这个选项允许二者不同.
 -Us
  如果便一个系统单元,这个选项将让编译器只使用几种基本数据类型.

有些地方还是不太会翻译,所以就没有翻译了,希望有人指点.

巫山霏云
2005.10.12 第二次校正板

发布者:巫山霏云

巫山霏云,87年生巨蟹,文科生,IT男,喜读书,不求甚解,

留下评论

您的电子邮箱地址不会被公开。

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据