编译器选项:

普通选项:

-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 ,而不是当前目录.

-Fixxx

将 xxx作为包含文件的搜索目录 .

-Flxxx

将 xxx作为library查找路径, 被传给连接器.

-FLxxx

(LINUX only) 使用 xxx 作为动态链接库连接器,默认是 /lib/ld-linux.so.2, or /Hlib/ld-linux.so.1, 取决于谁先找到.

-Foxxx

添加 xxx 作为 object 文件查找路径. 这个路径将在查找要连接的文件时有用.

-Frxxx

xxx 制定包含调试代码信息的文件. 默认是编译器内置的信息.如果 指定就忽略默认的

-Fuxxx

把xxx添加到但愿搜索路径. 单元将首先在当前路径下查找.如果没有发现将去单元路径查找. 你必须提供系统单元路径.

-FUxxx

将编译好的单元放在 xxx 代替当前路径. 将忽略 -FE 开关.

-Ixxx

将 xxx 放入包含的文件查找路径中. 这个开关的作用和 -Fi 一样.

控制输出的选项

-a

告诉编译器不要删除产生的汇编代码文件.

-al

告诉编译器汇编文件中将源代码作为注释.

-an

将节点信息写入汇编文件 (节点是编译器在中间的局部声明). 最初是编译器为了调试代码而产生的.

-ap

use pipes instead of creating temporary assembler files. This may speed up the compiler on OS/2 and LINUX. Only with assemblers (such as GNU if the internal assembler is used.

-ar

tells the compiler to list register allocation and release info in the assembler file. This is primarily intended for debugging the code generated by the compiler.

-at

在汇编文件中列出临时存储单元分配.

-Axxx

指明产生哪种汇编代码 . xxx 可以是下面的 :

default

使用内置默认的.

as

使用GNU as 汇编.

nasmcoff

coff (Go32v2) 使用 Nasm.

nasmelf

elf32 (Linux) file using Nasm.

nasmobj

object file using Nasm.

masm

object file using Masm (Microsoft).

tasm

object file using Tasm (Borland).

elf

elf32 (Linux) using internal writer.

coff

coff object file (Go32v2) using the internal binary object writer.

pecoff

pecoff object file (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

为 gdb 产生调试信息

-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 6x86/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 : set library path to XXX.

s : Strip the symbols from the executable.

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为1.通常编译器将在一个错误后试图继续编译,直到有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

如果便一个系统单元,这个选项将让编译器只使用几种基本数据类型.

freepascal linux 界面,FreePascal中的编译器选项相关推荐

  1. 如何在Windows命令行(DOS界面)中调用 编译器 来编译C/C++源程序

    首先说明一下背景: 为什么要在DOS界面编译C/C++源程序?有很多现成的开发环境(IDE)如:vs, vc++等,这些开发环境集成了编译,调试,使用起来很方便,而且图形化操作界面,简洁明了.但是在开 ...

  2. 用dos编译c语言,如何在Windows命令行(DOS界面)中调用 编译器 来编译C/C++源程序...

    首先说明一下背景: 为什么要在DOS界面编译C/C++源程序?有很多现成的开发环境(IDE)如:vs, vc++等,这些开发环境集成了编译,调试,使用起来很方便,而且图形化操作界面,简洁明了.但是在开 ...

  3. 关于GCC/LLVM编译器中的sanitize选项用处用法详解

    关于GCC/LLVM编译器中的sanitize选项用处用法详解 ​ 编译器中sanitize选项原本来自google的开源C/C+ +工具集sanitizers项目, 包括了AddressSaniti ...

  4. linux中python编译器的配置_方舟编译器环境配置及源码编译过程详解

    1)首先将方舟编译器源代码包下载到本地. https://www.openarkcompiler.cn/download/OpenArkCompiler-0.2.tar.gz 2)Ubuntu系统中方 ...

  5. Linux与Windows中动态链接库的分析与对比

    摘要:动态链接库技术实现和设计程序常用的技术,在Windows和Linux系统中都有动态库的概念,采用动态库可以有效的减少程序大小,节省空间,提高效率,增加程序的可扩展性,便于模块化管理.但不同操作系 ...

  6. GCC编译器选项及优化提示

    很多弟兄可能都很关心如何优化编译自己的程序,虽然本人不赞成"骨灰"玩法,却也不得不承认这是掌握gcc的绝佳途径: 因此献上此帖,以供各位玩家参考,绝对原创噢 =========== ...

  7. Linux内核defconfig在哪,Linux内核根目录中的配置文件.config中包含了许多宏定义,...

    满意答案 大大bigone 推荐于 2017.11.22 采纳率:52%    等级:9 已帮助:813人 一.Linux内核的配置系统由三个部分组成,分别是: 1.Makefile:分布在 Linu ...

  8. Linux装c编译器gcc,c编译器进阶之路,linux下的gcc c编译器使用教程

    c编译器的重要性不言而喻,从往期c编译器文章中,如c编译器优化.选定c编译器等,想必大家对c编译器均已有所了解.往期文章中,小编主要从宏观方面为大家讲解c编译器,此外对于gcc c编译器的讲解也大多基 ...

  9. 在Win10的Linux子系统Ubuntu中使用Qt

    在Win10的Linux子系统Ubuntu中使用Qt 陈拓 2021/07/26-2021/07/26 1. 概述 在<Win10的Linux子系统Ubuntu安装图形界面> https: ...

最新文章

  1. Jenkins安装maven integration plugin失败解决方法
  2. Git的使用-将本地项目上传至Github/Github下载代码至本地-MAC
  3. 响应式的无限滚动全屏dribbble作品集布局展示效果
  4. 怎么设置滚轮拖动_解决三斜线表头一拖动就变形的问题,再也不用一次一次的调整了...
  5. NHibernate初学者指南(2):一个完整的例子
  6. android生成预处理文件,FFmpeg:Android利用Filter进行音频数据预处理
  7. oracle在group by时某列有多个值的拼接
  8. 进程同步,异步,互斥
  9. Go程序设计语言读书笔记-1
  10. 利用SPSS做数据分析②之数据处理1
  11. Apollo详解之canbus模块——车辆底层协议调试
  12. Android apk下载与安装
  13. java uml类图虚线实线_时序图的实线和虚线-类图中的实线与虚线-用例图中实线箭头表示什么...
  14. python计算球体体积_漫谈超球体的体积公式
  15. [基于kk搭建k8s和kubesphere] 6 kk安装和部署
  16. C++(指针和高级指针)-上篇
  17. C#学员管理系统(源代码)
  18. js 取表格table td值 botton a
  19. Eclipse4.6(neno)配置Tomcat插件
  20. 锐龙r7 PRO 4700G、锐龙r5 PRO 4400G和锐龙r3 4200G 的区别

热门文章

  1. 人类高质量七夕!python玩出花!骚操作
  2. 如何用AI算法识别骗保行为?蚂蚁保险智能风控模型首次公开!
  3. 银河麒麟服务器ZYJ操作系统,文件储存inode节点占用根目录/空间满了解决办法
  4. html 表格中图片显示不全,为何Word 向表格里插入图片时显示不全呢? 有图!
  5. 通讯录管理系统-C++课程设计(试错版)
  6. Android 11适配
  7. 【gulimall】com.alibaba.nacos.api.exception.NacosException: java.lang.reflect.InvocationTargetExcepti
  8. php利用phpword读取word
  9. 阿里巴巴开源的 Java 诊断工具:Arthas(阿尔萨斯)
  10. FFmpeg入门详解之20:视频编码原理简介