Erlang Compile

该文档用于对标准Erlang编译器的一些说明。

Erlang Compile

Compiler

这个模块提供了一个到标准Erlang编译器的接口。它可以生成一个包含目标代码的新文件,也可以返回一个可以直接加载的二进制文件。

导出内容

1.env_compiler_options()
通过环境变量ERL_COMPILER_OPTIONS返回编辑器选项。如果值是列表,则按原样返回。如果它不是一个列表,则将其放入一个列表。

2.file(File)
与file(file, [verbose, repost_errors, report_warnings])相同。

3.file(File, Options) -> CompRet
CompRet = ModRet | BinRet | ErrRet
ModRet = {ok, ModuleName} | {ok, ModuleName, Warnings}
BinRet = {ok, ModuleName, Binary} | {ok, ModuleName, Binary, Warnings}
ErrRet = error | {error, Errors, Warnings}
编译file文件中的代码,该文件是一个含.erl扩展名的Erlang源代码文件。选项决定编译器的行为。
如果成功,返回{ok, ModuleName};如果有错误,返回error。如果编译成功且没有错误,则创建一个目标代码文件。如果源代码中的模块名与输出文件的基本名不相同,则认为是错误。
有以下可用的选项:

  • basic_validation
    此选项是测试模块是否成功编译的快速方法。这对于希望验证其发出的代码生成器非常有用。不生成任何代码。如果启用了警告(例如未使用的变量和函数的警告)也会返回。
    使用选项strong_validdation生成编译器将生成的所有警告。
  • strong_validation
    类似于选项basic_validation。不会生成任何代码,但是会运行更多的编译器传递,以确保生成由优化传递生成的警告(例如不匹配的子句,或者保证在运行时发生异常而失败的表达式)。
  • binary
    编译器以二进制形式返回目标代码,而不是创建目标文件。如果成功,编译器返回{ok, ModuleName, Binary}。
  • bin_opt_info
    编译器将发出关于二进制匹配优化(成功和不成功)的信息警告。有关更多信息,请参见效率指南中关于bin_opt_info。
  • {compile_info, [{atom(), term()}]}
    允许编译器构建在compile之上,将额外的编译元数据附加到生成的beam文件中的compile_info块。
    如果支持确定性选项并由用户提供,则建议编译器删除所有非确定性信息。
  • compressed
    编译器将压缩生成的目标代码,这对于嵌入式系统非常有用。
  • debug_info
    在编译的beam模块的debug_info模块中包含Erlang抽象格式的调试信息。Debugger, Xref和Cover等工具要求包含调试信息。
    警告:可以根据调试信息重构源代码。使用加密的调试信息(encrypt_debug_info)来防止这种情况。
    有关详细信息,see beam_lib(3)。
  • {debug_info, {Backend, Data}}
    以后端模块的形式包含自定义调试信息,并在以编译的beam模块中包含自定义数据。给定的模块必须实现一个debug_info/4函数,并负责生成不同的代码表示形式,如beam_lib(3)下的debug_info中所述。
    警告:可以根据调试信息重构源代码。使用加密的调试信息{encrypt_debug_info}来防止这种情况。
    1