在nasm中链接c函数

时间:2011-03-19 22:09:24

标签: c assembly nasm

得到了一个nasm项目,我从中调用了一个c函数

我将该函数的名称放在“extern”

当链接我把所有的链接放在一起但我可以错误的“未定义引用”

这是我的编译/链接命令

gcc -o Project4 Project4.o array1c.c readdouble.o writedouble.o readarray.o printarray.o addarray.o invertarray.o invertarray2.o invertarray3.o averagearray.o quicksort.c

1 个答案:

答案 0 :(得分:1)

我首先使用“gcc -c”命令将所有.c文件编译到目标文件中,然后将生成的.o文件(例如“array1c.o”和“quicksort.o”)与您的文件链接起来其他预先存在的目标文件,看看是否仍然提供了未定义的引用。这可能是一个不必要的步骤,但我从未在一次调用gcc时将原始.c文件和.o文件合并。

你可能还需要在任何被调用的c函数的开头添加一个下划线...我知道这是一个平台相关的东西(即Linux通常不需要c函数的下划线,而OSX和一些其他UNIX平台也可以。)

最后,您可以尝试使用ld将所有目标文件一次链接到一起,而不是将一些目标文件链接到Project4.o,然后将其链接到您使用nasm汇编的内容(至少是我假设你在做什么,即你正在制作一个Project4.o,然后在你的汇编代码中调用它的函数。)

希望这有帮助,

杰森