树莓派测试Clang和GCC,OpenGL
0、打开OpenGL驱动
sudo raspi-config
//打开Advanced Options→GL Driver,选择第一GL (Full KMS) Desktop Drivers或第二选项GL (Fake KMS) Desktop Driver
或者直接在/boot/config.txt里添加一行dtoverlay=vc4-kms-v3d或dtoverlay=vc4-fkms-v3d,分别对应上面两项。
KMS是指Kernel Mode-Setting,理论上该模式会更有效率,因为是通过内核输出的,而Fake KMS则有更好的兼容性,比如打开Full KMS后使用realvnc远程会黑屏等。
sudo apt install mesa-utils
glxinfo
glxinfo | grep rendering
输出Yes表示驱动打开
glxinfo | grep OpenGL
输出相应的OpenGL的版本
glxgears
测试相应的帧率
1、测试C++17
hello.cpp
#include <iostream>
int main ()
{
std::cout << "Hello, world!\n";
return 0;
}
gcc 编译
g++ -Wall -std=c++17 hello.cpp -o hello_gcc
clang 编译
clang++ -Wall -std=c++17 hello.cpp -o hello_clang
file.cpp
#include <iostream>
#include <filesystem>
int main() {
for(auto &file : std::filesystem::recursive_directory_iterator("./")) {
std::cout << file.path() << '\n';
}
}
gcc 编译
g++ -Wall -std=c++17 file.cpp -o file_gcc
g++ -Wall -Wno-deprecated-declarations -std=c++17 file.cpp -o file_gcc
clang 编译
clang++ -Wall -std=c++17 file.cpp -o file_clang
2、机器码
clang++ -Wall -std=c++17 file.cpp -S -g -o file_clang
vim file_clang 即查看机器码
3、测试编译C++20
span_test.cpp
// C++20 span test
// you can build the code with:
// clang++ -std=c++2a -stdlib=libc++ -Wall -Wextra -pedantic span_test.cpp -o span_test
#include <iostream>
#include <vector>
#include <span>
void print_content(std::span<int> container) {
for(const auto &e : container) {
std::cout << e << ' ';
}
std::cout << '\n';
}
int main() {
int a[]{23, 45, 67, 89};
print_content(a);
std::vector<int> v{1, 2, 3, 4, 5};
print_content(v);
}
clang++ -std=c++2a -stdlib=libc++ -Wall -Wextra -pedantic span_test.cpp -o span_test
4、OpenGL安装和测试
Ubuntu系统
x11安装
sudo apt-get install libx11-dev libxext-dev libxtst-dev libxrender-dev libxmu-dev libxmuu-dev
OpenGL 安装
sudo apt-get install build-essential libgl1-mesa-dev libglu1-mesa-dev freeglut3-dev
Centos系统
x11库:
yum install libXt-devel
OpenGL 安装
yum install mesa-libGL-devel mesa-libGLU-devel
测试一下:
sudo apt-get install mesa-utils
glxinfo | grep rendering
glxinfo | grep OpenGL