Problem with a Makefile


 
Thread Tools Search this Thread
Top Forums Programming Problem with a Makefile
# 1  
Old 11-19-2008
Problem with a Makefile

Hi, I am very new with makefile topics , maybe this is a very symple question...
I have this code wich compile very good ( I get it from the net), I will call it code A.
I have to add it with a program that is all ready in use, (code B) that also compile good. When I put together it doesnt compile anymore. The problem is that I have to use the makefile of the code B, wich have in this line:
PACKDEFS = -I$(CMX_AUTO_INCLUDE) -I$(CMX_USER_INCLUDE) -Aa

If I remove the instruction -Aa ( I think is used to ansi C) my code A compiles, but the code B doesnt.

I dont know how to do it since I need both codes works together.

Code A:

Code:
/* tcpclient.c */

#include <sys/socket.h>
#include <sys/types.h>
#include <netinet/in.h>
#include <netdb.h>
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <unistd.h>
#include <errno.h>


int main()

{

        int sock, bytes_recieved;  
        char send_data[1024],recv_data[1024];
        struct hostent *host;
        struct sockaddr_in server_addr;  

		char header[15];

        host = gethostbyname("prueba");
		if ( host==NULL)
		{
		 printf (" no encuentro la direccion \n");
		}
		printf ("la direecion es %s  \n", host->h_addr_list );
			 printf("\n eNTRando en acCCioN...\n ");
        if ((sock = socket(AF_INET, SOCK_STREAM, 0)) == -1) {
            perror("Socket");
            exit(1);
        }

        server_addr.sin_family = AF_INET;     
        server_addr.sin_port = htons(5000);   
        server_addr.sin_addr = *((struct in_addr *)host->h_addr);
        bzero(&(server_addr.sin_zero),8); 
		
        if (connect(sock, (struct sockaddr *)&server_addr,
                    sizeof(struct sockaddr)) == -1) 
        {
            perror("Connect");
            exit(1);
        }

        while(1)
        {
          

		  printf("\n ES hora de mandar datos.. que desea enviar? (q or Q to quit) : ");
          gets(header);
				send_data[0]= 0x02;
				send_data[1]= 0x07;
				send_data[2]= 0x31;
				send_data[3]= 0x31;
				send_data[4]= 0x17;

			strcat (send_data,header);
				header[0]= 0x05;
				header[1]= '\0';
				strcat (send_data,header);
		  if (strcmp(send_data , "q") == 0 || strcmp(send_data , "Q") == 0)
              {
                send(sock, send_data,strlen(send_data), 0); 
                close(sock);
                break;
              }
               
              else
                 send(sock, send_data,strlen(send_data), 0);  

          bytes_recieved=recv(sock,recv_data,1024,0);
          recv_data[bytes_recieved] = '\0';
 
          if (strcmp(recv_data , "q") == 0 || strcmp(recv_data , "Q") == 0)
          {
           close(sock);
           break;
          }

          else
           printf("\nRecieved data = %s " , recv_data);
           
           printf("\nSEND (q or Q to quit) : ");
           gets(send_data);
           
          if (strcmp(send_data , "q") != 0 && strcmp(send_data , "Q") != 0)
           send(sock,send_data,strlen(send_data), 0); 

          else
          {
           send(sock,send_data,strlen(send_data), 0);   
           close(sock);
           break;
          }
        
        }   
return 0;
}

Compiling error:


Code:
ulcmx1:oasys:prueba> make new
--- Completed TARGET=clean:/usr/oasys/V5.2.2/source/project/simcot/prueba./HP/
--- Completed TARGET=depend:/usr/oasys/V5.2.2/source/project/simcot/prueba
Lib
--- Completed TARGET=LIB:/usr/oasys/V5.2.2/source/project/simcot/prueba
        cc  -c -DHP -DSYSTEM_10 +u4 -DSAMMI3 -I/usr/oasys/V5.2.2/source/include/auto/HP -I/usr/oasys/V5.2.2/source/include/user -Aa tcp.c -o ./HP/tcp.o
cc: "tcp.c", line 29: error 1574: Unknown size for "server".
cc: "tcp.c", line 30: error 1594: The sizeof operator cannot be applied to types with unknown size.
cc: "tcp.c", line 50: error 1588: "AF_INET" undefined.
cc: "tcp.c", line 50: error 1588: "SOCK_STREAM" undefined.
cc: "tcp.c", line 68: error 1530: Undefined struct or union.
cc: "tcp.c", line 73: error 1530: Undefined struct or union.
cc: "tcp.c", line 73: error 1529: Cannot select field of non-structure.
cc: "tcp.c", line 73: error 1588: "INADDR_ANY" undefined.
*** Error exit code 1

I wont put code B because it is long.
Thanks

Last edited by vino; 11-19-2008 at 03:15 AM..
# 2  
Old 11-19-2008
Makefiles are a programming language in their own right, and PACKDEFS is just a variable. Without seeing the makefile entire, we really can't guess what it's doing with PACKDEFS.
# 3  
Old 11-19-2008
My Makefile

Here is the makefile of the CODE B:

### SccsId[] = "@(#)Makefile 1.1 11/06/98"
#!/bin/sh
#
# Include the macro definition file
#
include $(MAKE_DIR)/$(MACHINE)/make.macro

#
#---------------------------START HERE------------------------------------
#
# a: Use the default definition "NO_SUB_DIR", if there is no subdirectories.
# otherwise add all the required subdirectory names in SUBDIRS.
# example:
# (1)SUBDIRS = dbll cmxlib cpulib
#
# Just uncomment the following line if there is no subdirectory.
#SUBDIRS = NO_SUB_DIR
#
SUBDIRS = NO_SUB_DIR

#
# b: PACKDEFS is the macro definitions, additional include file directories
# and debug flag for compilation.
# example:
# (1)PACKDEFS = -w -DSYS_V -DSTD_C -I$(SAM_INCLUDE)
# Leave it empty if it is not used.
#
# CGG: Anadido Compilacion con ANSI (para INTECHANGE)
PACKDEFS = -I$(CMX_AUTO_INCLUDE) -I$(CMX_USER_INCLUDE) -Aa

#
# c: To make a library add the library name in LIBRARIES, e.g cmxlib.a,
# cpulib.a etc, in the following lines define the contents of the library.
#
# example: (1)LIBRARIES = dblllib.a cmxlib.a
# (2)dblllib.a = dbload.o dbpath.o dbfileio.o dboutput.o \
# (3) dblist.o dbtemplate.o dbtabular.o
# (4)cmxlib.a = ...
#
# Note: Remember to put a SPACE before "=" or "\"
# Leave it undefined if there is no library in this package.
# The "lib.a =" is the key for parsing the makefile.
#
LIBRARIES =

#
# d: To make a specific program add the program name in EXECUTABLES, e.g
# dbll, swbusd etc. In the following lines define the objects for making
# the program.
# example: (1)EXECUTABLES = dbll
# (2)dbll.exe = dbll.o $(CMX_LIB) $(CMX_LIB)/dblllib.a \
# /usr/lib/libmV.a
#
# Note: Remember to put a SPACE before "=" or "\"
# Leave it undefined if there is no executable in this package.
# The ".exe =" is the keyword for parsing the makefile,
# You may have to add the system libraries, e.g. SYBASE, SAMMI, MOTIF etc.
# Besure to put the complete path for the system libraries, e.g.
# use /usr/lib/libmV.a not -lm.
#
EXECUTABLES = simacc
simacc.exe = simacc.o $(CMXLIBS) $(SYB_CLIENT) $(MACHINE_LIBS)
#
# Libreria especifica para proyecto SIMCOT:
# $(SIM_LIBS) = /usr/oasys/V5.2.2/HP/oasys/lib/simcotlib.a
#
#-----------------------STOP HERE------------------------------
# Include the makefile (make.include) and dependencies file (./_depend)
# You have to do a "touch ./_depend; make depend" if the dependencies
# file not exist.
#
include $(MAKE_DIR)/make.include
include $(OBJ_DIR)_depend

#
# END OF MAKEFILE
#
# 4  
Old 11-19-2008
I forgot to say that simacc.exe is my code B
# 5  
Old 11-20-2008
There's nothing in that makefile that uses PACKDEFS, it just defines it, the relevant code must be somewhere in the 3 other makefiles it includes.
# 6  
Old 11-21-2008
Which are the other 3 makes files? I have no idea, can you give me the name so I look for it at the computer?
Any way , what do the -Aa instruccion?
# 7  
Old 11-21-2008
Code:
### SccsId[] = "@(#)Makefile	1.1 11/06/98"
#!/bin/sh 
#
# Include the macro definition file
#
include $(MAKE_DIR)/$(MACHINE)/make.macro

<snip>

include $(MAKE_DIR)/make.include
include $(OBJ_DIR)_depend

#
# END OF MAKEFILE
#

As for what the values in PACKDEFS mean, we still can't tell without the actual code of the makefile. PACKDEFS is just a string, what -aA does depends on what you feed it into.
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Programming

Problem running a makefile

I have written this makefile and am getting an error saying make nfd gfortran -O -Wall -fbacktrace -fno-align-commons -c -o fd.o fd.f fd.f:49: Error: Can't open included file 'fd.par' make: *** Error 1 The directory structure is as follows . ├── library │ ├── fd │ │ ├──... (3 Replies)
Discussion started by: kristinu
3 Replies

2. Programming

Problem creating a makefile

hello, I'm trying to create a makefile to run multiple c files. I am able to run one c file only with the code I have when I tried to run 2 or more c files I'm not able. here is my code # $Source: /home/hectormasencio/make/Makefile,v $ # $Date: 2012/11/27 11:35:30 $ CC= gcc OBJS= temp.o... (3 Replies)
Discussion started by: Hector M.
3 Replies

3. Emergency UNIX and Linux Support

Problem With Makefile

I had created a Makefile for my project. my project file hierarchy is like this: 1. a source folder with main.c and Makefile in it 2. and a top level Makefile here is the Makefile in src folder all: program program: main.c gcc -o program main.c clean: rm programand here is top... (3 Replies)
Discussion started by: majid.merkava
3 Replies

4. Programming

Noob makefile problem

Im trying to build a makefile for the first time in many years and Im coming to a screaching halt on something that should be child's play; just compiling two files. Here is an excerpt of the make file. (using GMAKE on a TI compiler) CCHP = <<compiler>> PROJ_DIR = . APP_DIR ... (2 Replies)
Discussion started by: DrNismo
2 Replies

5. Programming

Problem with Makefile

Hi, Here is my makefile http://pastie.org/1104332. I am trying to compile different .c files and .s files (assembly files) from different sub directories into E:/em35x/build/mfg-sample-app-cortexm3-iar-em357-em3xx-dev0680/ then the linker should link all the .o files from the build directory... (1 Reply)
Discussion started by: blade2008
1 Replies

6. Programming

please help me with this big makefile problem

I need to create an executable with these two makefiles(they both have libaries i need(qt and ruby)) i have extconf.rb gui.ui gui_include.h main.cpp ScaleIM_client.rb ui_gui.h i want to combine them all into one executable please!... (2 Replies)
Discussion started by: gjgfuj
2 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. Programming

Simple Makefile Problem (with a dependency)

Hi all, I have 4 '.cpp' files and 1 header files: Tools.cpp Code1.cpp Code2.cpp Code3.cpp and Tools.hh Now all Code1.cpp, Code2.cpp, Code3.cpp use functions stored in Tools.cpp. Currently, what I do to compile all of them is using this simple shell script: (1 Reply)
Discussion started by: monkfan
1 Replies

9. Programming

Problem with makefile

My make file is CFLAGS = -Wall -g LDFLAGS = -lm CC = g++ all: server client rc4.o: rc4.cpp rc4.h ${CC} ${CFLAGS} -c rc4.cpp server.o: server.cpp rc4.h ${CC} ${CFLAGS} -c .cpp client.o: client.cpp rc4.h ${CC} ${CFLAGS} -c client.cpp server: server.o... (2 Replies)
Discussion started by: neerajgoyal12
2 Replies

10. UNIX for Advanced & Expert Users

problem with Makefile

Hi, I have a makefile which looks like this ProcessA : commands touch pro1 ProcessB : pro1 commands touch pro2 ProcessC: pro3 commands and after some runs, i wish only pro3 to run and I check that "pro1" and "pro2" are there in the directory, but still, if i give make... (3 Replies)
Discussion started by: sskb
3 Replies
Login or Register to Ask a Question