Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/71.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C函数如何运行;Exp";是否在NASM for Linux中正确使用?_C_Linux_Nasm_Exp - Fatal编程技术网

C函数如何运行;Exp";是否在NASM for Linux中正确使用?

C函数如何运行;Exp";是否在NASM for Linux中正确使用?,c,linux,nasm,exp,C,Linux,Nasm,Exp,我正在尝试在Linux的NASM中实现C函数“exp”。该函数取一个双倍值x,并返回一个双倍值r=e^x,其中e是欧拉数。这是我的实现: extern exp SECTION .bss doubleActual: resq 1 doubleX: resq 1 SECTION .text main: ;some other code here ;calculate actual result push doubleActual ; plac

我正在尝试在Linux的NASM中实现C函数“exp”。该函数取一个双倍值x,并返回一个双倍值r=e^x,其中e是欧拉数。这是我的实现:

extern exp

SECTION .bss

    doubleActual: resq 1
    doubleX: resq 1

SECTION .text

    main:
    ;some other code here

    ;calculate actual result
    push doubleActual ; place to store result
    push doubleX ;give the function what x is.
    call exp
    add esp, 8
在编译尝试时,我得到以下结果:

hw7_3.o: In function `termIsLess':
hw7_3.asm:(.text+0xf9): undefined reference to `exp'
这是指我实际调用exp的时候,这很奇怪,因为“extern exp”似乎工作得很好。我做错了什么?

通过

我需要使用gcc执行以下操作:

gcc -m32 name.o -lm -o name

“-lm”标记是链接C数学库的快捷方式,它与标准库是分开的。

是否链接到定义它的库?使用NASM for linux,这通常是不必要的。例如,我可以“extern printf”,然后立即能够在代码中使用“call printf”。我假设这是C函数所独有的。我猜您需要一个
-lm
来链接cmath库。请原谅我的无知,但我该怎么做?我以前不需要联系NASM。我当前的编译例程是:“nasm-f elf32 name.asm”,后跟“gcc-m32 name.o-o name”,其中name是我的程序名。您不需要为其他函数做任何事情,因为您让gcc为您做链接,它总是链接到
libc
。但它不会隐式链接到
libm