Sponsored Content
Top Forums Shell Programming and Scripting GNU make doesn't pick up changes Post 302524649 by pludi on Tuesday 24th of May 2011 06:32:34 AM
Old 05-24-2011
GNU make doesn't pick up changes

It's been a while since I had to write a Makefile, but I've managed to clobber this together:
Code:
SRC=module1.c module2.c
OBJS=$(SRC:%.c=%.o)
HDR=include1.h include2.h

CC=gcc
CFLAGS=-Wall -ggdb -D_XOPEN_SOURCE -I. -ansi

all: program

program: $(OBJS)
        $(CC) $(CFLAGS) -o $@ $(OBJS)

.o: $(@:%.o=%.c) $(HDR)
        $(CC) $(CFLAGS) -c $<

clean:
        rm -f program $(OBJS)

It works for the most part, except when a change in one of the includes happens, result in make telling me "nothing to do".
Code:
$ make
gcc -Wall -ggdb -D_XOPEN_SOURCE -I. -ansi   -c -o module1.o module1.c
gcc -Wall -ggdb -D_XOPEN_SOURCE -I. -ansi   -c -o module2.o module2.c
gcc -Wall -ggdb -D_XOPEN_SOURCE -I. -ansi -o program module1.o module2.o
$ touch include1.h
$ touch include2.h
$ make
make: Nothing to be done for `all'.
$ touch module1.c
$ make
gcc -Wall -ggdb -D_XOPEN_SOURCE -I. -ansi   -c -o module1.o module1.c
gcc -Wall -ggdb -D_XOPEN_SOURCE -I. -ansi -o program module1.o module2.o
$

Both include?.h files are used in both module?.c files. I probably screwed up the prerequisite part of the target definition, but for the love of the FSM, I can't find it.

All files reside on a ext3 LV, without any special time-keeping options altered.

Any help would be greatly appreciated.
 

8 More Discussions You Might Find Interesting

1. UNIX for Advanced & Expert Users

Problems with gnu make

I am running a make file through the gnu make tool and i am getting the following error jsh1035c:/users/egate453/admegate/kapil/samples $ make -f GNUmakefile queue_c make -f ./GNUmakefile queue_c in_objdir=1 build_root=/users/egate453/admegate/kapil/samples make: Entering directory... (2 Replies)
Discussion started by: handak9
2 Replies

2. UNIX for Dummies Questions & Answers

What's the difference between PMake and GNU Make?

My system is ubuntu, can I use PMake ? (0 Replies)
Discussion started by: meili100
0 Replies

3. Solaris

SSH doesn't pick up user's project from /etc/project

We have a system running ssh. When a user logs in, they do not get the project they are assigned to (they run under "system"). I verify the project using the command "ps -e -o user,pid,ppid,args,project". If you do a "su - username", the user does get the project they are assigned to (and all... (2 Replies)
Discussion started by: kurgan
2 Replies

4. UNIX for Dummies Questions & Answers

my make doesn't work

hi I wrote the following makefile, I have just one problem, when i type make clean I get the message make 'clean' is up to date and any obj file is removed from my folder, what's wrong? Thank you CC = cc all: es.o elaboration.o $(CC) -o es es.o elaboration.o elaboration.o:... (0 Replies)
Discussion started by: Puntino
0 Replies

5. UNIX for Dummies Questions & Answers

a for loop that doesn't make sense

I've been referring bash info for processes and came across a structure for a process which is defined like typedef struct process { struct process *next; char ** argv . . . }process; What I don't understand is that in the program there's a for loop which goes like this job... (2 Replies)
Discussion started by: sdsd
2 Replies

6. Programming

Detecting host OS in Gnu make

Is this possible? Right now I'm developing some code for Linux, Windows and OS X. To build on each of the systems I've currently got separate build targets for each platform. Ideally I'd like to set up a single make rule that can detect the appropriate target and build it. I know this is... (2 Replies)
Discussion started by: G_Morgan
2 Replies

7. SCO

GNU cpp and make on SCO

Installed GNU make and the GNU C/C++ compiler on SCO Openserver 5.0.7 recently. Only a normal user is able to run make and compile programs - root is not able to. Under root, make do run, but root can't access the compiler at all, even tho I set root's path to point to the compiler.... (0 Replies)
Discussion started by: The_Librarian
0 Replies

8. AIX

Not picking up the GNU version of make

Hi team, I am new to unix,and need your advice on the below. I am using aix5.3 and have installed make-3.82 on the server. I need to use gmake for configuring and installing a package ,but it is giving error at the below root@sapsrp:/usr/tmp/xymon-4.3.2 # ./configure.server ... (7 Replies)
Discussion started by: sonal kumar
7 Replies
strchg(1)																 strchg(1)

NAME
strchg, strconf - change or query stream configuration SYNOPSIS
strchg -h module1 [ , module2...] strchg -p [-a | -u module] strchg -f filename strconf [-m | -t module] These commands are used to alter or query the configuration of the stream associated with the user's standard input. The strchg command pushes modules on and/or pops modules off the stream. The strconf command queries the configuration of the stream. Only the super-user or owner of a STREAMS device can alter the configuration of that stream. Invoked without any arguments, strconf prints a list of all the modules in the stream as well as the topmost driver. The list is printed with one name per line where the first name printed is the topmost module on the stream (if one exists) and the last item printed is the name of the driver. The following options apply to strchg and, -h, -f, and -p are mutually exclusive. -a Pop all the modules above the topmost driver off the stream. This option requires the -p option. -f filename Specify a filename that contains a list of modules representing the desired configuration of the stream. Each module name must appear on a separate line where the first name represents the topmost module and the last name represents the module that should be closest to the driver. strchg determines the current configuration of the stream and pop and push the necessary modules in order to end up with the desired configuration. -h module1 [,module2...] Mnemonic for push, pushes modules onto a stream. It takes as arguments the names of one or more pushable streams modules. These mod- ules are pushed in order; that is, module1 is pushed first, module2 is pushed second, etc. -p Mnemonic for pop, pops modules off the stream. With the -p option alone, strchg pops the topmost module from the stream. -u module All modules above, but not including module are popped off the stream. This option requires the -p option. The following options apply to strconf and, -m and -t are mutually exclusive. -m module Determine if the named module is present on a stream. If it is, strconf prints the message yes and returns zero. If not, strconf prints the message no and returns a non-zero value. The -t and -m options are mutually exclusive. -t module Print only the topmost module (if one exists). The -t and -m options are mutually exclusive. Example 1: Using the strchg Command The following command pushes the module ldterm on the stream associated with the user's standard input: example% strchg -h ldterm The following command pops the topmost module from the stream associated with /dev/term/24. The user must be the owner of this device or the super user. example% strchg -p < /dev/term/24 If the file fileconf contains the following: ttcompat ldterm ptem then the command example% strchg -f fileconf configures the user's standard input stream so that the module ptem is pushed over the driver, followed by ldterm and ttcompat closest to the stream head. The strconf command with no arguments lists the modules and topmost driver on the stream; for a stream that has only the module ldterm pushed above the zs driver, it would produce the following output: ldterm zs The following command asks if ldterm is on the stream: example% strconf -m ldterm and produces the following output while returning an exit status of 0: yes See attributes(5) for descriptions of the following attributes: +-----------------------------+-----------------------------+ | ATTRIBUTE TYPE | ATTRIBUTE VALUE | |Availability |SUNWcsu | +-----------------------------+-----------------------------+ attributes(5), streamio(7I) strchg returns zero on success. It prints an error message and returns non-zero status for various error conditions, including usage error, bad module name, too many modules to push, failure of an ioctl on the stream, or failure to open filename from the -f option. strconf returns zero on success (for the -m or -t option, "success" means the named or topmost module is present). It returns a non-zero status if invoked with the -m or -t option and the module is not present. It prints an error message and returns non-zero status for vari- ous error conditions, including usage error or failure of an ioctl on the stream. If the user is neither the owner of the stream nor the super-user, the strchg command fails. If the user does not have read permissions on the stream and is not the super user, the strconf command fails. If modules are pushed in the wrong order, one could end up with a stream that does not function as expected. For ttys, if the line disci- pline module is not pushed in the correct place, one could have a terminal that does not respond to any commands. 24 Mar 2005 strchg(1)
All times are GMT -4. The time now is 10:23 AM.
Unix & Linux Forums Content Copyright 1993-2022. All Rights Reserved.
Privacy Policy