【发布时间】:2014-12-13 17:46:08
【问题描述】:
我有一个 gcc 版本 2.95.2 19991024 (release) 工具链,现在我需要使用位于 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
谢谢!
编辑:
我尝试使用以下方法从 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 吗?
-
你真的应该更新你的编译器。
gcc-2.95来自上个世纪,众所周知是buggy、不擅长优化和不符合标准。当前GCC 自 2014 年 10 月以来为 4.9.2;您可以将其编译为交叉编译器。使用 GCC 2.95 是一个错误。 -
请参阅编辑。如果我使用那个旧的 gcc,那是有原因的。无论如何我都会尝试升级,但无论如何......有人可以指出我的问题的正确方向吗?
-
我没有看到任何关于使用 GCC 2.95 的解释(即使在您编辑之后)。它是如此的错误和陈旧,以至于没有理由使用它(除非你想成为编译器历史方面的专家)。你会受到其他问题的伤害。
-
Basile...你介意我问你一些幕后的事情吗?可以分享你的邮箱吗?