General :: Use Make And Makefile To Compile And Link Some .cpp/.h
Sep 20, 2009
I've been trying to figure out how to use make and makefile to compile and link some .cpp/.h. All i seem to find on google says to read the README for the software. But this is my own created c++ project. Im just looking for a simple makefile for my own .cpp/.h files( about 20 total).
I have tried using 2 different makefile "examples" as a template, but neither worked. I am getting error saying "file1.cpp: no newline character at end of file". or something to that degree.
As part of an assignment, our class was given a small set of c++ classes which are compiled using a makefile. As part of the assignment, I have created a namespace and saved in it a .cpp file. The functions, constants and typedefs from the namespace are now used in one of the original files, and so I added an <#include MyFile.cpp> to the file I modified, in addition to a using MyNamespace;
When I try to use the original makefile, the compiler gives a lot of errors about multiple definitions of every function in the namespace. What do I need to do to resolve this? Do I need to change the makefile or one of the files themselves? I am new to Linux programming and makesfiles.
Does anyone know if it is possible to make rules in a Makefile that would work like this:
> make debug module or > make module debug
where module can be any module that has a specific rule in the Makefile.
The thing I have is a Makefile with different rules that I compile like this:
> make module
What I would like is to add an option so I can compile whichever module with debug-information just by adding a debug to the make command. The debug-information I know how to do, the problem is how to make the Makefile work...
I am new to Linux and I am trying to install a C program from source using Makefile. So I 've created a "hello world" program and then a Makefile to install it. Then I logged in as root and used make install
The following error occurs: make: execvp: /usr/bin: Permission denied make: *** [install] Error 127
Here is the Makefile: CC=gcc CFLAGS=-c -Wall PROGS = hello INSTDIR = $(prefix)/usr/bin/ INSTMODE = 0755 INSTOWNER = root INSTGROUP = root
all: $(PROGS) $(PROGS): main.o $(CC) main.o main.o: main.c $(CC) $(CFLAGS) main.c install:$(PROGS) $(INSTALL) $(INSTDIR) $(INSTALL) $(INSTMODE) $(INSTOWNER) -o $(INSTGROUP) $(PROGS) $(INSTDIR) clean: rm -rf $(PROGS) *o $(PROGS) So, where are the errors
I've been trying to work out a way to stop chunks of code being compiled using a variable in my makefile but can't work it out. What I mean is for example in my code I might have.
/****output comms portdata********/ printf(" debug comms port %d",ReadPort("ttys1);
I only wish this code to be compiled when I'm debugging. What I've tried is using #ifdef with
#ifdef COMM_PORT_DEBUG printf(" debug comms port %d",ReadPort("ttys1); #endif
Then in my make file I set COMM_PORT_DEBUG to 1 so
DEBUG_DEFS = COMM_PORT_DEBUG=1
I then thought I could put it into my in my link line
I am new to the whole concept of makefiles, and I'm trying to compile and build my program using a makefile template I have found. My project consists of three directories: "source", where my .cpp files are (source1.cpp, source2.cpp, source3.cpp), "include", where my .h files are (header1.h, header2.h, header3.h), and "obj", where the object files are to be stored (obj1.o, obj2.o, obj3.o). In the project root directory is my makefile, which is as follows:
Code: EXEC = myexe CC = g++ IDIR = include SDIR = source ODIR = obj
It looks like the library is found (no error anyway) but the functions in it are not seen. Text at the beginning of libparapin.a includes function names as used in the test program, and parapin.h declares them.
I want to gave much details as possible. working directory (~/a1/shell) in the shell directory i have Makefile. also in the shell directory i have subdirectory's (obj, src, include)
My current Makefile
Quote:
#What needs to be built to make all files and dependencies
clean:
# End of Makefile
I wanted it so: all .o files are created in the obj subdirectory, and my application, sshell, is created in the shell directory.
I am getting this error when i run the make run: No rule to make target 'shell.h', needed by 'shutil.o'. stop
Can you make a symlink read only? I have about 100 users who all have a .login. They like to modify their .login, which is fine in most cases, but sometimes they do it wrong & it screws up a LOT of the things they are supposed to be doing. Because of this, I'm going to lock down all .logins & I thought, "wouldn't it be nice if we could modify one file & all users would get the modification?" So I'm currently testing having everyone's .login point to a central .login via symlink. It works fine, but it appears that the users can [re]move the link & replace it with a file, thus defeating the purpose. Can I lock down the symlink so the user cannot move or remove the link? FWIW, it must be a symbolic link (as opposed to a hard link) as the file it points to is on an NFS share (not the same file system).
im trying to install Squid clamav with squid(fedora11, 386MB, 2.6kernel)..i configured clamd and is working fine,(squid wrking fine) then i tried to install squidclamav via (yum -y install curl-devel).then i downloaded squidclamav-4.0.tar.gz and extracted.. then i run ./configure and then make.but make install command wont work; it shows an error.
I have a number of projects, say test1, test2, test3,. I want to make and install all of them in exactly the same way; so I would like to say make test2 make install test2 with the same Makefile.
In other words, I would like to pass the argument test2 (or just 2) to the Makefile, so this is taken as the target for make or make install. This must be a common wish; but I don't see any appropriate option with "man make" on my Fedora-12 system.
I'm trying to make recursive makefile work but it's giving me two problems. I have a top folder with the main Makefile and one Makefile for each sub folder 'one' and 'two'. Makefile in subfolder 'one' and 'two' are identical. The top Makefile (still a bit messy) looking like this:
Code: # Directories CC = gcc CFLAGS = -Wall -Wextra TARGET_DIR = bin MAIN_FILE = one.c
I notice that when you try to Make link to any file or folder form context menu, It just copy the same file size? even when i tried to copy the link to external storage disk..
Trying to build a driver for a TV tuner card. When I enter 'make menuconfig', I get this error:
make[2]: Entering directory `/usr/src/linux-headers-2.6.32-5-amd64' /lib/modules/2.6.32-5-amd64/source/scripts/Makefile.build:44: /lib/modules/2.6.32-5-amd64/source/scripts/basic/Makefile: No such file or directory make[3]: *** No rule to make target `/lib/modules/2.6.32-5-amd64/source/scripts/basic/Makefile'. Stop. make[2]: *** [scripts_basic] Error 2
Suspect I need another package in addition to linux-headers. Running Squeeze, amd64, KDE.
I'm trying to cross compile the GNU make for Alpha Architecture on my i686 PC and the GNU make i compiled would be placed in my virtual hard disk which is a Alpha based linux simulated system. My question is now , I'm able to cross compile the GNU make on my i686 real PC machine , but when i let the make program run in my virtual machine , it pops out the error ..
make: /lib/libc.so.6.1: version `GLIBC_2.4' not found (required by make)
After that, I try another alternative , and I read through the file "INSTALL" on the GNU make directory that I downloaded from the internet . In this case , I downloaded make-3.81. On the sub section "Compiling For Multiple Architectures" It says that
"You can compile the package for more than one kind of computer at the same time, by placing the object files for each architecture in their own directory. To do this, you must use a version of `make' that supports the `VPATH' variable, such as GNU `make'. `cd' to the directory where you want the object files and executables to go and run the `configure' script.`configure' automatically checks for the source code in the directory that `configure' is in and in `..'. If you have to use a `make' that does not support the `VPATH' variable, you have to compile the package for one architecture at a time in the source code directory. After you have installed the package for one architecture, use `make distclean' before reconfiguring for another architecture." And I do not understand the line "by placing the object files for each architecture in their own directory" . What object files that I should put ?
I'm just learning to use Eclipse (have previously been a vim+make developer). I created the standard Hello World project following the tutorial. The program compiles fine, but if I build it again without cleaning the project, make aborts with a glibc double free message (pasted below). The same thing happens if I run make in the Debug directory outside eclipse. I don't know make well enough to figure out what the problem is, and to my mind Eclipse shouldn't be generating a buggy makefile anyway.
I've attached a tarfile of the project directory. Download the file and the following sequence of commands should show you the problem: tar xvzf HelloWorld.tar.gz && cd HelloWorld/Debug && make && make Also, if you think it would be worthwhile submitting a bugreport to the Fedora Eclipse dev team, let me know where I can do that and I'll be happy to.
whenever i'm in the process of compiling and installing a new kernel in ubuntu lucid lynx i get an error message when i get to the make bzimage part is there some sort of program that i needed to install first or is there an alternative to doing this.
I needed an open source alternative to after effects so i went for jahshaka but after following the instructions, i type in 'make' and hit return and it says "make: *** No targets specified and no makefile found. Stop." am i missing something obvious? i have looked around the web, but no-one has this problem that i can find i am using ubuntu 10.04.
I just downloaded slackware 13.1(x86) and i'm trying to compile ndiswrapper-1.56 using the slackbuild from slackbuils.org and i'm getting this error:
Code:
Makefile:535: /usr/src/linux-2.6.33.4/arch/i486/Makefile: No such file or directory make[2]: *** No rule to make target `/usr/src/linux-2.6.33.4/arch/i486/Makefile'. Stop. make[1]: *** [modules] Error 2 make: *** [all] Error 2
i have installed mouse trap by the Ubuntu "easy peasy" software center ,but for some reason it didn't work so i uninstalled it and start to install the mouse trap from herehttp://live.gnome.org/MouseTrap/Installationbut when did the "make" step it gave me that error:make: *** No targets specified and no makefile found. Stop.so how i fix thatand another problem that i have is when i go to a live radio on the net to listen it dose not work how do i change it to work like i changed to the "vlc player" to be the first program that opens
I recently switched over to Fedora 13 but I'm having a bit of trouble. I've tried writing simple programs in Emacs and Eclipse but neither will compile. It always gives the error, "make: *** No targets specified and no makefile found. Stop."
I've looked around at a couple of forums, but people with the same issue can't install software, but I can. I got Fedora from the Fedora website so I know its complete, but I have the sneaking suspicion that I'm just missing a file or something.
I have searched around and am trying to understand the difference between a hard link and symbolic link (soft link). I found this link is quite useful. But I am still not very clear. I understand soft link is not a copy of original file, but is a hard link a copy or not?