Make: missed separator in implicit rules definition - makefile

I install Eric IDE on Windows 7, and it requires QScintilla2 library. I tried to build that library using qmake and MinGW's make and got a make error:
make -f Makefile.Release
make[1]: Entering directory `/d/Install/QScintilla-gpl-2.7.2/Qt4Qt5'
Makefile.Release:481: *** missing separator. Stop.
make[1]: Leaving directory `/d/Install/QScintilla-gpl-2.7.2/Qt4Qt5'
make: *** [release] Error 2
Makefile content:
####### Implicit rules
.SUFFIXES: .c .cpp .cc .cxx
{..\lexlib}.cpp{release\}.obj:: ## line 481
$(CXX) -c $(CXXFLAGS) $(INCPATH) -Forelease\ #<<
$<
<<
I'm not familiar with make, so could anyone explain what does this code mean and how to fix the error?
NOTE: when I insert \t before <<, I got the following error:
make[1]: *** [{..\lexlib}.cpp{release\}.obj] Error 2
make[1]: Leaving directory `/d/Install/QScintilla-gpl-2.7.2/Qt4Qt5'
make: *** [release] Error 2

Related

Why does makefile pattern rule fail with spaces in name. How do I fix it?

For a Makefile containing...
File\ space.o: %.o : %.c
echo hello
make returns
make: *** No rule to make target 'File.c space.c', needed by 'File space.o'. Stop.
Why does it not return...
make: *** No rule to make target 'File space.c', needed by 'File space.o'. Stop.
?

Cross compiling hello world module

I am trying to cross compile a simple hello world program. The cross compiler I am using is for Buildroot Linux on a RPI4. I am trying to do the compilation on my Ubuntu machine.
I get this error:
make[2]: *** No rule to make target '/home/j_sizzle/Documents/Lab11-2/hello1.o', needed by '/home/j_sizzle/Documents/Lab11-2/hello1.mod'. Stop.
make[1]: *** [Makefile:1825: /home/j_sizzle/Documents/Lab11-2] Error 2
make[1]: Leaving directory '/home/j_sizzle/Documents/buildroot/buildroot-2021.11.1-rpi/output/build/linux-custom'
make: *** [Makefile:7: default] Error 2
My Makefile looks like this:
obj-m += hello1.o
KDIR := /home/j_sizzle/Documents/buildroot/buildroot-2021.11.1-rpi/output/build/linux-custom/
PWD := $(shell pwd)
default:
$(MAKE) -C $(KDIR) KBUILD_EXTMOD=$(PWD) ARCH=arm CROSS_COMPILE=/home/j_sizzle/Documents/buildroot/buildroot-2021.11.1-rpi/output/host/bin/arm-buildroot-linux-uclibcgnueabihf- modules
clean:
$(MAKE) -C $(KDIR) KBUILD_EXTMOD=$(PWD) clean
rm -f *~cd
I'm not really sure what I need to do here and I am somewhat new to makefiles so sorry if I am doing something dumb. I do know that this cross compiler works when just compiling a c program, but this is my first time trying to use it for modules.

Errors wihen buildng NetCDF: 'cd: IR/grib2/lib: No such file or directory'

I tried to installing netcdf-4.1.3. After configuring the netcdf-4.1.3 file, i had errors with my 'make' command. The error message is below
ameyaw_prince#Mytoses-ThinkPad-T430:~/Build_WRF/LIBRARIES/netcdf-4.1.3$ make
make all-recursive
make[1]: Entering directory '/home/ameyaw_prince/Build_WRF/LIBRARIES/netcdf-4.1.3'
Making all in include
make[2]: Entering directory '/home/ameyaw_prince/Build_WRF/LIBRARIES/netcdf-4.1.3/include'
make[2]: Nothing to be done for 'all'.
make[2]: Leaving directory '/home/ameyaw_prince/Build_WRF/LIBRARIES/netcdf-4.1.3/include'
Making all in libdispatch
make[2]: Entering directory '/home/ameyaw_prince/Build_WRF/LIBRARIES/netcdf-4.1.3/libdispatch'
/bin/bash ../libtool --tag=CC --mode=link /usr/bin/gcc -g -O2 -LIR/grib2/lib -o libdispatch.la libdispatch_la-parallel.lo libdispatch_la-copy.lo libdispatch_la-file.lo libdispatch_la-dim.lo libdispatch_la-att.lo libdispatch_la-error.lo libdispatch_la-var.lo libdispatch_la-dispatch.lo libdispatch_la-nc_uri.lo libdispatch_la-nclist.lo libdispatch_la-ncbytes.lo libdispatch_la-nchashmap.lo libdispatch_la-nclog.lo -lm -lcurl
../libtool: line 5992: cd: IR/grib2/lib: No such file or directory
libtool: link: cannot determine absolute directory name of `IR/grib2/lib'
make[2]: *** [Makefile:328: libdispatch.la] Error 1
make[2]: Leaving directory '/home/ameyaw_prince/Build_WRF/LIBRARIES/netcdf-4.1.3/libdispatch'
make[1]: *** [Makefile:551: all-recursive] Error 1
make[1]: Leaving directory '/home/ameyaw_prince/Build_WRF/LIBRARIES/netcdf-4.1.3'
make: *** [Makefile:422: all] Error 2

Compile error when compiling a driver using Makefile

When I try to compile the hello.c as a driver component, I got an error as follows:
root#ubuntu:/home/steven/Downloads# make
make -C /lib/modules/`uname -r`/build M=/home/steven/Downloads modules
make[1]: Entering directory '/usr/src/linux-headers-4.15.0-29-generic'
CC [M] /home/steven/Downloads/hello.o
**cc1: error: code model kernel does not support PIC mode**
scripts/Makefile.build:332: recipe for target '/home/steven/Downloads/hello.o' failed
make[2]: *** [/home/steven/Downloads/hello.o] Error 1
Makefile:1552: recipe for target '_module_/home/steven/Downloads' failed
make[1]: *** [_module_/home/steven/Downloads] Error 2
make[1]: Leaving directory '/usr/src/linux-headers-4.15.0-29-generic'
Makefile:13: recipe for target 'modules' failed
make: *** [modules] Error 2
My Makefile is as follows:
ifneq ($(KERNELRELEASE),)
MODULE_NAME = hellomodule
$(MODULE_NAME)-objs := hello.o
obj-m := $(MODULE_NAME).o
else
KERNEL_DIR = /lib/modules/`uname -r`/build
MODULEDIR := $(shell pwd)
.PHONY: modules
default: modules
modules:
make -C $(KERNEL_DIR) M=$(MODULEDIR) modules
clean distclean:
rm -f *.o *.mod.c .*.*.cmd *.ko
rm -rf .tmp_versions
endif
Can anybody help me to solve this problem?

(Cygwin - make) file not recognized: File format not recognized collect2: ld returned 1 exit status

I'm using Cygwin (in windows 7) to emulate Linux terminal, however, when I execute "make" to one of the files, I get the following error, (please note that this worked in Linux terminal)
cd ./agents/randomAgentJava/ && make
make[1]: Entering directory `/cygdrive/f/Linux Files/Helicopter_Control/rl-competition/agents/randomAgentJava'
javac -source 5 -d bin -cp ../../system/libraries/RLVizLib.jar src/RandomAgent/RandomAgent.java
warning: [options] bootstrap class path not set in conjunction with -source 1.5
1 warning
make[1]: Leaving directory `/cygdrive/f/Linux Files/Helicopter_Control/rl-competition/agents/randomAgentJava'
cd ./agents/randomAgentCPP/ && make
make[1]: Entering directory `/cygdrive/f/Linux Files/Helicopter_Control/rl-competition/agents/randomAgentCPP'
make[1]: Nothing to be done for `all'.
make[1]: Leaving directory `/cygdrive/f/Linux Files/Helicopter_Control/rl-competition/agents/randomAgentCPP'
cd ./agents/mountainCarAgentCPP/ && make
make[1]: Entering directory `/cygdrive/f/Linux Files/Helicopter_Control/rl-competition/agents/mountainCarAgentCPP'
make[1]: Nothing to be done for `all'.
make[1]: Leaving directory `/cygdrive/f/Linux Files/Helicopter_Control/rl-competition/agents/mountainCarAgentCPP'
cd ./agents/realTimeStrategyAgentJava/ && make
make[1]: Entering directory `/cygdrive/f/Linux Files/Helicopter_Control/rl-competition/agents/realTimeStrategyAgentJava'
javac src/**/*.java -d bin -cp ../../system/libraries/RLVizLib.jar
make[1]: Leaving directory `/cygdrive/f/Linux Files/Helicopter_Control/rl-competition/agents/realTimeStrategyAgentJava'
cd ./agents/helicopterAgentCPP/ && make
make[1]: Entering directory `/cygdrive/f/Linux Files/Helicopter_Control/rl-competition/agents/helicopterAgentCPP'
g++ -c -I../../system/RL-Glue/RL-Glue -I../../system/RL-Glue/Utils -I./src src/weak_baseline_controller.cpp -o bin/weak_baseline_controller.o
g++ -o ./bin/RL_agent bin/weak_baseline_controller.o bin/Glue_utilities.o bin/RL_client_agent.o bin/RL_network.o -lm
bin/Glue_utilities.o: file not recognized: File format not recognized
collect2: ld returned 1 exit status
Makefile:25: recipe for target `bin/RL_agent' failed
make[1]: *** [bin/RL_agent] Error 1
make[1]: Leaving directory `/cygdrive/f/Linux Files/Helicopter_Control/rl-competition/agents/helicopterAgentCPP'
Makefile:13: recipe for target `all' failed
make: *** [all] Error 2
Thanks in advance!

Resources