得到了一个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
答案 0 :(得分:1)
我首先使用“gcc -c”命令将所有.c文件编译到目标文件中,然后将生成的.o文件(例如“array1c.o”和“quicksort.o”)与您的文件链接起来其他预先存在的目标文件,看看是否仍然提供了未定义的引用。这可能是一个不必要的步骤,但我从未在一次调用gcc时将原始.c文件和.o文件合并。
你可能还需要在任何被调用的c函数的开头添加一个下划线...我知道这是一个平台相关的东西(即Linux通常不需要c函数的下划线,而OSX和一些其他UNIX平台也可以。)
最后,您可以尝试使用ld将所有目标文件一次链接到一起,而不是将一些目标文件链接到Project4.o,然后将其链接到您使用nasm汇编的内容(至少是我假设你在做什么,即你正在制作一个Project4.o,然后在你的汇编代码中调用它的函数。)
希望这有帮助,
杰森