I have always written build (compilation) and install as completely different (to make(1), even unrelated) stages. I could even write them in two separate Makefiles since they are completely isolated.
But a year ago or so, I wrote a Makefile where I specified the dependencies between install and compilation, and noticed some good things.
See the following minimal example:
.PHONY: all
all: build
.PHONY: build
build: foo
.PHONY: install
install: /usr/local/bin/foo
foo: foo.c
cc -o $# $<
/usr/local/bin/foo: foo
install -m 755 -T $< $#
Should /usr/local/bin/foo depend on foo or not?
Reasons to state the dependency:
Only install if necessary (if foo was recompiled).
Of course, that saves considerable install time.
The Makefile can compile something if we forgot to compile it (but see below).
Reasons to not state the dependency:
Make sure that you never compile accidentally as root.
Make sure you install the correct files,
even if they were edited more recently than the compiled files.
This would be similar to the concept of a reinstall.
But for that rare scenario, one could run 'make uninstall && make install'.
The GNU Make Manual, section Standard Targets, lists several standard targets and what make users should expect from them. About the install target:
Compile the program and copy the executables, libraries, and so on to the file names where they should reside for actual use. If there is a simple test to verify that a program is properly installed, this target should run that test.
As for running make as root, I think most do sudo make install without second thoughts. If you're not sure what the makefile will do you can review the output of make -n install for any shenanigans (after running make all to review just the install part).
I'm running this code from Github:
# Modify Makefile.config according to your Caffe installation.
cp Makefile.config.example Makefile.config
make -j8
# Make sure to include $CAFFE_ROOT/python to your PYTHONPATH.
make py
make test -j8
# (Optional)
make runtest -j8
And for the line:
make -j8
The output is:
bash: make: command not found
Which is I think it is because make is not a valid command. What packages should I install and how? I tried looking for it on the internet about the error that I was getting but no luck.
I thought it was CMake that I'm missing and actually installed it. I got this in my Program Files folder:
But it still gives out the same error.
i downloaded cmake but make is still not recognizable. So I downloaded make first then cmake afterwards then include it to my environmental variables. And I had to restart my laptop.
I've got a perl module (Email::AutoReply) which has BerkeleyDB listed in the README as an optional dependency. When you try to install it with cpan or cpanminus, it tries to install BerkeleyDB as well. The problem is that no matter what I do, BerkeleyDB fails to install with a long list of errors, even though I meet all the requirements. This is preventing me from installing Email::AutoReply, even though it's supposed to be an optional thing.
So, how do I install a module without one of it's dependencies? Can I remove the dependency somehow? Is there some command line option for this?
After installing the other dependencies (which you probably have done from your earlier attempts),
cd /tmp
wget http://search.cpan.org/CPAN/authors/id/A/AM/AMONSEN/Email-AutoReply-1.04.tar.gz
tar xvzf Email-AutoReply-1.04.tar.gz
cd Email-AutoReply
perl Makefile.PL && make test && make install
cd ..
rm -rf Email-AutoReply
I usually write a makefile with an install target so that one can build and install with make && make install. This works for Shell and C projects. However, when I use Python, I usually write a setup.py to install the modules correctly.
In the makefile, I would like to call ./setup.py install, I am not sure how to get all the parameters form the makefile, like DESTDIR right. Debian uses some special magic, when I package something with only a setup.py in it. Having a makefile present uses makefile magic.
Or is it possible to call rst2man and gzip and install those files into $(DESTDIR)/usr/share/man from setup.py? Then I could put everything into the setup.py.
How do I combine the two?
By default, setup.py installs modules into sys.prefix (you can have different Pythons with different sys.prefix).
You can override that with --prefix argument to setup.py.
E.g.:
build :
cd module && CPPFLAGS=${CPPFLAGS} python setup.py build --prefix=${PREFIX}
install :
cd module && CPPFLAGS=${CPPFLAGS} python setup.py install --prefix=${PREFIX}
See How installation works for more details.
I have a problem installing package dionaea.
After I type this:
./configure --with-lcfg-include=/opt/dionaea/include/ \
--with-lcfg-lib=/opt/dionaea/lib/ \
--with-python=/opt/dionaea/bin/python3.1 \
--with-cython-dir=/usr/bin \
--with-udns-include=/opt/dionaea/include/ \
--with-udns-lib=/opt/dionaea/lib/ \
--with-emu-include=/opt/dionaea/include/ \
--with-emu-lib=/opt/dionaea/lib/ \
--with-gc-include=/usr/include/gc \
--with-ev-include=/opt/dionaea/include \
--with-ev-lib=/opt/dionaea/lib \
--with-nl-include=/opt/dionaea/include \
--with-nl-lib=/opt/dionaea/lib/ \
--with-curl-config=/opt/dionaea/bin/ \
--with-pcap-include=/opt/dionaea/include \
--with-pcap-lib=/opt/dionaea/lib/ \
--with-glib=/opt/dionaea
and the next step is:
#make
An error message appears:
make: *** No targets specified and no makefile found. Stop.
My directory is /usr/local/src
make takes a makefile as input. Makefile usually is named makefile or Makefile. The configure command should generate a makefile, so that make could be in turn executed. Check if a makefile has been generated under your working directory.
running ./configure should solve your problem.
I got the same error and i fixed it by looking at the solution from this site:
http://trac.macports.org/ticket/40476.
SO did you got any error after running './configure' ? Maybe something about lacking tclConfig.sh.
If so, instead of running './configure', you have to search for the tclConfigure.sh first and then put it in the command, in my case, its located in /usr/lib/. And then run:
'./configure ----with-tcl=/usr/lib --with-tclinclude=/usr/include'
./configure command should generate a makefile, named makefile or Makefile. if in the directory there is no this file, you should check whether the configure command execute success.
in my case, I configure the apr-util:
./configure --prefix=/usr/local/apr-util --with-apr=/usr/local/apr/bin/apr-1-config
because the --with-apr=/usr/local/apr/bin/apr-1-config, the apr did not install yet, so there configure fail, there did not generate the apr's /usr/local/apr/bin/apr-1-config.
So I install the apr, then configure the apr-util, it works.
You had to have something like this:
"configure: error: "Error: libcrypto required."
after your ./configure runs. So you need to resolve noticed dependencies first and then try ./configure once more time and then run make !
I recently ran into this problem while trying to do a manual install of texane's open-source STLink utility on Ubuntu. The solution was, oddly enough,
make clean
make
If after ./configure Makefile.in and Makefile.am are generated and make fail (by showing this following make: *** No targets specified and no makefile found. Stop.) so there is something not configured well, to solve it, first run "autoconf" commande to solve wrong configuration then re-run "./configure" commande and finally "make"
Delete your source tree that was gunzipped or gzipped and extracted to folder and reextract again. Supply your options again
./configure --with-option=/path/etc ...
Then if all libs are present, your make should succeed.
This may happen if there is any read and write permission denial to the user. Like C:\Windows\System32\ have restricted access and you are cloned and trying to make from such restricted directory.
If you create Makefile in the VSCode, your makefile doesnt run. I don't know the cause of this issue. Maybe the configuration of the file is not added to system. But I solved this way. delete created makefile, then go to project directory and right click mouse later create a file and named Makefile. After fill the Makefile and run it. It will work.
Try
make clean
./configure --with-option=/path/etc
make && make install
In my case there was a file Makefile.PL in a database library:
http://www.cpan.org/modules/by-module/DBI/DBI-1.630.tar.gz
The following command created the makefile
perl Makefile.PL
After that, make command worked
I think that it can mean that ./configure command failed for some reason, in my case it was due to a missing package. So i have used my OS package manager to install required package (autoconf and autoconf-archive in my case), then it worked.
first time try
make clean
make
if these didn't solve your issue you have to install build packages.
debian base
apt-get install build-essential libgtk-3-dev
For RHEL/CentOS
sudo yum install gcc glibc glibc-common gd gd-devel -y
Step 1: Install the Required Dependencies
First, launch the Terminal and run the commands below to install the required dependencies and libraries.
sudo apt install autoconf automake libpcre3-dev libnl-3-dev libsqlite3-dev libssl-dev ethtool build-essential g++ libnl-genl-3-dev libgcrypt20-dev libtool python3-distutils
sudo apt install -y pkg-config
Step 2: Compile and Install
Now, run the commands below (one by one in order) to compile the source code and install Your Repo on your system.
[Before this enter you directory ex: cd folder_name]
sudo autoreconf -i
sudo ./configure --with-experimental --with-ext-scripts
sudo make
sudo make install
I hope this time problem will be solved.
You need to check the output of the configure command.
Mine contained this error:
configure: error: in `/home/ubuntu/build/php-8.0.19':
configure: error: The pkg-config script could not be found or is too old. Make sure it
is in your PATH or set the PKG_CONFIG environment variable to the full
path to pkg-config.
Then I googled the error and solved it.
Before running "make" you need to configure your build using "CMake"
Try:
cmake .
Creating Makefile in the VScode did not worked for me. So, delete the make file created in the VS code, go to the project directory and create file add all the commands in it and name it as Makefile and save. Then try to execute it in VS code. It will work. Don't know why it doesn't work with VS code.
Unpack the source from a working directory and cd into the file directory as root. Use the commands ./configure then make and make install