The link to the “build from source on linux” points you to the version for MAC, I think. I tweaked the “makefile” by
- commenting out the “if you are a MAC user” block
- uncommenting the “if you are a linux user” block.
- I also renamed the file “Makefile”
Then I needed to tweak the file “mk” in the subdirectory uchime_src.
3. comment out the static linkage option so the block looks like this
LINK_OPTS=
#if [ uname -s
== Linux ] ; then
LINK_OPTS=-static
#fi
-
Oh yeah – the “clean” and “install” targets of the “Makefile” do not work correctly.
Ranther than fixing them I just cleaned and installed by hand. You may wish to
modify the targets accordingly -
SUGGESTION: archive as a tarball as this is more commonly done in linux – unzip is not
usually included in most distros whereas tar and gzip are. Call the base directory mothur
and then tar-zip it up one level higher
tar cvf mothur.1.33.tar mothur
gzip mothur.1.33.tar
6. SUGGESTION: include an INSTALL file in the mothur base directory:
#################################################
INSTALL (goes in mothur base directory
###############################################
To install on linux, just extract, make and clean. If you want
a local installation execute the ln -s command
tar xvfz mothur.1.33.tar.gz
cd mothur
make
rm .o
rm uchime_src/.o
ln -s pwd
/mothur /usr/local/bin/mothur
7. Other Files attached: ######################################### ### Makefile (revised, goes in the mothur base directory) ########################################## ################################################### # # Makefile for mothur # Created: June 29, 2010 # ###################################################
Macros
USEMPI ?= no
64BIT_VERSION ?= yes
USEREADLINE ?= yes
USECOMPRESSION ?= no
MOTHUR_FILES="“Enter_your_default_path_here”"
RELEASE_DATE = "“4/4/2014"”
VERSION = "“1.33.3"”
FORTAN_COMPILER = gfortran
FORTRAN_FLAGS =
Optimize to level 3:
CXXFLAGS += -O3
ifeq ($(strip $(64BIT_VERSION)),yes)
#if you are using centos uncomment the following lines
#CXX = g++44
#if you are a mac user use the following line
TARGET_ARCH += -arch x86_64
#if you using cygwin to build Windows the following line
#CXX = x86_64-w64-mingw32-g++
#CC = x86_64-w64-mingw32-g++
#FORTAN_COMPILER = x86_64-w64-mingw32-gfortran
#TARGET_ARCH += -m64 -static
#if you are a linux user use the following line
CXXFLAGS += -mtune=native -march=native
CXXFLAGS += -DBIT_VERSION
FORTRAN_FLAGS = -m64
endif
CXXFLAGS += -DRELEASE_DATE=${RELEASE_DATE} -DVERSION=${VERSION}
ifeq ($(strip $(MOTHUR_FILES)),"“Enter_your_default_path_here”")
else
CXXFLAGS += -DMOTHUR_FILES=${MOTHUR_FILES}
endif
# if you do not want to use the readline library, set this to no. # make sure you have the library installed
ifeq ($(strip $(USEREADLINE)),yes) CXXFLAGS += -DUSE_READLINE LIBS = \ -lreadline\ -lncurses endif
ifeq ($(strip $(USEMPI)),yes) CXX = mpic++ CXXFLAGS += -DUSE_MPI endif
if you want to enable reading and writing of compressed files, set to yes.
The default is no. this may only work on unix-like systems, not for windows.
ifeq ($(strip $(USECOMPRESSION)),yes) CXXFLAGS += -DUSE_COMPRESSION endif
INCLUDE directories for mothur
CXXFLAGS += -I.
Get the list of all .cpp files, rename to .o files
OBJECTS=$(patsubst %.cpp,%.o,$(wildcard *.cpp))
OBJECTS+=$(patsubst %.c,%.o,$(wildcard *.c))
OBJECTS+=$(patsubst %.f,%.o,$(wildcard *.f))
mothur : fortranSource $(OBJECTS) uchime
$(CXX) $(LDFLAGS) $(TARGET_ARCH) -o $@ $(OBJECTS) $(LIBS)
strip mothur
uchime:
cd uchime_src && ./mk && mv uchime … && cd …
fortranSource:
${FORTAN_COMPILER} -c $(FORTRAN_FLAGS) *.f
install : mothur
cp mothur …/Release/mothur
%.o : %.c %.h
$(COMPILE.c) $(OUTPUT_OPTION) $<
%.o : %.cpp %.h
$(COMPILE.cpp) $(OUTPUT_OPTION) $<
%.o : %.cpp %.hpp
$(COMPILE.cpp) $(OUTPUT_OPTION) $<
clean : @rm -f $(OBJECTS) @rm -f uchime
###################################### ### mk (goes in the uchime_src subdirectory of the mothur base directory #################################### #!/bin/bash CPPNames='addtargets2 alignchime alignchimel alnparams alpha alpha2 fractid getparents globalalign2 make3way mx myutils path searchchime seqdb setnucmx sfasta tracebackbit uchime_main usort viterbifast writechhit' ObjNames='addtargets2.o alignchime.o alignchimel.o alnparams.o alpha.o alpha2.o fractid.o getparents.o globalalign2.o make3way.o mx.o myutils.o path.o searchchime.o seqdb.o setnucmx.o sfasta.o tracebackbit.o uchime_main.o usort.o viterbifast.o writechhit.o'
rm -f *.o mk.stdout mk.stderr tmp.stderr
for CPPName in $CPPNames
do
echo $CPPName >> /dev/tty
g++ $ENV_GCC_OPTS -c -O3 -msse2 -mfpmath=sse -D_FILE_OFFSET_BITS=64 -DNDEBUG=1 -DUCHIMES=1 $CPPName.cpp -o $CPPName.o >> mk.stdout 2>> tmp.stderr
cat tmp.stderr
cat tmp.stderr >> mk.stderr
rm -f tmp.stderr
done
LINK_OPTS=
#if [ uname -s
== Linux ] ; then
LINK_OPTS=-static
#fi
g++ $LINK_OPTS $ENV_LINK_OPTS -g -o uchime $ObjNames >> mk.stdout 2>> tmp.stderr
cat tmp.stderr
cat tmp.stderr >> mk.stderr
rm -f tmp.stderr
strip uchime
ls -lh uchime
sum uchime