国产系统 统信 uos20 飞腾CPU Clang13源码编译 安装适配qt5.15
系统信息
源码下载
git clone https://github.com/llvm/llvm-project
官方说明
Build LLVM and Clang:
cd llvm-project
mkdir build (in-tree build is not supported)
cd build
cmake -DLLVM_ENABLE_PROJECTS=clang -G "Unix Makefiles" ../llvm
make
This builds both LLVM and Clang for debug mode.
Note: For subsequent Clang development, you can just run make clang.
CMake allows you to generate project files for several IDEs: Xcode, Eclipse CDT4, CodeBlocks, Qt-Creator (use the CodeBlocks generator), KDevelop3. For more details see Building LLVM with CMake page.
编译
#进入源码目录
cd llvm-project
#创建目录
mkdir build
#进入构建目录
cd build
#cmake 加上 -DCMAKE_BUILD_TYPE=Release 参数
cmake -DLLVM_ENABLE_PROJECTS=clang -G "Unix Makefiles" -DCMAKE_BUILD_TYPE=Release ../llvm
#编译
make -j4
#安装
sudo make install
#检查版本 clang -v
user@user-PC:~/clang/llvm-project/build$ clang -v
clang version 13.0.0 (https://github.com/llvm/llvm-project.git 99951aa68da3c85ba03edf977cd9b22458aae6ca)
Target: aarch64-unknown-linux-gnu
Thread model: posix
InstalledDir: /usr/local/bin
Found candidate GCC installation: /usr/lib/gcc/aarch64-linux-gnu/8
Selected GCC installation: /usr/lib/gcc/aarch64-linux-gnu/8
Candidate multilib: .;@m64
Selected multilib: .;@m64
构建目录大小4.1个g
配置qt
安装成功后 qt creator 已经检测到
选择clang编译器
编译demo
qt5.15 静态编译
user@user-PC:~/build-clangTest-5_15_static_clang-Debug$ ldd clangTest
linux-vdso.so.1 (0x0000ffff90f03000)
libxcb-glx.so.0 => /lib/aarch64-linux-gnu/libxcb-glx.so.0 (0x0000ffff90e7d000)
libxcb-icccm.so.4 => /lib/aarch64-linux-gnu/libxcb-icccm.so.4 (0x0000ffff90e68000)
libxcb-image.so.0 => /lib/aarch64-linux-gnu/libxcb-image.so.0 (0x0000ffff90e53000)
libxcb-shm.so.0 => /lib/aarch64-linux-gnu/libxcb-shm.so.0 (0x0000ffff90e3f000)
libxcb-keysyms.so.1 => /lib/aarch64-linux-gnu/libxcb-keysyms.so.1 (0x0000ffff90e2c000)
libxcb-randr.so.0 => /lib/aarch64-linux-gnu/libxcb-randr.so.0 (0x0000ffff90e0c000)
libxcb-render-util.so.0 => /lib/aarch64-linux-gnu/libxcb-render-util.so.0 (0x0000ffff90df8000)
libxcb-render.so.0 => /lib/aarch64-linux-gnu/libxcb-render.so.0 (0x0000ffff90ddb000)
libxcb-shape.so.0 => /lib/aarch64-linux-gnu/libxcb-shape.so.0 (0x0000ffff90dc7000)
libxcb-sync.so.1 => /lib/aarch64-linux-gnu/libxcb-sync.so.1 (0x0000ffff90db0000)
libxcb-xfixes.so.0 => /lib/aarch64-linux-gnu/libxcb-xfixes.so.0 (0x0000ffff90d98000)
libxcb-xinerama.so.0 => /lib/aarch64-linux-gnu/libxcb-xinerama.so.0 (0x0000ffff90d85000)
libxcb-xkb.so.1 => /lib/aarch64-linux-gnu/libxcb-xkb.so.1 (0x0000ffff90d5a000)
libxcb-xinput.so.0 => /lib/aarch64-linux-gnu/libxcb-xinput.so.0 (0x0000ffff90d29000)
libSM.so.6 => /lib/aarch64-linux-gnu/libSM.so.6 (0x0000ffff90d11000)
libICE.so.6 => /lib/aarch64-linux-gnu/libICE.so.6 (0x0000ffff90ce5000)
libxkbcommon-x11.so.0 => /lib/aarch64-linux-gnu/libxkbcommon-x11.so.0 (0x0000ffff90ccd000)
libtiff.so.5 => /lib/aarch64-linux-gnu/libtiff.so.5 (0x0000ffff90c42000)
libdrm.so.2 => /lib/aarch64-linux-gnu/libdrm.so.2 (0x0000ffff90c20000)
libudev.so.1 => /lib/aarch64-linux-gnu/libudev.so.1 (0x0000ffff90bec000)
libX11-xcb.so.1 => /lib/aarch64-linux-gnu/libX11-xcb.so.1 (0x0000ffff90bda000)
libxcb.so.1 => /lib/aarch64-linux-gnu/libxcb.so.1 (0x0000ffff90ba3000)
libwayland-egl.so.1 => /lib/aarch64-linux-gnu/libwayland-egl.so.1 (0x0000ffff90b91000)
libEGL.so.1 => /lib/aarch64-linux-gnu/libEGL.so.1 (0x0000ffff90b6d000)
libXcomposite.so.1 => /lib/aarch64-linux-gnu/libXcomposite.so.1 (0x0000ffff90b5a000)
libXext.so.6 => /lib/aarch64-linux-gnu/libXext.so.6 (0x0000ffff90b37000)
libX11.so.6 => /lib/aarch64-linux-gnu/libX11.so.6 (0x0000ffff909ed000)
libfontconfig.so.1 => /lib/aarch64-linux-gnu/libfontconfig.so.1 (0x0000ffff90998000)
libfreetype.so.6 => /lib/aarch64-linux-gnu/libfreetype.so.6 (0x0000ffff908d9000)
libdbus-1.so.3 => /lib/aarch64-linux-gnu/libdbus-1.so.3 (0x0000ffff90876000)
libwayland-cursor.so.0 => /lib/aarch64-linux-gnu/libwayland-cursor.so.0 (0x0000ffff9085e000)
libwayland-client.so.0 => /lib/aarch64-linux-gnu/libwayland-client.so.0 (0x0000ffff9083f000)
libxkbcommon.so.0 => /lib/aarch64-linux-gnu/libxkbcommon.so.0 (0x0000ffff907f0000)
libharfbuzz.so.0 => /lib/aarch64-linux-gnu/libharfbuzz.so.0 (0x0000ffff906ec000)
libm.so.6 => /lib/aarch64-linux-gnu/libm.so.6 (0x0000ffff9062f000)
libicui18n.so.63 => /lib/aarch64-linux-gnu/libicui18n.so.63 (0x0000ffff90368000)
libicuuc.so.63 => /lib/aarch64-linux-gnu/libicuuc.so.63 (0x0000ffff90193000)
libicudata.so.63 => /lib/aarch64-linux-gnu/libicudata.so.63 (0x0000ffff8e795000)
libdl.so.2 => /lib/aarch64-linux-gnu/libdl.so.2 (0x0000ffff8e781000)
libgthread-2.0.so.0 => /lib/aarch64-linux-gnu/libgthread-2.0.so.0 (0x0000ffff8e76f000)
libglib-2.0.so.0 => /lib/aarch64-linux-gnu/libglib-2.0.so.0 (0x0000ffff8e63c000)
libGL.so.1 => /lib/aarch64-linux-gnu/libGL.so.1 (0x0000ffff8e539000)
libpthread.so.0 => /lib/aarch64-linux-gnu/libpthread.so.0 (0x0000ffff8e508000)
libstdc++.so.6 => /lib/aarch64-linux-gnu/libstdc++.so.6 (0x0000ffff8e37d000)
libgcc_s.so.1 => /lib/aarch64-linux-gnu/libgcc_s.so.1 (0x0000ffff8e359000)
libc.so.6 => /lib/aarch64-linux-gnu/libc.so.6 (0x0000ffff8e1e8000)
/lib/ld-linux-aarch64.so.1 (0x0000ffff90ed5000)
libxcb-util.so.0 => /lib/aarch64-linux-gnu/libxcb-util.so.0 (0x0000ffff8e1d1000)
libuuid.so.1 => /lib/aarch64-linux-gnu/libuuid.so.1 (0x0000ffff8e1b7000)
libbsd.so.0 => /lib/aarch64-linux-gnu/libbsd.so.0 (0x0000ffff8e191000)
libwebp.so.6 => /lib/aarch64-linux-gnu/libwebp.so.6 (0x0000ffff8e12f000)
libzstd.so.1 => /lib/aarch64-linux-gnu/libzstd.so.1 (0x0000ffff8e098000)
liblzma.so.5 => /lib/aarch64-linux-gnu/liblzma.so.5 (0x0000ffff8e063000)
libjbig.so.0 => /lib/aarch64-linux-gnu/libjbig.so.0 (0x0000ffff8e046000)
libjpeg.so.62 => /lib/aarch64-linux-gnu/libjpeg.so.62 (0x0000ffff8dff4000)
libz.so.1 => /lib/aarch64-linux-gnu/libz.so.1 (0x0000ffff8dfca000)
libXau.so.6 => /lib/aarch64-linux-gnu/libXau.so.6 (0x0000ffff8dfb6000)
libXdmcp.so.6 => /lib/aarch64-linux-gnu/libXdmcp.so.6 (0x0000ffff8dfa0000)
libGLdispatch.so.0 => /lib/aarch64-linux-gnu/libGLdispatch.so.0 (0x0000ffff8de71000)
libexpat.so.1 => /lib/aarch64-linux-gnu/libexpat.so.1 (0x0000ffff8de30000)
libpng16.so.16 => /lib/aarch64-linux-gnu/libpng16.so.16 (0x0000ffff8ddec000)
libsystemd.so.0 => /lib/aarch64-linux-gnu/libsystemd.so.0 (0x0000ffff8dd3f000)
libffi.so.6 => /lib/aarch64-linux-gnu/libffi.so.6 (0x0000ffff8dd27000)
librt.so.1 => /lib/aarch64-linux-gnu/librt.so.1 (0x0000ffff8dd0f000)
libgraphite2.so.3 => /lib/aarch64-linux-gnu/libgraphite2.so.3 (0x0000ffff8dcda000)
libpcre.so.3 => /lib/aarch64-linux-gnu/libpcre.so.3 (0x0000ffff8dc67000)
libGLX.so.0 => /lib/aarch64-linux-gnu/libGLX.so.0 (0x0000ffff8dc25000)
liblz4.so.1 => /lib/aarch64-linux-gnu/liblz4.so.1 (0x0000ffff8dbfa000)
libgcrypt.so.20 => /lib/aarch64-linux-gnu/libgcrypt.so.20 (0x0000ffff8db2b000)
libgpg-error.so.0 => /lib/aarch64-linux-gnu/libgpg-error.so.0 (0x0000ffff8dafb000)
user@user-PC:~/build-clangTest-5_15_static_clang-Debug$ ls -la
总用量 18548
drwxr-xr-x 2 user user 4096 2月 25 18:48 .
drwxr-xr-x 53 user user 4096 2月 25 18:41 ..
-rwxr-xr-x 1 user user 18042352 2月 25 18:48 clangTest
-rw-r--r-- 1 user user 1597 2月 25 18:41 clangtest_plugin_import.cpp
-rw-r--r-- 1 user user 79792 2月 25 18:48 clangtest_plugin_import.o
-rw-r--r-- 1 user user 25024 2月 25 18:48 main.o
-rw-r--r-- 1 user user 360576 2月 25 18:48 mainwindow.o
-rw-r--r-- 1 user user 104870 2月 25 18:48 Makefile
-rw-r--r-- 1 user user 2712 2月 25 18:48 moc_mainwindow.cpp
-rw-r--r-- 1 user user 324360 2月 25 18:48 moc_mainwindow.o
-rw-r--r-- 1 user user 13277 2月 25 18:48 moc_predefs.h
-rw-r--r-- 1 user user 960 2月 25 18:41 .qmake.stash
-rw-r--r-- 1 user user 2196 2月 25 18:48 ui_mainwindow.h
qt5.15 动态编译
user@user-PC:~/build-clangTest-5_15_clang-Debug$ ldd clangTest
linux-vdso.so.1 (0x0000ffffb9429000)
libQt5Widgets.so.5 => /usr/local/Qt-5.15/lib/libQt5Widgets.so.5 (0x0000ffffb8d84000)
libQt5Gui.so.5 => /usr/local/Qt-5.15/lib/libQt5Gui.so.5 (0x0000ffffb8715000)
libQt5Core.so.5 => /usr/local/Qt-5.15/lib/libQt5Core.so.5 (0x0000ffffb810b000)
libGL.so.1 => /lib/aarch64-linux-gnu/libGL.so.1 (0x0000ffffb7fda000)
libpthread.so.0 => /lib/aarch64-linux-gnu/libpthread.so.0 (0x0000ffffb7fab000)
libstdc++.so.6 => /lib/aarch64-linux-gnu/libstdc++.so.6 (0x0000ffffb7e20000)
libm.so.6 => /lib/aarch64-linux-gnu/libm.so.6 (0x0000ffffb7d63000)
libgcc_s.so.1 => /lib/aarch64-linux-gnu/libgcc_s.so.1 (0x0000ffffb7d3f000)
libc.so.6 => /lib/aarch64-linux-gnu/libc.so.6 (0x0000ffffb7bce000)
libharfbuzz.so.0 => /lib/aarch64-linux-gnu/libharfbuzz.so.0 (0x0000ffffb7aca000)
libicui18n.so.63 => /lib/aarch64-linux-gnu/libicui18n.so.63 (0x0000ffffb7803000)
libicuuc.so.63 => /lib/aarch64-linux-gnu/libicuuc.so.63 (0x0000ffffb762e000)
libicudata.so.63 => /lib/aarch64-linux-gnu/libicudata.so.63 (0x0000ffffb5c30000)
libdl.so.2 => /lib/aarch64-linux-gnu/libdl.so.2 (0x0000ffffb5c1c000)
libgthread-2.0.so.0 => /lib/aarch64-linux-gnu/libgthread-2.0.so.0 (0x0000ffffb5c0a000)
libglib-2.0.so.0 => /lib/aarch64-linux-gnu/libglib-2.0.so.0 (0x0000ffffb5ad7000)
libGLX.so.0 => /lib/aarch64-linux-gnu/libGLX.so.0 (0x0000ffffb5a95000)
libGLdispatch.so.0 => /lib/aarch64-linux-gnu/libGLdispatch.so.0 (0x0000ffffb5966000)
/lib/ld-linux-aarch64.so.1 (0x0000ffffb93fb000)
libfreetype.so.6 => /lib/aarch64-linux-gnu/libfreetype.so.6 (0x0000ffffb58a7000)
libgraphite2.so.3 => /lib/aarch64-linux-gnu/libgraphite2.so.3 (0x0000ffffb5874000)
libpcre.so.3 => /lib/aarch64-linux-gnu/libpcre.so.3 (0x0000ffffb5801000)
libX11.so.6 => /lib/aarch64-linux-gnu/libX11.so.6 (0x0000ffffb56b7000)
libXext.so.6 => /lib/aarch64-linux-gnu/libXext.so.6 (0x0000ffffb5694000)
libpng16.so.16 => /lib/aarch64-linux-gnu/libpng16.so.16 (0x0000ffffb5650000)
libz.so.1 => /lib/aarch64-linux-gnu/libz.so.1 (0x0000ffffb5626000)
libxcb.so.1 => /lib/aarch64-linux-gnu/libxcb.so.1 (0x0000ffffb55ef000)
libXau.so.6 => /lib/aarch64-linux-gnu/libXau.so.6 (0x0000ffffb55db000)
libXdmcp.so.6 => /lib/aarch64-linux-gnu/libXdmcp.so.6 (0x0000ffffb55c5000)
libbsd.so.0 => /lib/aarch64-linux-gnu/libbsd.so.0 (0x0000ffffb559f000)
librt.so.1 => /lib/aarch64-linux-gnu/librt.so.1 (0x0000ffffb5587000)
user@user-PC:~/build-clangTest-5_15_clang-Debug$ ls -la
总用量 1116
drwxr-xr-x 2 user user 4096 2月 25 18:43 .
drwxr-xr-x 53 user user 4096 2月 25 18:41 ..
-rwxr-xr-x 1 user user 329512 2月 25 18:43 clangTest
-rw-r--r-- 1 user user 24944 2月 25 18:41 main.o
-rw-r--r-- 1 user user 359328 2月 25 18:43 mainwindow.o
-rw-r--r-- 1 user user 61243 2月 25 18:41 Makefile
-rw-r--r-- 1 user user 2712 2月 25 18:41 moc_mainwindow.cpp
-rw-r--r-- 1 user user 322928 2月 25 18:41 moc_mainwindow.o
-rw-r--r-- 1 user user 13277 2月 25 18:41 moc_predefs.h
-rw-r--r-- 1 user user 960 2月 25 18:41 .qmake.stash
-rw-r--r-- 1 user user 2196 2月 25 18:42 ui_mainwindow.h