在centos7操作系统下,运行demo到V = FunctionSpace(domain, ("Lagrange", 1))这一行,会报以下错误:
/home/hpc/anaconda3/envs/fenicsx-env/lib/python3.11/site-packages/ffcx/codegeneration/ufcx.h错误:expected ‘;’, ‘,’ or ‘)’ before ‘dof’
找到导致报错的ufcx.h文件,会发现报错原因是编译器未识别restrict限制参量,把它当成了变量处理。解决思路是内置的gcc/g++4.8.5版本过低,需要升级。
方法如下:
1.通过scl安装所需gcc版本
此时安装的是10.2.1版本,需要安装什么版本devtoolset-10-gcc*中间数字就写几
yum install centos-release-scl
yum install devtoolset-10-gcc*
2.需要永久生效,把devtoolset-10里的gcc和g++链接到/usr/bin去
链接的时候同样别忘了修改版本数字,如果忘记修改,那就把创建的gcc链接删掉重来就好了
sudo mv /usr/bin/gcc /usr/bin/gcc-4.8.5
sudo ln -s /opt/rh/devtoolset-10/root/bin/gcc /usr/bin/gcc
sudo mv /usr/bin/g++ /usr/bin/g++-4.8.5
sudo ln -s /opt/rh/devtoolset-10/root/bin/g++ /usr/bin/g++
检查gcc版本,成功即可
gcc -v