clang_complete插件所需的libclang 的编译

gcc 4.8.x 的编译
====
llvm 用gcc4.1编不过,需要4.8以上的,如果没有可以参照http://www.linuxfromscratch.org/blfs/view/stable/general/gcc.html来编。

libclang.so 的编译
====
cd ~
svn co http://llvm.org/svn/llvm-project/llvm/trunk llvm
cd ~/llvm/tools
svn co http://llvm.org/svn/llvm-project/cfe/trunk clang
cd ~/llvm/projects
svn co http://llvm.org/svn/llvm-project/compiler-rt/trunk compiler-rt

mkdir build && cd build
export CFLAGS='-fPIC'
export LDFLAGS='-fPIC'
export CPPFLAGS='-fPIC'
export CXXFLAGS='-fPIC'
../llvm/configure --prefix=$HOME/tools \
--disable-docs --enable-optimized --disable-assertions --enable-targets=x86,x86_64  \
--with-gcc-toolchain=$HOME/tools \
--with-extra-ld-options=-Wl,-R,$HOME/tools/lib64 \

make -j16
make VERBOSE=1 查看编译参数,适当修改Makefile.config
我编译出现projects/compiler-rt/lib/sanitizer_common下面编不过。
我#if 0暂时规避了。不知道把上层subdirs += sanitizer_common 有什么影响。
windows mingw 编译请参考[1]。
windows 上我编译花了很长时间, linux 服务器16核马力全开,也花了半个小时。

把clang_complete 放到bundle 下面就可以用了,
这时编辑一个cpp文件,出现
WARNING: libclang can not find the builtin includes
--with-c-include-dirs 就是为了避免这种情况。
但是我发现加了编译不过,按[1]的修改源码也不行,
正解是修改 plugin/libclang.py 的 getBuiltinHeaderPath[2]

[1] http://blog.wwang.me/2013/12/ycm-with-clang-on-windows.html
[2] https://github.com/Rip-Rip/clang_complete/issues/238
[3] neocomplete 和YCM的比较: https://github.com/skwp/dotfiles/issues/330



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
如果你已经在系统中安装了 CLANG,但是在 QT 静态编译时仍然提示找不到 libclang,这可能是因为 QT 的 configure 脚本没有正确地检测到 CLANG 的信息。 你可以尝试在编译 QT 之前设置以下环境变量: ``` export LLVM_INSTALL_DIR=/path/to/clang/installation export LLVM_LIBS_DIR=$LLVM_INSTALL_DIR/lib export LLVM_INCLUDE_DIR=$LLVM_INSTALL_DIR/include ``` 其中,/path/to/clang/installation 是 CLANG 的安装路径。 然后,在编译 QT 之前,执行以下命令: ``` ./configure -static -prefix /path/to/qt/installation -opensource -confirm-license -nomake examples -nomake tests -skip qtwebengine -skip qtandroidextras -skip qtmacextras -skip qtpurchasing -skip qtquickcontrols2 -skip qtwebview -no-pch -no-icu -no-cups -no-dbus -no-glib -no-harfbuzz -no-sql-mysql -no-sql-psql -no-sql-sqlite -no-xcb -no-opengl -no-feature-relocatable -no-feature-process -no-feature-shared -no-feature-dynamic -no-feature-ssl -no-openssl -no-system-proxies -no-pulseaudio -no-gtk -no-iconv -no-sse2 -no-avx -no-avx2 -no-ssse3 -no-sse4.1 -no-sse4.2 -no-avx512f -no-avx512bw -no-avx512cd -no-avx512dq -no-avx512er -no-avx512ifma -no-avx512pf -no-avx512vbmi -no-avx512vl -no-avx512vpopcntdq -no-avx5124fmaps -no-avx5124vnniw -no-avx512bitalg -no-avx512vnni -no-avx512vbmi2 -no-avx512bf16 -no-avx512fp16 ``` 这个 configure 命令会禁用 QT 中的一些功能,以避免与 CLANG 的冲突。其中,-no-feature-shared 和 -no-feature-dynamic 选项会禁用 QT 的共享库和动态库功能,以确保 QT 静态编译后不依赖于系统中的任何共享库。 如果仍然提示找不到 libclang,可以在 configure 命令中添加 --verbose 参数,查看 QT 配置过程中的详细信息,以确定问题所在。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值