- 主题:请教个关于 _ZGVbN2v_sin 的问题 (转载)
【 以下文字转载自 LinuxDev 讨论区 】
发信人: il15 (il15), 信区: LinuxDev
标 题: 请教个关于 _ZGVbN2v_sin 的问题
发信站: 水木社区 (Tue Jul 20 19:39:32 2021), 站内
一个程序用gcc 8.3.1和 glibc 2.28编译过了,换台glibc 2.17的机器说找不到 mvec,
然后我打算通过头文件用低版本的 glibc 来编译(用了 __asm__(".symver sin,sin@GLIBC_2.2.5"); 这种方法),
这时候就出现 没有_ZGVbN2v_sin 类似的错误。
我简单做个case测试了一下,发现好像是 如果for 循环里面用了 sin的话,在 -O3 -fast-math的时候,就会优化成_ZGVbN2v_sin,然后链接了 libmvec.so吧。
想请教一下,有什么方法可以不优化,还是用sin() ?
--
FROM 14.16.155.*
从名字上看,这个好像是个c++的函数,但我确实没有显式调用它啊。
我用的就是 sin(), 然后也是用 gcc 编译,只是不知道为何它在 -O3 -fast-math 对for循环里面的sin 用了 _ZGVbN2v_sin().
【 在 ylh1969 的大作中提到: 】
: 调用C++的库,一定要有C++的函数说明,用C++的编译器。
--
FROM 183.8.143.*
多谢!
我发现 -ffast-math 出这个问题之后,就一个个试-ffast-math的选项,最后发现加上 -fno-finite-math-only 就可以了,但不知道为啥。
看了你这个选项,觉得你这种解决方法应该是最专业的。:)
【 在 dormouseBHU 的大作中提到: 】
--
FROM 183.8.143.*