I am trying to create a .exe file from my .cpp with ROOT and GSL libraries. My Makefile is:
ObjSuf = o
SrcSuf = C
DllSuf = so
OutPutOpt = -o
ROOTLIBS = $(shell root-config --libs)
ROOTGLIBS = $(shell root-config --glibs)
ROOTCFLAGS = $(shell root-config --cflags)CXX = g++
CXXFLAGS = -O2 -Wall -fPIC
LD = g++
SOFLAGS = -shared
LIBS = $(ROOTLIBS) $(ROOTGLIBS)
CXXFLAGS += $(ROOTCFLAGS) -Iinclude
LIBS += -lSpectrum -lMinuitmacro.exe: macro.o
$(CXX) $(CXXFLAGS) $(ALLLIBS) $(ALLEXES) -o macro.exe macro.o $(LIBS)
@echo “Done”clean:
@rm -f *.o *~ core
As suggested in other questions in the forum, I added at the top of my macro.cpp:
R__LOAD_LIBRARY(libgsl)
R__LOAD_LIBRARY(gsl)
Among other libraries, I also have
#include <gsl/gsl_matrix.h>
#include <gsl/gsl_odeiv2.h>
I followed similar threads about GSL and Makefile to edit my Makefile, but nothing worked (here I posted the Makefile that someone sent me and is supposed to work with ROOT libraries). The errors after typing make
are endless, but the first lines are:
macro.cpp:1:16: error: expected constructor, destructor, or type conversion before ‘(’ token
R__LOAD_LIBRARY(libgsl);
^
macro.cpp:2:16: error: expected constructor, destructor, or type conversion before ‘(’ token
R__LOAD_LIBRARY(gsl); //To make gsl work
I tried typing those lines in a ROOT terminal, and it worked fine. I don’t know what the problem can be.
How can I correct my Makefile to make it work?