0

I'm attempting to compile HPC REPAST and after using the install script included with it, and then editing the Makefile, there's an error that pops up when attempting to run the make file

/RHPC_2.0/ext/CURL/lib/libcurl.a(libcurl_la-version.o): In function `curl_version_info':
version.c:(.text+0x24): undefined reference to `zlibVersion'
version.c:(.text+0x37): undefined reference to `stringprep_check_version'
/RHPC_2.0/ext/CURL/lib/libcurl.a(libcurl_la-version.o): In function `curl_version':
version.c:(.text+0xf5): undefined reference to `zlibVersion'
version.c:(.text+0x11b): undefined reference to `stringprep_check_version'
version.c:(.text+0x12a): undefined reference to `stringprep_check_version'

This error also goes on for a few hundred more lines all starting with 'undefined reference' then ends with make: *** [../bin/zombie_model] Error 1

I've read that there might be a -lz flag missing, but I'm not too sure on where to place it

My make file

CXX=$(BASE_DIR)/MPICH/bin/mpicxx
CXXLD=$(BASE_DIR)/MPICH/bin/mpicxx -static
BOOST_INCLUDE_DIR=$(BASE_DIR)/Boost/Boost_1.54/include
BOOST_LIB_DIR=$(BASE_DIR)/Boost/Boost_1.54/lib
BOOST_INFIX=-mt-s
NETCDF_INCLUDE_DIR=$(BASE_DIR)/NetCDF/include
NETCDF_LIB_DIR=$(BASE_DIR)/NetCDF/lib
CURL_INCLUDE_DIR=$(BASE_DIR)/CURL/include
CURL_LIB_DIR=$(BASE_DIR)/CURL/lib 

# DIRECTORIES 
SRC_DIR=../src
REPAST_HPC_DIR=../src/repast_hpc
RELOGO_DIR=../src/relogo
RUMOR_DIR=../src/rumor_model
ZOMBIE_DIR=../src/zombies

# DERIVED VARIABLES (Do not modify)
I_REPAST=-I$(REPAST_HPC_DIR)
I_BOOST=-I$(BOOST_INCLUDE_DIR)
L_BOOST=-L$(BOOST_LIB_DIR)
l_BOOST=-lboost_mpi$(BOOST_INFIX) -lboost_serialization$(BOOST_INFIX) -lboost_system$(BOOST_INFIX) -lboost_filesystem$(BOOST_INFIX)
I_NETCDF=-I$(NETCDF_INCLUDE_DIR)
L_NETCDF=-L$(NETCDF_LIB_DIR)
l_NETCDF=-lnetcdf_c++ -lnetcdf
I_CURL=-I$(CURL_INCLUDE_DIR)
L_CURL=-L$(CURL_LIB_DIR)
l_CURL=-lcurl

# SOURCE FILES
# Repast HPC
REPAST_HPC_SOURCES=$(addprefix $(REPAST_HPC_DIR)/, \
AgentId.cpp           AgentImporterExporter.cpp  AgentRequest.cpp    AgentStatus.cpp \
Graph.cpp             GridComponents.cpp         GridDimensions.cpp  NCDataSet.cpp \
NCDataSetBuilder.cpp  NetworkBuilder.cpp         Properties.cpp      Random.cpp \
RepastErrors.cpp      RepastProcess.cpp          SRManager.cpp       SVDataSet.cpp \
SVDataSet.cpp         SVDataSetBuilder.cpp       Schedule.cpp        SharedContext.cpp \
SharedBaseGrid.cpp    SharedNetwork.cpp          Utilities.cpp       ValueLayer.cpp \
Variable.cpp          initialize_random.cpp      io.cpp              logger.cpp \
spatial_math.cpp )

# ReLogo
RELOGO_SOURCES=$(addprefix $(RELOGO_DIR)/, \
AbstractRelogoAgent.cpp   AgentSet.cpp    Observer.cpp                   Patch.cpp \
RandomMove.cpp            RelogoAgent.cpp RelogoContinuousSpaceAdder.cpp RelogoDiscreteSpaceAdder.cpp \
RelogoLink.cpp            Turtle.cpp      WorldCreator.cpp               WorldDefinition.cpp \
creators.cpp              utility.cpp )

# Rumor Model
RUMOR_SOURCES=$(addprefix $(RUMOR_DIR)/, \
RumorModel.cpp  main.cpp)

# Zombie Model
ZOMBIE_SOURCES=$(addprefix $(ZOMBIE_DIR)/, \
Human.cpp   InfectionSum.cpp   Zombie.cpp   ZombieObserver.cpp \
main.cpp)


# OBJECT FILES
REPAST_HPC_OBJECTS=$(patsubst %.cpp,%.o,$(REPAST_HPC_SOURCES))
RELOGO_OBJECTS=$(patsubst %.cpp,%.o,$(RELOGO_SOURCES))
RUMOR_OBJECTS=$(patsubst %.cpp,%.o,$(RUMOR_SOURCES))
ZOMBIE_OBJECTS=$(patsubst %.cpp,%.o,$(ZOMBIE_SOURCES))


# TARGETS
REPAST_VERSION=2.0
REPAST_HPC_NAME=repast_hpc-$(REPAST_VERSION)
REPAST_HPC_LIB=../lib/lib$(REPAST_HPC_NAME).a
RELOGO_NAME=relogo-$(REPAST_VERSION)
RELOGO_LIB=../lib/lib$(RELOGO_NAME).a
RUMOR_EXE=../bin/rumor_model
ZOMBIE_EXE=../bin/zombie_model

l_REPAST_HPC=-l$(REPAST_HPC_NAME)
l_RELOGO=-l$(RELOGO_NAME)


# Default rule makes everything
.PHONY : all
all: copy_includes repast_hpc relogo rumor_model zombie_model

.PHONY : copy_includes
copy_includes:
    mkdir -p ../include/repast_hpc
    mkdir -p ../include/relogo
    cp $(REPAST_HPC_DIR)/*.h ../include/repast_hpc/
    cp $(RELOGO_DIR)/*.h ../include/relogo/

$(REPAST_HPC_LIB): $(REPAST_HPC_OBJECTS)
    mkdir -p ../lib
    rm -f $(REPAST_HPC_LIB)
    ar rc $(REPAST_HPC_LIB) $(REPAST_HPC_OBJECTS)
    ranlib $(REPAST_HPC_LIB)

$(RELOGO_LIB): $(RELOGO_OBJECTS)
    mkdir -p ../lib
    rm -f $(RELOGO_LIB)
    ar rc $(RELOGO_LIB) $(RELOGO_OBJECTS)
    ranlib $(RELOGO_LIB)

$(RUMOR_EXE): $(REPAST_HPC_LIB) $(RUMOR_OBJECTS)
    mkdir -p ../bin
    cp $(RUMOR_DIR)/config.props ../bin/rumor_config.props
    cp $(RUMOR_DIR)/model.props ../bin/rumor_model.props
    $(CXXLD) -L../lib/ $(L_BOOST) $(L_NETCDF) $(RUMOR_OBJECTS) $(l_NETCDF) $(l_REPAST_HPC) $(l_BOOST) -o $(RUMOR_EXE)

$(ZOMBIE_EXE): $(REPAST_HPC_LIB) $(RELOGO_LIB) $(ZOMBIE_OBJECTS)
    mkdir -p ../bin
    cp $(ZOMBIE_DIR)/config.props ../bin/zombie_config.props
    cp $(ZOMBIE_DIR)/model.props ../bin/zombie_model.props
    $(CXXLD) -L../lib/ $(L_BOOST) $(L_NETCDF) $(L_CURL) $(ZOMBIE_OBJECTS) $(l_NETCDF) $(l_CURL) $(l_RELOGO) $(l_REPAST_HPC) $(l_BOOST) -o $(ZOMBIE_EXE)

# User-friendly names
.PHONY : repast_hpc
repast_hpc: $(REPAST_HPC_LIB)

.PHONY : relogo
relogo: $(RELOGO_LIB)

.PHONY : rumor_model
rumor_model: $(RUMOR_EXE)

.PHONY : zombie_model
zombie_model: $(ZOMBIE_EXE)


# Cleanup
.PHONY : repast_hpc_clean
repast_hpc_clean:
    rm -f $(REPAST_HPC_LIB)
    rm -f $(REPAST_HPC_DIR)/*.o

.PHONY : relogo_clean
relogo_clean :
    rm -f $(RELOGO_LIB)
    rm -f $(RELOGO_DIR)/*.o

.PHONY : rumor_clean
rumor_clean :
    rm -f $(RUMOR_EXE)
    rm -f $(RUMOR_DIR)/*.o

.PHONY : zombie_clean
zombie_clean :
    rm -f $(ZOMBIE_EXE)
    rm -f $(ZOMBIE_DIR)/*.o

.PHONY : clean
clean: repast_hpc_clean relogo_clean rumor_clean zombie_clean

.PHONY : distclean
distclean: clean
    rm -fr ../include
    rm -fr ../lib
    rm -fr ../bin


# Object files are built from cpp files
%.o:
    $(CXX) -c $(I_BOOST) $(I_NETCDF) $(I_CURL) -I$(SRC_DIR) -o $@ $*.cpp

# Cancel implicit rule for name with no suffix, to avoid confusing output:
%: %.o
  • Try to put it in this line : `$(CXXLD) -L../lib/ $(L_BOOST) $(L_NETCDF) $(L_CURL) $(ZOMBIE_OBJECTS) $(l_NETCDF) $(l_CURL) $(l_RELOGO) $(l_REPAST_HPC) $(l_BOOST) -o $(ZOMBIE_EXE)` between `$(CXXLD) -L../lib/ $(L_BOOST) $(L_NETCDF) $(L_CURL) $(ZOMBIE_OBJECTS) $(l_NETCDF) $(l_CURL) $(l_RELOGO) $(l_REPAST_HPC) $(l_BOOST)` and `-o $(ZOMBIE_EXE)` – Thronghar May 19 '15 at 14:51
  • Have you tried to use Repast 2.1 instead? It has improved some build process. http://repast.10935.n7.nabble.com/Repast-HPC-2-1-Released-td10979.html – Nat May 19 '15 at 14:56

0 Answers0