cephes 数学库构建错误

cephes math library build error

我使用的是 64 位 Ubuntu 14.04。我尝试安装 cephes 库,但始终出现错误。它说:

`sqrtelf.387:8:错误:推送的指令后缀无效

我上网查了一下,也查了下这个论坛,大概是编译设置错误的问题。我编辑了 make 文件,现在看起来像这样:

CC = gcc
CFLAGS = -g -m32 -O2 -Wall -fno-builtin
LDFLAGS = -m32
AR = ar
RANLIB = ranlib
INCS = mconf.h
AS = as

还是不行。我也检查了mconf.h,但我什至不知道我应该改变什么。感谢您的帮助。

我得到了源文件here (double.zip)

错误说有问题的指令在文件 sqrtelf.387 的第 8 行。即

pushl %ebp

您很可能拥有 64 位工具链; pushl 在 64 位模式下不可用。但是,如果您不是并且想要 32 位版本,则可以将 --32 添加到 as 标志。

要解决这个问题,您应该在 makefile 中注释掉这个目标;理论上你可以取消注释 sqrtelf.amd64 target,但好处值得怀疑。在 makefile 中查找注释:

# Assembly language utilities.
# If the following are all commented out, the C versions
# will be used by default.