해결된 질문
24.06.22 22:54 작성
·
187
·
수정됨
2
윈도우에서는 shaderc를 빌드하려고 하면
unknown command: "create
make: *** [Android.mk:77: obj/local/arm64-v8a/libshaderc_combined.a] Error 1
라면서 오류가 발생합니다.
이를 해결하기 위해서는 Android.mk
에서 45~51번째 줄을 아래 링크에서 제공하는 코드로 수정이 필요합니다.
[Bug]: llvm-ar.exe error "unknown command" · Issue #1815 · android/ndk (github.com)
또한, CMakeLists
에서도 빌드 명령에서 APP_STL:=<stl_version>에 무엇을 넣느냐에 따라서 libshaderc.a
의 경로가 달라지기 때문에 수정이 필요할 수 있습니다.
저는 뭘 넣어야 할지 몰라서 c++_shared
를 사용했는데, 그러면, c++_shared라는 이름으로 폴더 이름이 만들어져 libshaderc.a를 링크하는 부분을 system에서 c++_shared로 변경해야합니다.
답변 3
1
2024. 06. 23. 09:34
윈도우즈에서 shaderc 빌드 에러와 해결법을 공유해주셔서 감사합니다. APP_STL의 경우 따로 명시하지 않으면 system으로 설정됩니다. 강의에서 제가 사용한 명령어는 아래와 같습니다.
$ ../../../ndk-build NDK_PROJECT_PATH=. APP_BUILD_SCRIPT=Android.mk \
APP_ABI=all libshaderc_combined
0
[x86] Compile++ : SPIRV-Tools-opt <= scalar_analysis.cpp
[x86] Compile++ : SPIRV-Tools-opt <= scalar_analysis_simplification.cpp
[x86] Compile++ : SPIRV-Tools-opt <= scalar_replacement_pass.cpp
[x86] Compile++ : SPIRV-Tools-opt <= set_spec_constant_default_value_pass.cpp
[x86] Compile++ : SPIRV-Tools-opt <= simplification_pass.cpp
[x86] Compile++ : SPIRV-Tools-opt <= spread_volatile_semantics.cpp
[x86] Compile++ : SPIRV-Tools-opt <= ssa_rewrite_pass.cpp
[x86] Compile++ : SPIRV-Tools-opt <= strength_reduction_pass.cpp
[x86] Compile++ : SPIRV-Tools-opt <= strip_debug_info_pass.cpp
[x86] Compile++ : SPIRV-Tools-opt <= strip_nonsemantic_info_pass.cpp
[x86] Compile++ : SPIRV-Tools-opt <= struct_cfg_analysis.cpp
[x86] Compile++ : SPIRV-Tools-opt <= type_manager.cpp
[x86] Compile++ : SPIRV-Tools-opt <= types.cpp
[x86] Compile++ : SPIRV-Tools-opt <= unify_const_pass.cpp
[x86] Compile++ : SPIRV-Tools-opt <= upgrade_memory_model.cpp
[x86] Compile++ : SPIRV-Tools-opt <= value_number_table.cpp
[x86] Compile++ : SPIRV-Tools-opt <= vector_dce.cpp
[x86] Compile++ : SPIRV-Tools-opt <= workaround1209.cpp
[x86] Compile++ : SPIRV-Tools-opt <= wrap_opkill.cpp
[x86] StaticLibrary : libSPIRV-Tools-opt.a
"[x86] Combine: libshaderc_combined.a <= libglslang.a libOGLCompiler.a libOSDependent.a libshaderc.a libshaderc_util.a libSPIRV.a libHLSL.a libSPIRV-Tools.a libSPIRV-Tools-opt.a"
md ".\libs\system\x86" >NUL 2>NUL || rem
copy /b/y ".\obj\local\x86\libshaderc_combined.a " ".\libs\system\x86\libshaderc.a" > NUL
윈도우즈 에서는 shaderc 빌드 완료하면 이런 로그가 나옵니다. 에러인줄 알았는데 정상적으로 빌드된 거네요;
2024. 07. 30. 18:51
윈도우 환경이 없어 확인해보지 못했지만 공식 문서에 따르면 설정된 ndk 폴더 아래에 있습니다. 아니면 https://github.com/google/shaderc 에서 다운받으셔서 빌드하셔도 됩니다.