2.4. Red Hat Developer Toolset 中的 GCC 的具体信息


库的静态链接

某些最新的库功能被静态链接到使用 Red Hat Developer Toolset 构建的应用程序,以支持在多个 Red Hat Enterprise Linux 版本上执行。这会产生一个小的安全风险,因为标准的 Red Hat Enterprise Linux 勘误不会改变这个代码。如果因这个风险开发人员需要重建其应用程序,红帽将使用一个安全勘表进行沟通。

重要

由于这个额外的安全风险,强烈建议开发人员不要静态地将整个应用程序链接在一起。

在进行链接时,在对象文件后指定库

在 Red Hat Developer Toolset 中,库使用 linker 脚本链接,这些脚本可以通过静态存档指定一些符号。这需要确保与多个 Red Hat Enterprise Linux 版本兼容。但是,链接器脚本使用对应的共享对象文件的名称。因此,linker 使用不同于预期的符号处理规则,在指定程序库选项前不识别对象文件所需的符号:

$ scl enable devtoolset-11 'gcc -lsomelib objfile.o'
Copy to Clipboard Toggle word wrap

以这种方式使用 Red Hat Developer Toolset 中的库会导致 linker 错误消息 undefined reference to symbol。要防止这个问题,请按照标准链接实践操作,并在指定对象文件的选项后添加库:

$ scl enable devtoolset-11 'gcc objfile.o -lsomelib'
Copy to Clipboard Toggle word wrap

请注意,这个建议也适用于使用 GCC 的基本 Red Hat Enterprise Linux 版本。

返回顶部
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。 了解我们当前的更新.

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

Theme

© 2025 Red Hat