c - nasm 中的链接 c 函数

标签 c assembly nasm

有一个 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/

相关文章:

c - 背景中的 fork 不能正常工作

objective-c - xcode文件打开原生C

assembly - 将十进制数转换为半字节的二进制形式

assembly - 如何在 x86 汇编编程中表示 FFFFFFBB 等十六进制值?

macos - OSX 64 位上的 NASM 问题

c - 释放指针重新分配自身?

c - 在 C : how to pass an array of structures as a pointer

c - 堆栈分配、填充和对齐

assembly - 我如何使用 NASM 获取用户输入?

macos - OSX 64 位上的 NASM 问题