Merge branch 'refactor/ldgen' into 'master'
refactor: ldgen Closes IDF-605 and IDFGH-6271 See merge request espressif/esp-idf!16509
This commit is contained in:
@@ -24,16 +24,16 @@
|
||||
|
||||
假设用户有::
|
||||
|
||||
- components/
|
||||
- my_component/
|
||||
- CMakeLists.txt
|
||||
- component.mk
|
||||
- Kconfig
|
||||
- src/
|
||||
- my_src1.c
|
||||
- my_src2.c
|
||||
- my_src3.c
|
||||
- my_linker_fragment_file.lf
|
||||
component
|
||||
└── my_component
|
||||
└── CMakeLists.txt
|
||||
├── component.mk
|
||||
├── Kconfig
|
||||
├── src/
|
||||
│ ├── my_src1.c
|
||||
│ ├── my_src2.c
|
||||
│ └── my_src3.c
|
||||
└── my_linker_fragment_file.lf
|
||||
|
||||
- 名为 ``my_component`` 的组件,在构建过程中存储为 ``libmy_component.a`` 库文件
|
||||
- 库文件包含的三个源文件:``my_src1.c``、``my_src2.c`` 和 ``my_src3.c``,编译后分别为 ``my_src1.o``、``my_src2.o`` 和 ``my_src3.o``
|
||||
@@ -125,6 +125,8 @@
|
||||
entries:
|
||||
* (rtc)
|
||||
|
||||
.. _ldgen-conditional-placements :
|
||||
|
||||
根据具体配置存放
|
||||
""""""""""""""""""""
|
||||
|
||||
@@ -225,6 +227,9 @@
|
||||
- 名称:片段名称,指定片段类型的片段名称应唯一。
|
||||
- 键值:片段内容。每个片段类型可支持不同的键值和不同的键值语法。
|
||||
|
||||
- 在 ``段`` 和 ``协议`` 中,仅支持 ``entries`` 键。
|
||||
- 在 ``映射`` 中,键支持 ``archive`` 和 ``entries``。
|
||||
|
||||
.. note::
|
||||
|
||||
多个片段的类型和名称相同时会引发异常。
|
||||
@@ -286,24 +291,10 @@
|
||||
key_2:
|
||||
value_b
|
||||
|
||||
|
||||
**注释**
|
||||
|
||||
链接器片段文件中的注释以 ``#`` 开头。和在其他语言中一样,注释提供了有用的描述和资料,在处理过程中会被忽略。
|
||||
|
||||
与 ESP-IDF v3.x 链接器脚本片段文件兼容
|
||||
""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
|
||||
|
||||
ESP-IDF v4.0 变更了链接器脚本片段文件使用的一些语法:
|
||||
|
||||
- 必须缩进,缩进不当的文件会产生解析异常;旧版本不强制缩进,但之前的文档和示例均遵循了正确的缩进语法
|
||||
- 条件改用 ``if...elif...else`` 结构,可以嵌套检查,将完整片段置于条件内
|
||||
- 映射片段和其他片段类型一样,需有名称
|
||||
|
||||
链接器脚本生成器可解析 ESP-IDF v3.x 版本中缩进正确的链接器片段文件(如 ESP-IDF v3.x 版本中的本文件所示),依然可以向后兼容此前的映射片段语法(可选名称和条件的旧语法),但是会有弃用警告。用户应换成本文档介绍的新语法,因为旧语法将在未来停用。
|
||||
|
||||
请注意,ESP-IDF v3.x 不支持使用 ESP-IDF v4.0 新语法的链接器片段文件。
|
||||
|
||||
类型
|
||||
"""""""
|
||||
|
||||
@@ -608,3 +599,14 @@ ESP-IDF v4.0 变更了链接器脚本片段文件使用的一些语法:
|
||||
这是根据默认协议条目 ``iram -> iram0_text`` 生成的规则。默认协议指定了 ``iram -> iram0_text`` 条目,因此生成的规则同样也放在被 ``iram0_text`` 标记的地方。由于该规则是根据默认协议生成的,因此在同一目标下收集的所有规则下排在第一位。
|
||||
|
||||
目前使用的链接器脚本模板是 :component_file:`esp_system/ld/{IDF_TARGET_PATH_NAME}/sections.ld.in`,生成的脚本存放在构建目录下。
|
||||
|
||||
.. _ldgen-migrate-lf-grammar :
|
||||
|
||||
将链接器脚本片段文件语法迁移至 ESP-IDF v5.0 适应版本
|
||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
ESP-IDF v5.0 中将不再支持 ESP-IDF v3.x 中链接器脚本片段文件的旧式语法。在迁移的过程中需注意以下几点:
|
||||
|
||||
- 必须缩进,缩进不当的文件会产生解析异常;旧版本不强制缩进,但之前的文档和示例均遵循了正确的缩进语法
|
||||
- 条件改用 ``if...elif...else`` 结构,可以参照 :ref:`之前的章节<ldgen-conditional-placements>`
|
||||
- 映射片段和其他片段类型一样,需有名称
|
||||
|
||||
Reference in New Issue
Block a user