Follow Techotopia on Twitter

On-line Guides
All Guides
eBook Store
iOS / Android
Linux for Beginners
Office Productivity
Linux Installation
Linux Security
Linux Utilities
Linux Virtualization
Linux Kernel
System/Network Admin
Scripting Languages
Development Tools
Web Development
GUI Toolkits/Desktop
Mail Systems
Eclipse Documentation

How To Guides
General System Admin
Linux Security
Linux Filesystems
Web Servers
Graphics & Desktop
PC Hardware
Problem Solutions
Privacy Policy




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>

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 
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);

main (void)
  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).

  Published under the terms of the GNU General Public License Design by Interspire