|
|
|
|
13.3 Linker error messages
file not recognized: File format not recognized
-
GCC uses the extension of a file, such as '.c' or '.cc', to
determine its content. If the extension is missing GCC cannot recognize
the file type and will give this error.
Example:
#include <stdio.h>
int
main (void)
{
printf ("Hello World!\n");
return 0;
}
If the program above is saved in a file 'hello' without any
extension then compiling it will give the error:
$ gcc -Wall hello
hello: file not recognized: File format not
recognized
collect2: ld returned 1 exit status
The solution is to rename the file to the correct extension, in this
case 'hello.c'.
undefined reference to `foo'
-
collect2: ld returned 1 exit status
-
This error occurs when a program uses a function or variable which is
not defined in any of the object files or libraries supplied to the
linker. It can be caused by a missing library or the use of an
incorrect name. In the error message above, the program
'collect2' is part of the linker.
Example:
int foo(void);
int
main (void)
{
foo();
return 0;
}
If this program is compiled without linking to a library or object file
containing the function foo() there will be an undefined
reference error.
/usr/lib/crt1.o(.text+0x18): undefined reference to `main'
-
This error is a special case of the error above, when the missing
function is
main . In C and C++, every program must have a
main function (where execution starts). When compiling an
individual source file without a main function, use the option
-c (see section 2.4.1 Creating object files from source files).
|
|
|