我有一个 gcc 版本 2.95.2 19991024(发布)工具链,现在我需要使用一个位于 makefile 同一文件夹中的文件中的汇编函数。
我尝试了很多方法将该文件放入我的工具链,但没有成功。
基本上我在 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
谢谢!
编辑:
我尝试使用以下方法从 asm 文件生成“.o”文件
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
最佳答案
gcc 期望的汇编文件的规范扩展名是 .s
。您应该使用它(或直接使用 as
进行组装)。也可以将 -o test.o
放在输入文件名之前。最后,如果您想使用 libc,您将需要 libc 开发文件。否则使用 -nostdlib
开关。
您应该尝试:gcc -o test main.c utils.s
关于c - 如何使用 asm 程序并在 C 中获取返回值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27461806/