开发者
资源
openEuler上使用毕昇编译器(2.5.0/3.0.0)编译sleef-3.3遇到的问题及解决方案
openEuler上使用毕昇编译器(2.5.0/3.0.0)编译sleef-3.3遇到的问题及解决方案
发表于2023/08/31
3.9k10

【问题描述】

error:passing 'int' to parameter of incompatible type '__SVInt64_t'.

传递的参数类型不兼容。

sleef0.JPG

【根因分析】

排查发现源码内函数svlsr_n_s64_x为隐式声明,在较新的C规范(C99、C11)是不允许不声明直接使用的。

使用隐式声明的函数会造成一些参数传递的错误,编程时,请先声明再使用。

【解决方案】

修改Configure.make,添加对应的函数&参数声明。

在Configure.make的第323行后添加以下内容。

​typedef __sizeless_struct vdouble2 {
     svfloat64_t x, y;
   } vdouble2;

如图所示,代表修改完成。

sleef1.JPG

tips:

①可以添加-Werror编译选项对隐式声明进行检查

②该软件使用的cmake安装方式,选择毕昇编译器进行编译时应执行以下命令进行配置。

cd /path/to/sleef-3.3
mkdir build && cd build
CC=clang cmake -DBUILD_SHARED_LIBS=TRUE -DCMAKE_INSTALL_PREFIX=/path/to/sleef -DBUILD_TESTS=FALSE  ../
make 2>&1 | tee make-log
make install

编译成功,则会在规划的安装目录下生成lib、include,如下图所示。

sleef2.JPG

收藏举报
Level 1
0
帖子
0
粉丝
0
获赞