Makefile Help

 
Thread Tools Search this Thread
Homework and Emergencies Homework & Coursework Questions Makefile Help
# 1  
Old 04-25-2011
Bug Makefile Help

Use and complete the template provided. The entire template must be completed. If you don't, your post may be deleted!

1. The problem statement, all variables and given/known data:
I have been trying to make the program swap but i have been getting errors with the makefile such as
Code:
driver.o: In function `main':
driver.c:(.text+0x34): undefined reference to `swap'
driver.c:(.text+0x48): undefined reference to `swap'
driver.c:(.text+0x5c): undefined reference to `swap'
collect2: ld returned 1 exit status
make: *** [swapbig] Error 1

i dont know why the driver has a swap when i declare the function as a swap_big function. and the makefile error is a spacing error but i used my previous makefiles for reference and it is ok, i dont know what i did wrong.
2. Relevant commands, code, scripts, algorithms:
swapbig.c
Code:
#include "swapbig.h"

void swap_big(float *a, float *b)
{

   float temp;

        if ( temp <= *a )
        {temp = *a;
         *a = *b;
        *b = temp;
        }
printf(" %x, contents %f\n", a, *a);
printf(" %x, contents %f\n", b, *b);
}

swapbig.h
#include <stdio.h>

/* Given two pointer values (floats) and swap the values in cell pointed
 * return the swap value, the first has to be less than or equal to the second*/

void swap_big(float *a, float *b);

driver.c
Code:
#include "swapbig.h"
//#define DEBUG

int main()
{

        #ifdef DEBUG
        printf("Initial values:\t a = %f, b = %f, c = %f\n",a, b, c);
        #endif

        swap_big(&a, &b);

        #ifdef DEBUG
        printf("First swap:\t a = %f, b = %f, c = %f\n",a, b, c);
        #endif

        swap_big(&b, &c);

        #ifdef DEBUG
        printf("Second swap:\t a = %f, b = %f, c = %f\n",a, b, c);
        #endif

        swap_big(&a, &b);

        #ifdef DEBUG
        printf("Third swap:\t a = %f, b = %f, c = %f\n",a, b, c);
        #endif

}




3. The attempts at a solution (include all code and scripts):
makefile
Code:
# target to make all programs for Lab 12
 all: swap swapbig reorder

# Problem 1 - swap programs
#complete the dependency and action lines for your filenames
swap: swaptest.o swap.o
        cc swaptest.o swap.o -o swap

swaptest.o: swap.h

swap.o: swap.h

# Problem 2 - swapbig programs
swapbig:swapbig.o
        cc driver.o swapbig.o -o swapbig

driver.o: swapbig.h

swapbig.o: swapbig.h

# Problem 3 - reorder programs
reorder: reorder.o
        cc driver1.o  reorder.o -o reorder

driver1.o: reorder.h

reorder.o: reorder.h

# source file dependencies
# add target lines showing dependencies for your .o files


# utility targets

clean:
        rm -f *.o

real_clean: clean
        rm -f swap swapbig reorder


4. Complete Name of School (University), City (State), Country, Name of Professor, and Course Number (Link to Course):
University of Hawaii at Manoa, Honolulu(HI), Oahu(Hawaii), Tep Dobry, ee160 EE 160: Lab 12


Note: Without school/professor/course information, you will be banned if you post here! You must complete the entire template (not just parts of it).

Last edited by Franklin52; 04-25-2011 at 02:17 PM.. Reason: Please use code tags
# 2  
Old 04-25-2011
That's weird that it'd be complaining about no 'swap', driver.c definitely doesn't use it from what I can tell. Maybe that's leftover junk from a previous build, try cleaning out your .o files. See if there's any leftover after you run 'make clean', maybe your makefile isn't deleting them all.
This User Gave Thanks to Corona688 For This Post:
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Programming

Makefile for g++

Hi All, We have moved our OS from Sun Solaris to Linux and also some of the compilers. Our old makefile used to be as below: CC=cc FLAGS=-G -KPIC -DLG_SOLARIS_OS DEFINES=-DSunOS SYSLIBS=-lc .SUFFIXES : .c .c.o : ;$(CC) -c $(FLAGS) $(DEFINES) $*.c -o $*.o ... (3 Replies)
Discussion started by: shash
3 Replies

2. UNIX for Dummies Questions & Answers

MakeFile

Hey everybody, This may be stup*d question for you, but i am new in unix and i wonder how can i make the rules for translating and linking my .c "primjer1.c", "primjer2.c" and "primjer3.c" in makefile. Thank you. (7 Replies)
Discussion started by: jskako
7 Replies

3. Shell Programming and Scripting

Makefile

Dear all, I have a quite simple question about how to manipulate "makefile.am". I intend to: 1. "CFLAGS" and "CXXFLAGS" have no value at all. I know that these values get "-g -O2" by default. On the other hand, when I try to set them as "CFLAGS = " in "makefile.am", I get warning messages... (4 Replies)
Discussion started by: Dandan
4 Replies

4. UNIX for Dummies Questions & Answers

Help with MakeFile

I'm really confused how to use a makefile. Are you supposed to be make a file from emacs called MakeFile and put code in there to compile? I am trying to create a makefile to compile two .cpp files in my current directory to produce two .o files and then link them... What I did was make a... (1 Reply)
Discussion started by: jzhang172
1 Replies

5. Homework & Coursework Questions

Help with Simple Multi-Level Makefile (Extremely New at Makefile)

Use and complete the template provided. The entire template must be completed. If you don't, your post may be deleted! 1. The problem statement, all variables and given/known data: Basically, the prompt is make a makefile with various sub makefiles in their respective subdirectories. All code... (1 Reply)
Discussion started by: Tatl
1 Replies

6. UNIX for Advanced & Expert Users

Makefile executing another Makefile first?

I have 2 libraries in 2 different directories that I build with Makefiles. library B depends on library A. If I modify a .cpp file in library A and run lib B's Makefile can I have B's makefile to automatically rebuild library A? I am now rebuilding A, followed by B... but I'd like B to... (0 Replies)
Discussion started by: wwuster
0 Replies

7. UNIX for Advanced & Expert Users

Makefile problem - How to run module load in a Makefile

Hi, I'm trying to run the module load command in a Makefile and i'm getting the following error: make: module: command not found Why is this? Is there any way to run this command in a Makefile? NOTE: command - module load msjava/sunjdk/1.5.0 works fine outside of the Makefile (2 Replies)
Discussion started by: hernandinho
2 Replies

8. High Performance Computing

help with makefile

I am new to creating makefiles. I have several fortran programs in a folder called as "test" and also have several subroutines in another folder (which is inside this test folder) called as libry My makefile is in the folder "test" I want to create a makefile which can access the files in... (2 Replies)
Discussion started by: explorer
2 Replies

9. Programming

Makefile help

Hi, What I want to do is for make to reconstruct the target even if its dependencies have not changed. So, even if if the dependent files do not have a more recent timestamp, the commands are executed. The reason I want to do this.. 1)someone executes make on solaris. We have a solaris... (4 Replies)
Discussion started by: tantric
4 Replies

10. Programming

about the makefile

can anyone well explain how to create a makefile? especially those commands in the makefile? BTW, what is CFLAG? (2 Replies)
Discussion started by: ligerdave
2 Replies
Login or Register to Ask a Question