Red Hat Training

A Red Hat training course is available for RHEL 8

4.10. 编译器和开发工具 (机器翻译版本)

Boost已更新至1.66版

促进 C ++库已更新到上游版本1.66。版本 促进 包含在Red Hat Enterprise Linux 7中的是1.53。有关详细信息,请参阅上游更改日志: https://www.boost.org/users/history/

此更新引入了以下更改,破坏了与先前版本的兼容性:

  • bs_set_hook() 功能, splay_set_hook() 来自展开容器的功能,以及 bool splay = true 额外的参数 splaytree_algorithms() 功能在 侵入 库已被删除。
  • 解析器不再支持JSON文件中的注释或字符串连接 物业树 图书馆。
  • 一些发行版和特殊功能 数学 已经修复了库以表现为文档并提出了一个 overflow_error 而不是返回最大有限值。
  • 一些标题来自 数学 库已被移入目录 libs/math/include_private
  • 的行为 basic_regex<>::mark_count()basic_regex<>::subexpression(n) 功能来自 正则表达式 库已更改为与其文档相匹配。
  • 在中使用可变参数模板 变种 库可能会破坏元编程功能。
  • boost::python::numeric API已被删除。用户可以使用 boost::python::numpy 代替。
  • 原子库中不再提供对非对象类型指针的算术运算。

(BZ#1494495)

Unicode 11.0.0支持

红帽企业Linux核心C库, glibc的, ,已更新为支持Unicode标准版本11.0.0。因此,所有宽字符和多字节字符API(包括字符集之间的音译和转换)都能提供符合此标准的准确和正确的信息。

(BZ#1512004)

boost package现在独立于Python

有了这个更新,安装 boost 包不再安装了 Boost.Python 库作为依赖。为了使用 Boost.Python, ,你需要明确安装 boost-python3 要么 boost-python3-devel 包。

(BZ#1616244)

一个新的 compat-libgfortran-48 包可用

为了与使用Fortran库的Red Hat Enterprise Linux 6和7应用程序兼容,一个新的 compat-libgfortran-48 兼容包现在可用,它提供了 libgfortran.so.3 图书馆。

(BZ#1607227)

GCC中的Retpoline支持

此更新增加了对GCC的retpolines的支持。retpoline是内核使用的软件构造,用于减少CVE-2017-5715中描述的减轻Spectre Variant 2攻击的开销。

(BZ#1535774)

增强了对工具链组件中64位ARM体系结构的支持

工具链组件, GCCbinutils, ,现在为64位ARM体系结构提供扩展支持。例如:

  • GCCbinutils 现在支持可伸缩矢量扩展(SVE)。
  • 支持 FP16 数据类型由ARM v8.2提供,已添加到 GCC。该 FP16 数据类型提高了某些算法的性能。
  • 来自的工具 binutils 现在支持ARM v8.3架构定义,包括指针验证。指针验证功能通过制作自己的函数指针来防止恶意代码破坏程序或内核的正常执行。因此,在分支到代码中的不同位置时,仅使用可信地址,这提高了安全性。

(BZ#1504980, BZ#1550501, BZ#1504995, BZ#1504993, BZ#1504994)

优化到 glibc 对于IBM POWER系统

此更新提供了新版本 glibc 它针对IBM POWER 8和IBM POWER 9体系结构进行了优化。因此,IBM POWER 8和IBM POWER 9系统现在可以自动切换到相应的优化系统 glibc 运行时的变体。

(BZ#1376834)

GNU C Library已更新至2.28版

Red Hat Enterprise Linux 8包含GNU C库2.28版(glibc)。显着的改进包括:

  • 安全加固功能:

    • 安全的二进制文件标有 AT_SECURE 国旗忽略了 LD_LIBRARY_PATH 环境变量。
    • 不再打印回溯以进行堆栈检查失败,以加速关闭并避免在受损环境中运行更多代码。
  • 性能改进:

    • 表现的 malloc() 函数已通过线程本地缓存进行了改进。
    • 添加了 GLIBC_TUNABLES 环境变量,以改变库性能特征。
    • 线程信号量的实现已得到改进,并且具有新的可扩展性 pthread_rwlock_xxx() 功能已添加。
    • 数学库的性能得到了改进。
  • 添加了对Unicode 11.0.0的支持。
  • 增加了对ISO / IEC / IEEE 60559:2011,IEEE 754-2008和ISO / IEC TS 18661-3:2015标准定义的128位浮点数的改进支持。
  • 域名服务(DNS)存根解析器改进相关的 /etc/resolv.conf 配置文件:

    • 更改文件时会自动重新加载配置。
    • 增加了对任意数量搜索域的支持。
    • 适当的随机选择 rotate 选项已添加。
  • 增加了新的开发功能,包括:

    • Linux的包装函数 preadv2pwritev2 内核调用
    • 新功能包括 reallocarray()explicit_bzero()
    • 新的标志 posix_spawnattr_setflags() 功能如 POSIX_SPAWN_SETSID

(BZ#1512010, BZ#1504125, BZ#506398)

可在RHEL中使用CMake

CMake构建系统版本3.11在Red Hat Enterprise Linux 8中可用作 cmake 包。

(BZ#1590139, BZ#1502802)

make 版本4.2.1

Red Hat Enterprise Linux 8随附了 make 构建工具版本4.2.1。值得注意的变化包括:

  • 配方失败时,将显示生成文件的名称和配方的行号。
  • --trace 已添加选项以启用目标跟踪。使用此选项时,每个配方都会在调用之前打印,即使它将被抑制,也可以与此配方所在的文件名和行号一起打印,还可以使用先决条件来调用它。
  • 混合显式和隐式规则不再导致 make 终止执行。而是打印一个警告。请注意,此语法已弃用,将来可能会完全删除。
  • $(file …​) 已添加函数以将文本写入文件。在没有文本参数的情况下调用时,它只会打开并立即关闭文件。
  • 一个新的选择, --output-sync 要么 -O, ,使每个作业对多个作业的输出进行分组,并使并行构建的调试更容易。
  • --debug 选项现在也接受了 n (无)标志禁用所有当前启用的调试设置。
  • != shell赋值运算符已被添加为 $(shell …​) 用于增加与BSD makefile的兼容性。有关运算符和函数之间的更多详细信息和差异,请参阅GNU make手册。

请注意,结果是名称以感叹号结尾并紧接着赋值的变量,例如 variable!=value, ,现在被解释为新语法。要恢复以前的行为,请在感叹号后面添加一个空格,例如 variable! =value

+

  • ::= 已添加由POSIX标准定义的赋值运算符。
  • 当。。。的时候 .POSIX 指定变量, make 遵守处理反斜杠和新行的POSIX标准要求。在此模式下,保留反斜杠之前的任何尾随空格,并且每个反斜杠后跟一个新行和空格字符将转换为单个空格字符。
  • 的行为 MAKEFLAGSMFLAGS 现在可以更精确地定义变量。
  • 一个新变量, GNUMAKEFLAGS, ,被解析 make 标志相同 MAKEFLAGS。因此,GNU make- 特定标志可以存储在外面 MAKEFLAGS 并且增加了makefile的可移植性。
  • 一个新变量, MAKE_HOST, ,包含主机架构已添加。
  • 新变量, MAKE_TERMOUTMAKE_TERMERR, ,表明是否 make 正在将标准输出和错误写入终端。
  • 设置 -r-R 中的选项 MAKEFLAGS makefile中的变量现在可以正常工作,并分别删除所有内置规则和变量。
  • .RECIPEPREFIX 现在每个食谱都会记住这个设置。此外,在该配方中扩展的变量也使用该配方前缀设置。
  • .RECIPEPREFIX 设置和所有特定于目标的变量显示在输出中 -p 选项就好像在makefile中,而不是作为注释。

(BZ#1641015)

Go程序用 去工具集 符合FIPS标准

可用的加密库 去工具集 已改为使用了 OpenSSL的 如果主机系统配置为FIPS模式,则为库版本1.1.0。因此,使用此版本构建的程序 去工具集 符合FIPS标准。

要使Go程序仅使用未经认证的标准加密例程,请使用 -tags no_openssl 的选择 go 编译器在构建时。

(BZ#1512570)

SystemTap的 版本4.0

Red Hat Enterprise Linux 8随附了 SystemTap的 仪表工具4.0版。显着的改进包括:

  • 扩展的Berkeley Packet Filter(eBPF)后端已得到改进,尤其是字符串和函数。要使用此后端,请启动 SystemTap的 随着 --runtime=bpf 选项。
  • 增加了与Prometheus监测系统一起使用的新的出口网络服务。
  • 系统调用探测实现已得到改进,以便在必要时使用内核跟踪点。

(BZ#1641032)

改进 binutils 版本2.30

红帽企业Linux 8包括版本2.30 binutils 包。显着的改进包括:

  • 对新的s390x架构扩展的支持已得到改进。

汇编程序:

  • 添加了对WebAssembly文件格式的支持,以及WebAssembly到wasm32 ELF文件格式的转换。
  • 增加了对ARMv8-R架构和Cortex-R52,Cortex-M23和Cortex-M33处理器的支持。
  • 增加了对RISC-V架构的支持。

链接器:

  • 现在,链接器默认将代码和只读数据放入单独的段中。因此,创建的可执行文件更大,运行更安全,因为动态加载程序可以禁用包含只读数据的任何内存页面的执行。
  • 添加了对动态加载程序提供有关二进制文件的提示的GNU属性注释的支持。
  • 以前,链接器为英特尔间接分支跟踪(IBT)技术生成了无效的可执行代码。因此,生成的可执行文件无法启动。此错误已得到修复。
  • 以前, gold 链接器合并属性说明不正确。因此,可能会在生成的代码中启用错误的硬件功能,并且代码可能会意外终止。此错误已得到修复。
  • 以前, gold 链接器在末尾创建了带有填充字节的注释部分,以根据体系结构实现对齐。因为动态加载器没有期望填充,所以它会意外终止它正在加载的程序。此错误已得到修复。

其他工具:

  • readelfobjdump 现在,工具可以选择将链接跟踪到单独的调试信息文件中,并在其中显示信息。
  • 新的 --inlines 选项扩展了现有的 --line-numbers 的选择 objdump 用于显示内联函数的嵌套信息的工具。
  • nm 工具获得了新的选择 --with-version-strings 显示符号名称后的版本信息(如果存在)。

(BZ#1641004, BZ#1637072, BZ#1501420, BZ#1504114, BZ#1614908, BZ#1614920)

执行副驾驶 版本4.1.3

Red Hat Enterprise Linux 8随附 绩效副驾驶 (pcp)4.1.3版。显着的改进包括:

  • pcp-dstat 工具现在包括历史分析和逗号分隔值(CSV)格式输出。
  • 日志实用程序可以使用度量标签和帮助文本记录。
  • pmdaperfevent 工具现在可以在较低的同步多线程(SMT)级别报告正确的CPU编号。
  • pmdapostgresql 工具现在支持 Postgres的 系列10.x.
  • pmdaredis 工具现在支持 Redis的 5.x系列
  • pmdabcc 工具已通过动态流程过滤和每进程系统调用,ucalls和ustat得到增强。
  • pmdammv 工具现在导出度量标签,格式版本增加到3。
  • pmdagfs2 工具支持额外的格洛克和格洛克持有人指标。
  • 已对SELinux策略进行了一些修复。

(BZ#1641034)

内存保护密钥

此更新启用了允许每线程页面保护标志更改的硬件功能。新的 glibc 系统调用包装器已添加为 pkey_alloc(), ,pkey_free(), ,和 pkey_mprotect() 功能。除此之外 pkey_set()pkey_get() 添加了函数以允许访问每线程保护标志。

(BZ#1304448)

elfutils 已更新至0.174版

在Red Hat Enterprise Linux 8中 的elfutils 软件包的版本号为0.174。值得注意的变化包括:

  • 以前, eu-readelf 工具可以显示具有负值的变量,就好像它具有较大的无符号值,或者将大的无符号值显示为负值。这已得到纠正 eu-readelf 现在查找常量值类型的大小和符号以正确显示它们。
  • 一个新功能 dwarf_next_lines() 阅读 .debug_line 缺少CU的数据已被添加到 libdw 图书馆。此功能可用作替代 dwarf_getsrclines()dwarf_getsrcfiles() 功能。
  • 以前,超过65280节的文件可能会导致错误 了libelflibdw 库和使用它们的所有工具。此错误已得到修复。结果,延长了 shnumshstrndx 正确处理ELF文件头中的值。

(BZ#1641007)

Valgrind已更新至3.14版

Red Hat Enterprise Linux 8随Valgrind可执行代码分析工具3.14版一起发布。值得注意的变化包括:

  • 一个新的 --keep-debuginfo 已添加选项以保留已卸载代码的调试信息。因此,保存的堆栈跟踪可以包含内存中不再存在的代码的文件和行信息。
  • 已添加基于源文件名和行号的抑制。
  • Helgrind 工具已经扩展了一个选项 --delta-stacktrace 指定完整历史堆栈跟踪的计算。值得注意的是,与此一起使用此选项 --history-level=full 可以改善 Helgrind 性能高达25%。
  • 假阳性率 Memcheck 用于优化英特尔和AMD 64位架构和ARM 64位架构代码的工具已经减少。请注意,您可以使用 --expensive-definedness-checks 控制定义检查的处理并以牺牲性能为代价来提高速率。
  • Valgrind现在可以识别IBM Power Systems的little-endian变体的更多指令。
  • Valgrind现在可以部分处理IBM Z体系结构z13处理器的整数和字符串向量指令。

有关新选项及其已知限制的详细信息,请参阅 valgrind(1) 手册页。

(BZ#1641029, BZ#1501419)

GDB版本8.2

Red Hat Enterprise Linux 8随GDB调试器版本8.2一起发布。值得注意的变化包括:

  • 支持IPv6协议进行GDB和GDB的远程调试 gdbserver
  • 没有调试信息的调试已得到改进。
  • GDB用户界面中的符号完成已得到改进,通过使用更多语法结构(如ABI标记或命名空间)提供更好的建议。
  • 命令现在可以在后台执行。
  • 现在可以使用Rust编程语言创建调试程序。
  • 调试C和C ++语言已得到改进,解析器支持 _Alignofalignof 运算符,C ++右值引用和C99可变长度自动数组。
  • GDB扩展脚本现在可以使用Guile脚本语言。
  • 扩展的Python脚本语言接口已经通过新的API函数,框架装饰器,过滤器和展开器进行了改进。另外,脚本在 .debug_gdb_scripts GDB配置部分自动加载。
  • GDB现在使用Python版本3来运行其脚本,包括漂亮的打印机,帧装饰器,过滤器和展开器。
  • ARM和64位ARM体系结构已通过流程执行记录和重放进行了改进,包括Thumb 32位和系统调用指令。
  • 增加了对英特尔MPX寄存器和绑定违规,PKU寄存器和英特尔处理器跟踪的支持。
  • 记录和重播功能已扩展到包括 rdrandrdseed 有关基于Intel的系统的说明。
  • GDB在IBM Z体系结构上的功能已得到扩展,支持跟踪点和快速跟踪点,向量寄存器和ABI,以及 Catch 系统调用。此外,GDB现在支持该架构的最新指令。
  • GDB现在可以在64位ARM体系结构上使用SystemTap静态用户空间探测器(SDT)。

(BZ#1641022, BZ#1497096, BZ#1505346, BZ#1592332)

RHEL的本地化分布在多个包中

在RHEL 8中,单一不再提供语言环境和翻译 glibc-common 包。相反,每个语言环境和语言都可用 glibc-langpack-CODE 包。此外,默认情况下不会安装所有语言环境,只会在安装程序中选择这些语言环境。用户必须单独安装所需的所有其他语言环境包。

有关使用langpacks的更多信息,请参阅 Installing and using langpacks

(BZ#1512009)

strace 已更新至4.24版

Red Hat Enterprise Linux 8随附了 strace 工具版本4.24。值得注意的变化包括:

  • 系统调用篡改功能已添加 -e inject= 选项。这包括注入错误,返回值,延迟和信号。
  • 系统调用资格已得到改进:

    • 一个 -e trace=/regex 已添加选项以使用正则表达式过滤系统调用。
    • 将问号添加到系统调用资格中 -e trace= 选项让 strace 即使资格与任何系统调用都不匹配,也要继续。
    • 个性化指定已被添加到系统调用资格中 -e trace 选项。
  • 解码 kvm vcpu 退出原因已被添加。为此,请使用 -e kvm=vcpu 选项。
  • libdw 库现在用于堆栈展开时 -k 使用选项。此外,当符号消除时,符号消除是可能的 libiberty 库已安装在系统上。
  • 以前, -r 选项造成的 strace 忽略了 -t 选项。这已经修复,现在两个选项是独立的。
  • 添加了[option]`-A选项,用于在追加模式下打开输出文件。
  • -X 已添加选项以进行配置 xlat 输出格式。
  • 使用。解码套接字地址 -yy 选项已得到改进。另外,打印块和字符设备号 -yy 模式已添加。

此外,还添加,改进或更新了以下项目的解码:

  • netlink 协议,消息和属性
  • arch_prctlbpf, ,getsockopt, ,io_pgetevent, ,kern_features, ,keyctl, ,prctl, ,pkey_alloc, ,pkey_free, ,pkey_mprotect, ,ptrace, ,rseq, ,setsockopt, ,socket, ,statx 和其他系统调用
  • 很多命令 ioctl 系统调用
  • 各种常数
  • 路径追踪 execveat, ,inotify_add_watch, ,inotify_init, ,select, ,symlink, ,symlinkat 系统调用和 mmap 系统调用间接参数
  • 特定于ARM体系结构的系统调用 __ARM_NR_*
  • 信号代码列表

(BZ#1641014)


为了尽快向用户提供最新的信息,本文档可能会包括由机器自动从英文原文翻译的内容。如需更多信息,请参阅此说明。