Google
 
Webnews.only-4-geeks.com
Interesting places
news.only-4-geeks.com Forum Index » C

Simple Compilation question

 
Jump to:  
 
Ashik
PostPosted: Thu Jun 12, 2008 6:06 pm    Post subject: Simple Compilation question
       
I have a simple compilation question, but I haven't been able to find
an answer for it anywhere online. I've made a simplified version of
my problem using a few files. The main problem is that when I try
compiling my code using gcc in cygwin, I get this error:

$ make
gcc -L C:/temp/ -o askForHelp askForHelp.c
/cygdrive/c/DOCUME~1/Ashik/LOCALS~1/Temp/ccB46qsl.o:askForHelp.cSad.text
+0x45): undefined reference to `_helper'
collect2: ld returned 1 exit status
make: *** [all] Error 1

This is what my files look like:
***askForHelp.c***
#include <stdio.h>
#include "helper.h"

int main(int argc, char **arvg) {
int i = 0;
for (i = 0; i < 10; i++) {
printf("%d", helper(i));
}
}


***helper.h***
#ifndef HELPER_H
#define HELPER_H

int helper(int input);

#endif

***helper.c***
#include <stdio.h>

int helper(int input) {
return input+1;
}

I don't have that much C compilation background. Please help. Thank
you.
 

 
santosh
PostPosted: Thu Jun 12, 2008 6:06 pm    Post subject: Re: Simple Compilation question
       
Ashik wrote:

Quote:
I have a simple compilation question, but I haven't been able to find
an answer for it anywhere online. I've made a simplified version of
my problem using a few files. The main problem is that when I try
compiling my code using gcc in cygwin, I get this error:

$ make
gcc -L C:/temp/ -o askForHelp askForHelp.c
/cygdrive/c/DOCUME~1/Ashik/LOCALS~1/Temp/ccB46qsl.o:askForHelp.c
(.text
+0x45): undefined reference to `_helper'
collect2: ld returned 1 exit status
make: *** [all] Error 1

This is what my files look like:
***askForHelp.c***
#include <stdio.h
#include "helper.h"

int main(int argc, char **arvg) {
int i = 0;
for (i = 0; i < 10; i++) {
printf("%d", helper(i));
}
}


***helper.h***
#ifndef HELPER_H
#define HELPER_H

int helper(int input);

#endif

***helper.c***
#include <stdio.h

int helper(int input) {
return input+1;
}

I don't have that much C compilation background. Please help. Thank
you.

The error you are getting is a "linker error". It is complaining that it
cannot find the symbol _helper in any of the places it is searching in.
You need to compiler helper.c to helper.o and include helper.o in the
command that compiles askForHelp.c to the final executable.

Something like:

gcc -Wall -W -ansi -pedantic -o askForHelp.exe askForHelp.c helper.o

You could also include helper.c instead of helper.o in the above
command, in which case the compiler will automaticall compile helper.c
to it's object file before linking all the object files together.
 

 
A. Bolmarcich
PostPosted: Thu Jun 12, 2008 6:06 pm    Post subject: Re: Simple Compilation question
       
On 2008-06-12, santosh <santosh.k83@gmail.com> wrote:
Quote:
Ashik wrote:

I have a simple compilation question, but I haven't been able to find
an answer for it anywhere online. I've made a simplified version of
my problem using a few files. The main problem is that when I try
compiling my code using gcc in cygwin, I get this error:

$ make
gcc -L C:/temp/ -o askForHelp askForHelp.c
/cygdrive/c/DOCUME~1/Ashik/LOCALS~1/Temp/ccB46qsl.o:askForHelp.c
(.text
+0x45): undefined reference to `_helper'
collect2: ld returned 1 exit status
make: *** [all] Error 1

This is what my files look like:
***askForHelp.c***
#include <stdio.h
#include "helper.h"

int main(int argc, char **arvg) {
int i = 0;
for (i = 0; i < 10; i++) {
printf("%d", helper(i));
}
}


***helper.h***
#ifndef HELPER_H
#define HELPER_H

int helper(int input);

#endif

***helper.c***
#include <stdio.h

int helper(int input) {
return input+1;
}

I don't have that much C compilation background. Please help. Thank
you.

The error you are getting is a "linker error". It is complaining that it
cannot find the symbol _helper in any of the places it is searching in.
You need to compiler helper.c to helper.o and include helper.o in the
command that compiles askForHelp.c to the final executable.

Something like:

gcc -Wall -W -ansi -pedantic -o askForHelp.exe askForHelp.c helper.o

You could also include helper.c instead of helper.o in the above
command, in which case the compiler will automaticall compile helper.c
to it's object file before linking all the object files together.

Because the make command is being used, another approach is to have the
Makefile contain the line

askForHelp: askForHelp.o helper.o

and have the make command build askForHelp.

With the example given, the default rules used by make should compile
the two .c files to .o files and then link the .o files to create the
executable.

The Makefile should also include the information that the .c files
depend on helper.h, say by including lines like

askForHelp.o: helper.h
helper.o: helper.h
 

 
Fred
PostPosted: Thu Jun 12, 2008 6:27 pm    Post subject: Re: Simple Compilation question
       
On Jun 12, 11:06 am, Ashik <AshikManand...@gmail.com> wrote:
Quote:
I have a simple compilation question, but I haven't been able to find
an answer for it anywhere online.  I've made a simplified version of
my problem using a few files.  The main problem is that when I try
compiling my code using gcc in cygwin, I get this error:

$ make
gcc -L C:/temp/ -o askForHelp askForHelp.c
/cygdrive/c/DOCUME~1/Ashik/LOCALS~1/Temp/ccB46qsl.o:askForHelp.cSad.text
+0x45): undefined reference to `_helper'
collect2: ld returned 1 exit status
make: *** [all] Error 1

This is what my files look like:
***askForHelp.c***
#include <stdio.h
#include "helper.h"

int main(int argc, char **arvg) {
        int i = 0;
        for (i = 0; i < 10; i++) {
                printf("%d", helper(i));
        }

}

***helper.h***
#ifndef HELPER_H
#define HELPER_H

int helper(int input);

#endif

***helper.c***
#include <stdio.h

int helper(int input) {
        return input+1;

}

I don't have that much C compilation background.  Please help.  Thank
you.


You have not told the linker to link in the helper module, nor have
you told it where to find that module.
--
Fred Kleinschmidt
 

Page 1 of 1 .:.

Google
 
Webnews.only-4-geeks.com

Windows Update | C++ | C | PHP | JavaScript | Photoshop | Programming | Windows 2000 | Python | Windows XP | Object | Flash | Flash - ActionScript | Paint Shop Pro | Excel | PowerPoint | Access | Word | Windows 98 | Internet Explorer 6.0 | CorelDraw12 | Java | XML | asm x86 | Linux Mandrake | Linux RedHat | Outlook |  | news from newsgroups |_ | s

Web Templates

Awesome Website Templates ©

oczekiwanie na linki wymiana linkow proces pobierania linkow pobieranie linkow wymiana linkami