【发布时间】:2014-05-11 07:22:27
【问题描述】:
当我试图链接两个扩展名为 .o 的程序时,gcc 编译器“抛出”我 undefined reference 和其他我不明白的东西。
我将这些程序链接到Cygwin 终端与该命令:
gcc -o file file1.o file2.o
我没有其他要包含的库,例如 math.h(所以需要 -lm)。
我的头文件中只有两个函数,我将其包含在我的主程序中。
我明白了:
file1.o:file1.c(.text+0x2a): undefined reference to `Function1'
file1.o:file1.c:(.text+0x104): undefined reference to `Function2'
/usr/lib/gcc/i686-pc-cygwin/4.7.3/../../../../i686-pc-cygwin/bin/ld: file1.o: bad reloc address 0x20 in section `.eh_frame'
/usr/lib/gcc/i686-pc-cygwin/4.7.3/../../../../i686-pc-cygwin/bin/ld: final link failed: Invalid operation
collect2: error: ld returned 1 exit status
【问题讨论】:
-
如果不查看代码,将很难诊断您的问题。可以发一下相关代码吗?
-
有点长,但我会尝试...:
-
它们是否相互引用?有时您需要多次将 .o 文件添加到链接路径中。
-
如果你尝试
gcc -o file file1.c file2.c会发生什么? -
你的函数
Function1和Function2是否定义为extern函数?