有一个 nasm 项目,我正在从中调用一个 c 函数
我将函数的名称放在“extern”中
链接时,我将所有链接放在一起,但出现“ undefined reference ”错误
这是我的编译/链接命令
gcc -o Project4 Project4.o array1c.c readdouble.o writedouble.o readarray.o printarray.o addarray.o invertarray.o invertarray2.o invertarray3.oaveragearray.o fastsort.c
最佳答案
我将首先使用“gcc -c”命令将所有 .c 文件编译为目标文件,然后将这些生成的 .o 文件(例如“array1c.o”和“quicksort.o”)与您的其他预先存在的目标文件,看看是否仍然给你一个 undefined reference 。这可能是一个不必要的步骤,但我从未在对 gcc 的一次调用中组合原始 .c 文件和 .o 文件。
您可能还必须在任何名为 ... 的 c 函数的开头添加下划线,我知道这是一个依赖于平台的东西(即,Linux 通常不需要在 c 函数上使用下划线,而 OSX 和一些其他 UNIX 平台也是如此)。
最后,您可以尝试使用 ld 将所有目标文件一次性链接在一起,而不是将某些目标文件链接到 Project4.o 中,然后将其链接到您使用 nasm 组装的文件(至少是这样)我假设你正在做的事情,即,你正在制作一个 Project4.o,然后在你的汇编代码中调用函数)。
希望这有帮助,
杰森
关于c - nasm 中的链接 c 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5365256/