已合并
Fix ASC sim shared library link paths #4029
jianwei10创建于 7月6日
Fix ASC sim shared library link paths #4029
已合并
jianwei10创建于 7月6日
共 1 个文件变更+7-2
@@ -181,8 +181,13 @@ if(CMAKE_ASC_RUN_MODE STREQUAL "sim")
181 math(EXPR _val_index "${_index} + 1")181 math(EXPR _val_index "${_index} + 1")
182 list(GET _ARCH_TO_DIR_MAP ${_val_index} _ASC_INTERNAL_DIR)182 list(GET _ARCH_TO_DIR_MAP ${_val_index} _ASC_INTERNAL_DIR)
183 set(_ASC_SIM_PATH "$ENV{ASCEND_HOME_PATH}/tools/simulator/${_ASC_INTERNAL_DIR}/lib")183 set(_ASC_SIM_PATH "$ENV{ASCEND_HOME_PATH}/tools/simulator/${_ASC_INTERNAL_DIR}/lib")
184- string(APPEND CMAKE_ASC_LINK_FLAGS " -Wl,-rpath,${_ASC_SIM_PATH} -Wl,-L${_ASC_SIM_PATH} -Wl,--disable-new-dtags")184+ link_libraries(
185- link_libraries(runtime_camodel npu_drv_camodel)185+ -Wl,-rpath,${_ASC_SIM_PATH}
186+ -Wl,-L${_ASC_SIM_PATH}
187+ -Wl,--disable-new-dtags
188+ runtime_camodel
189+ npu_drv_camodel
190+ )
atomgit-bot
atomgit-botatomgit-bot7月6日

🟡 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 行)。

受影响行为/契约:

  1. CMAKE_ASC_LINK_FLAGS 变量在 ASC 可执行文件链接规则(第 142 行)中通过 <CMAKE_ASC_LINK_FLAGS> 占位符被引用,位于 <OBJECTS> 之前。旧代码会将 -Wl,-rpath,...、-Wl,-L...、-Wl,--disable-new-dtags 注入到该位置。
  2. 新代码将这些标志全部移到了 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() 限定作用域。

likedislike
不准确?
186 message(STATUS "ASC Simulator enabled: ${_ASC_SIM_PATH}")191 message(STATUS "ASC Simulator enabled: ${_ASC_SIM_PATH}")
187 else()192 else()
188 message(FATAL_ERROR "Unsupported ASC architecture for simulator: ${CMAKE_ASC_ARCHITECTURES}")193 message(FATAL_ERROR "Unsupported ASC architecture for simulator: ${CMAKE_ASC_ARCHITECTURES}")