请教个关于 _ZGVbN2v_sin 的问题 (转载)

il15
il15 07月20日 字数 567

一个程序用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() ?

5 个回复
ylh1969
没谱 08月16日

调用C++的库,一定要有C++的函数说明,用C++的编译器。

【 在 il15 的大作中提到: 】

: 发信人: il15 (il15), 信区: LinuxDev

: 标  题: 请教个关于 _ZGVbN2v_sin 的问题

: 发信站: 水木社区 (Tue Jul 20 19:39:32 2021), 站内

: ...................

il15
il15 08月16日

从名字上看,这个好像是个c++的函数,但我确实没有显式调用它啊。

我用的就是 sin(), 然后也是用 gcc 编译,只是不知道为何它在 -O3 -fast-math 对for循环里面的sin 用了 _ZGVbN2v_sin().

【 在 ylh1969 的大作中提到: 】

: 调用C++的库,一定要有C++的函数说明,用C++的编译器。

dormouseBHU
dormouseBHU 08月16日

--disable-mathvec

【 在 il15 的大作中提到: 】

: 发信人: il15 (il15), 信区: LinuxDev

: 标  题: 请教个关于 _ZGVbN2v_sin 的问题

: 发信站: 水木社区 (Tue Jul 20 19:39:32 2021), 站内

: ...................

il15
il15 08月16日

多谢!

我发现 -ffast-math 出这个问题之后,就一个个试-ffast-math的选项,最后发现加上 -fno-finite-math-only 就可以了,但不知道为啥。

看了你这个选项,觉得你这种解决方法应该是最专业的。:)

【 在 dormouseBHU 的大作中提到: 】

jimmycmh
Jimmy 08月16日

libc不匹配这种事情,什么问题都有可能出现,最好别用

能用docker的话打包个docker image吧

【 在 il15 (il15) 的大作中提到: 】

: 【 以下文字转载自 LinuxDev 讨论区 】

: 发信人: il15 (il15), 信区: LinuxDev

: 标  题: 请教个关于 _ZGVbN2v_sin 的问题

: ...................