gpt4 book ai didi

c++ - 为 iOS 成功构建后没有 libclang.a?

转载 作者:太空狗 更新时间:2023-10-29 20:37:54 25 4
gpt4 key购买 nike

我已经提取了 3.7 版本的官方 llvm/clang 源代码,做了一些小补丁(NSGetEnviron()),使用 cmake 为 iOS 配置和构建:

cmake ../llvm_37_ios \
-DCMAKE_INSTALL_PREFIX=/Volumes/Transcend/dev/src/llvm_37_ios_armv7_installed \
-DLLVM_ENABLE_TERMINFO=OFF \
-DLLVM_ENABLE_THREADS=OFF \
-DCMAKE_OSX_SYSROOT=/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk \
-DCMAKE_C_FLAGS="-stdlib=libc++ -arch armv7 -mios-version-min=8.0 -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk" \
-DCMAKE_CXX_FLAGS="-stdlib=libc++ -arch armv7 -mios-version-min=8.0 -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk" \
-DCMAKE_CROSSCOMPILING=True \
-DLLVM_TABLEGEN=/Volumes/Transcend/dev/src/llvm_37_local_build/bin/llvm-tblgen \
-DCLANG_TABLEGEN=/Volumes/Transcend/dev/src/llvm_37_local_build/bin/clang-tblgen \
-DCMAKE_BUILD_TYPE=Release \
-DLLVM_TARGETS_TO_BUILD="ARM;X86"

但是我没有找到 libclang.a 但找到了另一个 libclang*.a 库:

MBA-Anton:llvm_37_ios_armv7_build asmirnov$ find . -name "libclang.a"
MBA-Anton:llvm_37_ios_armv7_build asmirnov$ find . -name "libclang*.a"
./lib/libclangBasic.a
./lib/libclangLex.a
./lib/libclangASTMatchers.a
./lib/libclangParse.a
./lib/libclangDynamicASTMatchers.a
./lib/libclangAnalysis.a
./lib/libclangEdit.a
./lib/libclangRewrite.a
./lib/libclangAST.a
./lib/libclangDriver.a
./lib/libclangCodeGen.a
./lib/libclangSerialization.a
./lib/libclangRewriteFrontend.a
./lib/libclangSema.a
./lib/libclangFrontendTool.a
./lib/libclangARCMigrate.a
./lib/libclangToolingCore.a
./lib/libclangFrontend.a
./lib/libclangIndex.a
./lib/libclangTooling.a
./lib/libclangFormat.a
./lib/libclangStaticAnalyzerFrontend.a
./lib/libclangStaticAnalyzerCore.a
./lib/libclangStaticAnalyzerCheckers.a

出于某种原因创建了共享库,但没有创建静态库:

Linking CXX executable ../../../../bin/clang
[ 98%] Building CXX object tools/clang/tools/libclang/CMakeFiles/libclang.dir/CIndexDiagnostic.cpp.o
[ 98%] Building CXX object tools/clang/tools/libclang/CMakeFiles/libclang.dir/CIndexHigh.cpp.o
[ 98%] Built target clang
[ 98%] Building CXX object tools/clang/tools/libclang/CMakeFiles/libclang.dir/CIndexInclusionStack.cpp.o
[ 98%] Building CXX object tools/clang/tools/libclang/CMakeFiles/libclang.dir/CIndexUSRs.cpp.o
[ 98%] Building CXX object tools/clang/tools/libclang/CMakeFiles/libclang.dir/CIndexer.cpp.o
[ 98%] Building CXX object tools/clang/tools/libclang/CMakeFiles/libclang.dir/CXComment.cpp.o
[ 98%] Building CXX object tools/clang/tools/libclang/CMakeFiles/libclang.dir/CXCursor.cpp.o
[ 98%] Building CXX object tools/clang/tools/libclang/CMakeFiles/libclang.dir/CXCompilationDatabase.cpp.o
[ 98%] Building CXX object tools/clang/tools/libclang/CMakeFiles/libclang.dir/CXLoadedDiagnostic.cpp.o
[100%] Building CXX object tools/clang/tools/libclang/CMakeFiles/libclang.dir/CXSourceLocation.cpp.o
[100%] Building CXX object tools/clang/tools/libclang/CMakeFiles/libclang.dir/CXStoredDiagnostic.cpp.o
[100%] Building CXX object tools/clang/tools/libclang/CMakeFiles/libclang.dir/CXString.cpp.o
[100%] Building CXX object tools/clang/tools/libclang/CMakeFiles/libclang.dir/CXType.cpp.o
[100%] Building CXX object tools/clang/tools/libclang/CMakeFiles/libclang.dir/IndexBody.cpp.o
[100%] Building CXX object tools/clang/tools/libclang/CMakeFiles/libclang.dir/IndexDecl.cpp.o
[100%] Building CXX object tools/clang/tools/libclang/CMakeFiles/libclang.dir/IndexTypeSourceInfo.cpp.o
[100%] Building CXX object tools/clang/tools/libclang/CMakeFiles/libclang.dir/Indexing.cpp.o
[100%] Building CXX object tools/clang/tools/libclang/CMakeFiles/libclang.dir/IndexingContext.cpp.o
Linking CXX shared library ../../../../lib/libclang.dylib
[100%] Built target libclang

我是不是遗漏了什么或者是 clang 配置错误?

最佳答案

libclang 默认构建为共享库,因为它使用 FFI 简化了其他语言(例如 Python)的使用。或类似机制。

要构建静态库,请使用 LIBCLANG_BUILD_STATICclang/tools/libclang/CMakeLists.txt 中定义的 CMake 选项:

option(LIBCLANG_BUILD_STATIC
"Build libclang as a static library (in addition to a shared one)" OFF)

您可以按如下方式使用它:

cmake -DLIBCLANG_BUILD_STATIC=ON ...

关于c++ - 为 iOS 成功构建后没有 libclang.a?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33338682/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com