我有一个gcc版本2.95.2 19991024(发布)工具链,现在我需要使用位于makefile的同一文件夹中的文件中的Assembly函数。
我已经尝试了很多方法将这个文件放在我的工具链中,没有运气。
基本上我在ASM中声明:
.globl util_MyFunc
util_MyFunc:
...
在C文件的主要空白处:
extern void util_MyFunc();
int main(void) {
util_MyFunc();
...
当我编译时,我得到了与未识别相关的错误:
/cygdrive/c/MyDev/tmp/main.o(.text+0x8bc): undefined reference to `util_MyFunc'
make: *** [test.o] Error 1
谢谢!
编辑:
我试图使用以下来生成" .o"来自asm文件的文件
C:\MyDev>gcc -c test.asm -o test.o
结果:
gcc: utils.asm: linker input file unused since linking not done
或:
C:\MyDev>gcc test.asm -o test.o
但是...
ld: cannot open crt0.o: No such file or directory
答案 0 :(得分:2)
gcc期望的程序集文件的规范扩展是.s
。您应该使用它(或直接使用as
汇编)。也可以将-o test.o
放在输入文件名之前。最后,如果要使用libc,则需要libc开发文件。否则请使用-nostdlib
开关。
您应该尝试:gcc -o test main.c utils.s