Pull Request已成功合入, 合并人@CANN-robot
(感谢 jianwei10 的贡献)Thanks for your pull-request.
The full list of commands accepted by me can be found at here。
You can get sig-info at here
PR Approval Progress
✅ Congratulations! All modules have met the lgtm and approve requirements.
Module Approval Details
| module | lgtm status | approve status |
|---|---|---|
| ** | ✅ 诸葛洵, chenyiyuan, gcw_kUomxQ2l (3/2) | ✅ gcw_kUomxQ2l (1/1) |
💡 Tip:
- Committer can comment
/approveor/lgtm- Commenting
/approveimplies both code review (lgtm) and intent to merge (approve)
CLA Signature Pass
Geminiver, thanks for your pull request. All authors of the commits have signed the CLA. 👍


compile


流水线任务触发成功
任务链接 [c9ea3bd894734676ad0441e6fda21986][流水线指导]
| 任务名称 | 状态 | 日志 | 下载链接 |
|---|---|---|---|
| SCA | ✅ SUCCESS | >>>>> | |
| antipoison | ✅ SUCCESS | >>>>> | |
| codecheck | ✅ SUCCESS | >>>>> | |
| codecheck_Pr | ✅ SUCCESS | ||
| pre_comment | ✅ SUCCESS | >>>>> | |
| StaticCheck_codespell_check | ✅ SUCCESS | ||
| StaticCheck_link_validity_check | ✅ SUCCESS | ||
| StaticCheck_resource_existence_check | ✅ SUCCESS | ||
| StaticCheck_tag_closed_check | ✅ SUCCESS | ||
| StaticCheck_markdownlint | ✅ SUCCESS | ||
| codecheck_codestyle | ✅ SUCCESS | >>>>> | |
| codecheck_precommit | ✅ SUCCESS | >>>>> | >>>>> |
[2026-07-06 11:48:02] CI执行结束


流水线任务触发成功
任务链接 [5fef400fbbdf4f5f8154285f594e5df7][流水线指导]
| 任务名称 | 状态 | 日志 | 下载链接 |
|---|---|---|---|
| pre_comment | ✅ SUCCESS | >>>>> | |
| UT_Test_adv_test_one | ✅ SUCCESS | ||
| UT_Test_adv_test_two | ✅ SUCCESS | ||
| UT_Test_basic_test_two | ✅ SUCCESS | ||
| UT_Test_basic_test_three | ✅ SUCCESS | ||
| UT_Test_basic_test_four | ✅ SUCCESS | ||
| UT_Test_basic_test_five | ✅ SUCCESS | ||
| UT_Test_arm | ✅ SUCCESS | ||
| UT_Test_report | ✅ SUCCESS | >>>>> |
[2026-07-06 11:55:04] CI执行结束


Geminiver,感谢您的提交,建议在完成PR充分自验证后,再触发线上构建任务。
若您的PR已具备检视条件,可根据下表的责任田,@对应的committer进行代码检视,我们会在第一时间对您的提交进行处理。
代码责任田:
| module | committer |
|---|---|
| adv_api | chenyiyuan, wuyang_hw |
| basic_api | chenyiyuan, wuyang_hw |
| c_api | pangfd, yue_mo_du_qian |
| cmake | xun_zhuge, DragonBornHD84 |
| docs | munanhw, ai_xin |
| examples | changxianyu, bianque |
| simt_api | wulinyu, zhanghao_0689 |
| scripts | xun_zhuge, kevin365 |
| tools | YANXI_ZHAO, XuebinYang, sjtulxh |
💡 如您不确定可以@谁,可以直接@我或者ascend-c sig的maintainer,xun_zhuge和ascendhjh,我们会为您分配合适的committer进行代码检视。
再次感谢您参与CANN的社区贡献。


/lgtm
/approve


/lgtm
/approve


变更摘要
此 PR 修复了 ASC 模拟器模式下共享库链接路径未正确生效的问题。在 CMake 中,原先通过 CMAKE_ASC_LINK_FLAGS 变量追加 -Wl,-rpath、-Wl,-L 等链接器标志,再单独调用 link_libraries 链接 runtime_camodel 和 npu_drv_camodel 库。该方式可能导致链接标志无法正确传递给链接器。本次改动将这些链接器标志直接移入 link_libraries() 调用中,确保模拟器路径与依赖库同时被正确链接。
主要改动
- 将链接器标志从
CMAKE_ASC_LINK_FLAGS移至link_libraries:原先使用string(APPEND CMAKE_ASC_LINK_FLAGS ...)追加-Wl,-rpath、-Wl,-L、-Wl,--disable-new-dtags等标志,现改为直接将这些标志作为link_libraries()的参数,与runtime_camodel、npu_drv_camodel库一同传递给链接器。 - 移除对
CMAKE_ASC_LINK_FLAGS的追加操作:删除了string(APPEND CMAKE_ASC_LINK_FLAGS ...)这行,不再依赖全局链接标志变量来设置模拟器库路径。


代码审查
经过对 diff 和周围代码的全面审查,我确认此更改是正确的:
变更分析:
-
移除的行 (
string(APPEND CMAKE_ASC_LINK_FLAGS ...)):将-Wl,-rpath,...、-Wl,-L...、-Wl,--disable-new-dtags这些链接器标志从CMAKE_ASC_LINK_FLAGS变量中移除。 -
新增的行 (扩展
link_libraries()):将上述链接器标志和原有的runtime_camodel/npu_drv_camodel库都通过link_libraries()传递。
为什么这是正确的:
-
CMAKE_ASC_LINK_FLAGS仅在CMAKE_ASC_LINK_EXECUTABLE(可执行文件链接规则,第142行)中被消费。而CMAKE_ASC_CREATE_SHARED_LIBRARY(共享库链接规则,第147-151行)中没有<CMAKE_ASC_LINK_FLAGS>占位符。这意味着旧代码中,这些链接器标志仅对可执行文件生效,对共享库无效。 -
新代码将标志移至
link_libraries(),其内容会填充到<LINK_LIBRARIES>占位符中——该占位符同时存在于可执行文件和共享库的链接规则中。这与 PR 标题 "Fix ASC sim shared library link paths" 完全吻合。 -
所有被移动的标志均为
-Wl,...格式的链接器透传标志,在链接命令行中的位置(<OBJECTS>之前或之后)不影响其功能。 -
此模式与同一文件中
cpu模式(第231-260行)已有的做法完全一致,确保了代码风格统一。 -
CMAKE_ASC_LINK_FLAGS变量在项目其他地方无外部引用(仅在本文件第142行和第228行使用),移除对 sim 模式的追加操作不会影响其他模块。
结论:此文件无问题。
审查总结:
- 已审查文件:
cmake/asc/asc_modules/CMakeASCInformation.cmake— 无问题 - 发现数量:0
- 整体风险判断:此变更是安全的修复,将 sim 模式的链接路径标志从仅影响可执行文件扩展为同时影响共享库,与 cpu 模式保持一致,无回归风险。
| 类型 | 数量 |
|---|---|
| 🔴 阻塞 | 0 |
| 🟡 建议 | 1 |
💬 仅评论


🟡 Medium Priority
变更行:删除了原来的第 184 行 string(APPEND CMAKE_ASC_LINK_FLAGS " -Wl,-rpath,${_ASC_SIM_PATH} -Wl,-L${_ASC_SIM_PATH} -Wl,--disable-new-dtags"),并将这些链接器标志移入 link_libraries() 调用(新第 184-190 行)。
受影响行为/契约:
CMAKE_ASC_LINK_FLAGS变量在 ASC 可执行文件链接规则(第 142 行)中通过<CMAKE_ASC_LINK_FLAGS>占位符被引用,位于<OBJECTS>之前。旧代码会将-Wl,-rpath,...、-Wl,-L...、-Wl,--disable-new-dtags注入到该位置。- 新代码将这些标志全部移到了
link_libraries()中,它们会出现在链接命令的<LINK_LIBRARIES>位置(位于<OBJECTS>之后),且作用域变为全局(影响当前目录及子目录下所有后续目标,而非仅限于 ASC 目标)。
失败模式:
--disable-new-dtags在命令行中的位置发生了改变(从 objects 之前变为之后)。对于某些链接器,该选项需要在目标文件之前指定才能生效。
建议:恢复 string(APPEND CMAKE_ASC_LINK_FLAGS ...) 行以保持链接标志在 ASC 链接规则中的正确位置和作用域。至少应将 -Wl,--disable-new-dtags 放回 CMAKE_ASC_LINK_FLAGS(与 cpu 模式一致)。同时评估 -Wl,-rpath,... 和 -Wl,-L... 是否确实需要全局生效;如果不需要,也应移回 CMAKE_ASC_LINK_FLAGS 或改用 target_link_options() 限定作用域。


/approve


描述
修复在编动态库场景下,仿真库链接失效的情况
关联的Issue
测试
文档更新
类型标签