Reputation: 103
I'm trying to compile fortran code given to me by a labmate to run some analyses. The program involves calling MATLAB scripts to calculate certain things. The files he gave me were set up to run on a different computer and I'm trying to get them working on mine. I've changed the ACML and MATLAB library paths to the corresponding ones on my computer.
The error I'm getting is:
gfortran -v -O2 -Wl,-rpath-link,/usr/local/MATLAB/R2012a/bin/glnxa64 -L/opt/acml4.3.0/gfortran64/lib -lacml -lacml_mv -lgfortran -L/usr/local/MATLAB/R2012a/bin/glnxa64 -leng -lmx obj/gctad.mod.o obj/glrkn_functions.mod.o obj/glrkn.mod.o obj/tfe.mod.o obj/glrkn_ext.mod.o obj/tfe_readfile.mod.o obj/glrkn_readfile.mod.o obj/matlab.mod.o obj/partitions.mod.o obj/glrkn_preproc.o obj/glrkn_thrml_props.o obj/glrkn_init_logs.o obj/glrkn_press_init.o obj/glrkn_press_updt.o obj/glrkn_tmpr_init.o obj/glrkn_tmpr_updt.o obj/glrkn_ext_press_init.o obj/glrkn_ext_press_updt.o obj/glrkn_ext_tmpr_init.o obj/glrkn_ext_tmpr_updt.o obj/glrkn_dynamic.o obj/glrkn_el_log.o obj/glrkn_rk4.o obj/glrkn_nwmrk.o obj/glrkn_init_accel.o obj/sorti.o obj/tfe_preproc.o obj/tfe_reorder.o obj/tfe_mtxmk.o obj/tfe_ext_out_init.o obj/tfe_ext_flx_init.o obj/tfe_ext_out_updt.o obj/tfe_ext_flx_updt.o obj/tfe_flx_init.o obj/tfe_flx_updt.o obj/tfe_dynamic.o obj/tfe_tmpr_rate_init.o obj/panel_main.o -o main.out
Driving: gfortran -v -O2 -Wl,-rpath-link,/usr/local/MATLAB/R2012a/bin/glnxa64 -L/opt/acml4.3.0/gfortran64/lib -lacml -lacml_mv -l gfortran -l m -L/usr/local/MATLAB/R2012a/bin/glnxa64 -leng -lmx obj/gctad.mod.o obj/glrkn_functions.mod.o obj/glrkn.mod.o obj/tfe.mod.o obj/glrkn_ext.mod.o obj/tfe_readfile.mod.o obj/glrkn_readfile.mod.o obj/matlab.mod.o obj/partitions.mod.o obj/glrkn_preproc.o obj/glrkn_thrml_props.o obj/glrkn_init_logs.o obj/glrkn_press_init.o obj/glrkn_press_updt.o obj/glrkn_tmpr_init.o obj/glrkn_tmpr_updt.o obj/glrkn_ext_press_init.o obj/glrkn_ext_press_updt.o obj/glrkn_ext_tmpr_init.o obj/glrkn_ext_tmpr_updt.o obj/glrkn_dynamic.o obj/glrkn_el_log.o obj/glrkn_rk4.o obj/glrkn_nwmrk.o obj/glrkn_init_accel.o obj/sorti.o obj/tfe_preproc.o obj/tfe_reorder.o obj/tfe_mtxmk.o obj/tfe_ext_out_init.o obj/tfe_ext_flx_init.o obj/tfe_ext_out_updt.o obj/tfe_ext_flx_updt.o obj/tfe_flx_init.o obj/tfe_flx_updt.o obj/tfe_dynamic.o obj/tfe_tmpr_rate_init.o obj/panel_main.o -o main.out -l gfortran -l m -shared-libgcc
Using built-in specs.
COLLECT_GCC=gfortran
COLLECT_LTO_WRAPPER=/usr/lib/gcc/x86_64-linux-gnu/4.6/lto-wrapper
Target: x86_64-linux-gnu
Configured with: ../src/configure -v --with-pkgversion='Ubuntu/Linaro 4.6.3-1ubuntu5' --with-bugurl=file:///usr/share/doc/gcc-4.6/README.Bugs --enable-languages=c,c++,fortran,objc,obj-c++ --prefix=/usr --program-suffix=-4.6 --enable-shared --enable-linker-build-id --with-system-zlib --libexecdir=/usr/lib --without-included-gettext --enable-threads=posix --with-gxx-include-dir=/usr/include/c++/4.6 --libdir=/usr/lib --enable-nls --with-sysroot=/ --enable-clocale=gnu --enable-libstdcxx-debug --enable-libstdcxx-time=yes --enable-gnu-unique-object --enable-plugin --enable-objc-gc --disable-werror --with-arch-32=i686 --with-tune=generic --enable-checking=release --build=x86_64-linux-gnu --host=x86_64-linux-gnu --target=x86_64-linux-gnu
Thread model: posix
gcc version 4.6.3 (Ubuntu/Linaro 4.6.3-1ubuntu5)
Reading specs from /usr/lib/gcc/x86_64-linux-gnu/4.6/libgfortran.spec
rename spec lib to liborig
COLLECT_GCC_OPTIONS='-v' '-O2' '-L/opt/acml4.3.0/gfortran64/lib' '-L/usr/local/MATLAB/R2012a/bin/glnxa64' '-o' 'main.out' '-shared-libgcc' '-mtune=generic' '-march=x86-64'
COMPILER_PATH=/usr/lib/gcc/x86_64-linux-gnu/4.6/:/usr/lib/gcc/x86_64-linux-gnu/4.6/:/usr/lib/gcc/x86_64-linux-gnu/:/usr/lib/gcc/x86_64-linux-gnu/4.6/:/usr/lib/gcc/x86_64-linux-gnu/
LIBRARY_PATH=/usr/lib/gcc/x86_64-linux-gnu/4.6/:/usr/lib/gcc/x86_64-linux-gnu/4.6/../../../x86_64-linux-gnu/:/usr/lib/gcc/x86_64-linux-gnu/4.6/../../../../lib/:/lib/x86_64-linux-gnu/:/lib/../lib/:/usr/lib/x86_64-linux-gnu/:/usr/lib/../lib/:/usr/lib/gcc/x86_64-linux-gnu/4.6/../../../:/lib/:/usr/lib/
COLLECT_GCC_OPTIONS='-v' '-O2' '-L/opt/acml4.3.0/gfortran64/lib' '-L/usr/local/MATLAB/R2012a/bin/glnxa64' '-o' 'main.out' '-shared-libgcc' '-mtune=generic' '-march=x86-64'
/usr/lib/gcc/x86_64-linux-gnu/4.6/collect2 --sysroot=/ --build-id --no-add-needed --as-needed --eh-frame-hdr -m elf_x86_64 --hash-style=gnu -dynamic-linker /lib64/ld-linux-x86-64.so.2 -z relro -o main.out /usr/lib/gcc/x86_64-linux-gnu/4.6/../../../x86_64-linux-gnu/crt1.o /usr/lib/gcc/x86_64-linux-gnu/4.6/../../../x86_64-linux-gnu/crti.o /usr/lib/gcc/x86_64-linux-gnu/4.6/crtbegin.o -L/opt/acml4.3.0/gfortran64/lib -L/usr/local/MATLAB/R2012a/bin/glnxa64 -L/usr/lib/gcc/x86_64-linux-gnu/4.6 -L/usr/lib/gcc/x86_64-linux-gnu/4.6/../../../x86_64-linux-gnu -L/usr/lib/gcc/x86_64-linux-gnu/4.6/../../../../lib -L/lib/x86_64-linux-gnu -L/lib/../lib -L/usr/lib/x86_64-linux-gnu -L/usr/lib/../lib -L/usr/lib/gcc/x86_64-linux-gnu/4.6/../../.. -rpath-link /usr/local/MATLAB/R2012a/bin/glnxa64 -lacml -lacml_mv -lgfortran -lm -leng -lmx obj/gctad.mod.o obj/glrkn_functions.mod.o obj/glrkn.mod.o obj/tfe.mod.o obj/glrkn_ext.mod.o obj/tfe_readfile.mod.o obj/glrkn_readfile.mod.o obj/matlab.mod.o obj/partitions.mod.o obj/glrkn_preproc.o obj/glrkn_thrml_props.o obj/glrkn_init_logs.o obj/glrkn_press_init.o obj/glrkn_press_updt.o obj/glrkn_tmpr_init.o obj/glrkn_tmpr_updt.o obj/glrkn_ext_press_init.o obj/glrkn_ext_press_updt.o obj/glrkn_ext_tmpr_init.o obj/glrkn_ext_tmpr_updt.o obj/glrkn_dynamic.o obj/glrkn_el_log.o obj/glrkn_rk4.o obj/glrkn_nwmrk.o obj/glrkn_init_accel.o obj/sorti.o obj/tfe_preproc.o obj/tfe_reorder.o obj/tfe_mtxmk.o obj/tfe_ext_out_init.o obj/tfe_ext_flx_init.o obj/tfe_ext_out_updt.o obj/tfe_ext_flx_updt.o obj/tfe_flx_init.o obj/tfe_flx_updt.o obj/tfe_dynamic.o obj/tfe_tmpr_rate_init.o obj/panel_main.o -lgfortran -lm -lgcc_s -lgcc -lquadmath -lm -lgcc_s -lgcc -lc -lgcc_s -lgcc /usr/lib/gcc/x86_64-linux-gnu/4.6/crtend.o /usr/lib/gcc/x86_64-linux-gnu/4.6/../../../x86_64-linux-gnu/crtn.o
obj/panel_main.o: In function `MAIN__':
panel_main.f90:(.text+0x280): undefined reference to `engopen_'
panel_main.f90:(.text+0x2a6): undefined reference to `engevalstring_'
panel_main.f90:(.text+0x419): undefined reference to `engevalstring_'
panel_main.f90:(.text+0x42e): undefined reference to `engclose_'
obj/glrkn_ext_press_init.o: In function `glrkn_ext_press_init_':
glrkn_ext_press_init.f90:(.text+0x25): undefined reference to `enggetvariable_'
glrkn_ext_press_init.f90:(.text+0x41): undefined reference to `mxgetnumberofelements_'
glrkn_ext_press_init.f90:(.text+0x54): undefined reference to `mxgetm_'
glrkn_ext_press_init.f90:(.text+0x67): undefined reference to `mxgetn_'
glrkn_ext_press_init.f90:(.text+0x92): undefined reference to `mxcreatedoublematrix_'
glrkn_ext_press_init.f90:(.text+0xb8): undefined reference to `mxcreatedoublematrix_'
glrkn_ext_press_init.f90:(.text+0xd6): undefined reference to `mxcreatedoublescalar_'
glrkn_ext_press_init.f90:(.text+0x1d8): undefined reference to `mxgetpr_'
glrkn_ext_press_init.f90:(.text+0x1fb): undefined reference to `mxcopyptrtoreal8_'
glrkn_ext_press_init.f90:(.text+0x22a): undefined reference to `enggetvariable_'
glrkn_ext_press_init.f90:(.text+0x246): undefined reference to `mxgetnumberofelements_'
glrkn_ext_press_init.f90:(.text+0x259): undefined reference to `mxgetm_'
glrkn_ext_press_init.f90:(.text+0x26c): undefined reference to `mxgetn_'
glrkn_ext_press_init.f90:(.text+0x36e): undefined reference to `mxgetpr_'
glrkn_ext_press_init.f90:(.text+0x391): undefined reference to `mxcopyptrtoreal8_'
obj/glrkn_ext_press_updt.o: In function `glrkn_ext_press_updt_':
glrkn_ext_press_updt.f90:(.text+0x563): undefined reference to `mxgetpr_'
glrkn_ext_press_updt.f90:(.text+0x587): undefined reference to `mxcopyreal8toptr_'
glrkn_ext_press_updt.f90:(.text+0x5a2): undefined reference to `engputvariable_'
glrkn_ext_press_updt.f90:(.text+0x5b7): undefined reference to `mxgetpr_'
glrkn_ext_press_updt.f90:(.text+0x5da): undefined reference to `mxcopyreal8toptr_'
glrkn_ext_press_updt.f90:(.text+0x5f5): undefined reference to `engputvariable_'
glrkn_ext_press_updt.f90:(.text+0x60a): undefined reference to `mxgetpr_'
glrkn_ext_press_updt.f90:(.text+0x62d): undefined reference to `mxcopyreal8toptr_'
glrkn_ext_press_updt.f90:(.text+0x648): undefined reference to `engputvariable_'
glrkn_ext_press_updt.f90:(.text+0x65d): undefined reference to `mxgetpr_'
glrkn_ext_press_updt.f90:(.text+0x680): undefined reference to `mxcopyreal8toptr_'
glrkn_ext_press_updt.f90:(.text+0x69b): undefined reference to `engputvariable_'
glrkn_ext_press_updt.f90:(.text+0x6ba): undefined reference to `engevalstring_'
glrkn_ext_press_updt.f90:(.text+0x6d9): undefined reference to `enggetvariable_'
glrkn_ext_press_updt.f90:(.text+0x6f5): undefined reference to `mxgetpr_'
glrkn_ext_press_updt.f90:(.text+0x718): undefined reference to `mxcopyptrtoreal8_'
glrkn_ext_press_updt.f90:(.text+0x724): undefined reference to `mxdestroyarray_'
glrkn_ext_press_updt.f90:(.text+0xc8a): undefined reference to `enggetvariable_'
glrkn_ext_press_updt.f90:(.text+0xca6): undefined reference to `mxgetpr_'
glrkn_ext_press_updt.f90:(.text+0xcc9): undefined reference to `mxcopyptrtoreal8_'
glrkn_ext_press_updt.f90:(.text+0xcd5): undefined reference to `mxdestroyarray_'
obj/tfe_ext_flx_init.o: In function `tfe_ext_flx_init_':
tfe_ext_flx_init.f90:(.text+0x1b): undefined reference to `enggetvariable_'
tfe_ext_flx_init.f90:(.text+0x37): undefined reference to `mxgetnumberofelements_'
tfe_ext_flx_init.f90:(.text+0x4a): undefined reference to `mxgetm_'
tfe_ext_flx_init.f90:(.text+0x5d): undefined reference to `mxgetn_'
tfe_ext_flx_init.f90:(.text+0x7a): undefined reference to `mxcreatedoublematrix_'
tfe_ext_flx_init.f90:(.text+0x99): undefined reference to `mxcreatedoublescalar_'
tfe_ext_flx_init.f90:(.text+0x19b): undefined reference to `mxgetpr_'
tfe_ext_flx_init.f90:(.text+0x1be): undefined reference to `mxcopyptrtoreal8_'
obj/tfe_ext_flx_updt.o: In function `tfe_ext_flx_updt_':
tfe_ext_flx_updt.f90:(.text+0x629): undefined reference to `mxgetpr_'
tfe_ext_flx_updt.f90:(.text+0x64d): undefined reference to `mxcopyreal8toptr_'
tfe_ext_flx_updt.f90:(.text+0x668): undefined reference to `engputvariable_'
tfe_ext_flx_updt.f90:(.text+0x67d): undefined reference to `mxgetpr_'
tfe_ext_flx_updt.f90:(.text+0x6a0): undefined reference to `mxcopyreal8toptr_'
tfe_ext_flx_updt.f90:(.text+0x6bb): undefined reference to `engputvariable_'
tfe_ext_flx_updt.f90:(.text+0x6d0): undefined reference to `mxgetpr_'
tfe_ext_flx_updt.f90:(.text+0x6f3): undefined reference to `mxcopyreal8toptr_'
tfe_ext_flx_updt.f90:(.text+0x70e): undefined reference to `engputvariable_'
tfe_ext_flx_updt.f90:(.text+0x723): undefined reference to `mxgetpr_'
tfe_ext_flx_updt.f90:(.text+0x746): undefined reference to `mxcopyreal8toptr_'
tfe_ext_flx_updt.f90:(.text+0x761): undefined reference to `engputvariable_'
tfe_ext_flx_updt.f90:(.text+0x780): undefined reference to `engevalstring_'
tfe_ext_flx_updt.f90:(.text+0x79f): undefined reference to `enggetvariable_'
tfe_ext_flx_updt.f90:(.text+0x7bb): undefined reference to `mxgetpr_'
tfe_ext_flx_updt.f90:(.text+0x7de): undefined reference to `mxcopyptrtoreal8_'
tfe_ext_flx_updt.f90:(.text+0x7ea): undefined reference to `mxdestroyarray_'
obj/tfe_dynamic.o: In function `tfe_dynamic_':
tfe_dynamic.f90:(.text+0x9c1): undefined reference to `dpbsv_'
obj/tfe_tmpr_rate_init.o: In function `tfe_tmpr_rate_init_':
tfe_tmpr_rate_init.f90:(.text+0x631): undefined reference to `dpbsv_'
collect2: ld returned 1 exit status
make: *** [run/panel_main.out] Error 1
The makefile I'm using is:
# object directory
obj_dir = obj/
# source directory
src_dir = src/
# Run directory
run_dir = run/
# Library directory
# library options
OPTLB = -L/opt/acml4.3.0/gfortran64/lib -lacml -lacml_mv -lgfortran \
-L/usr/local/MATLAB/R2012a/bin/glnxa64 -leng -lmx
# Linker options
OPTLN = -Wl,-rpath-link,/usr/local/MATLAB/R2012a/bin/glnxa64
# Preprocessing options
OPTPP = -cpp -D__linux -D__x86_64__
# Include options
OPTIN = -J$(obj_dir) -I/usr/local/MATLAB/R2012a/extern/include
# Optimization options
OPTOP = -O2
# Debuggion options
OPTDB =
# Main file
main = panel_main
# module files (in proper order!)
modf = gctad glrkn_functions \
glrkn tfe glrkn_ext \
tfe_readfile glrkn_readfile \
matlab partitions
# Module names
mod = gctad glrkn_functions \
glrkn_ext_tmpr glrkn_ext_press \
glrkn_files glrkn_chk glrkn_amp glrkn_props \
glrkn_params glrkn_sol glrkn_dyn \
tfe_chk tfe_mat tfe_coord tfe_size tfe_prop \
tfe_time tfe_sol tfe_files tfe_amp tfe_ext_flx \
tfe_flx tfe_ext_out tfe_dyn \
tfe_readfile glrkn_readfile \
matlab partitions
# tfe files
tfe = sorti tfe_preproc tfe_reorder tfe_mtxmk \
tfe_ext_out_init tfe_ext_flx_init \
tfe_ext_out_updt tfe_ext_flx_updt \
tfe_flx_init tfe_flx_updt \
tfe_dynamic tfe_tmpr_rate_init
# glrkn files
glrkn = glrkn_preproc glrkn_thrml_props glrkn_init_logs \
glrkn_press_init glrkn_press_updt \
glrkn_tmpr_init glrkn_tmpr_updt \
glrkn_ext_press_init glrkn_ext_press_updt \
glrkn_ext_tmpr_init glrkn_ext_tmpr_updt \
glrkn_dynamic glrkn_el_log glrkn_rk4 \
glrkn_nwmrk glrkn_init_accel
# MATLAB library location
matlib_dir = /usr/local/MATLAB/R2012a/bin/glnxa64/
matinc_dir = /usr/local/MATLAB/R2012a/extern/include/
matlibs = eng mx
# Sources and objects
glrkn_src = $(addprefix $(src_dir), $(addsuffix .f90, $(glrkn)))
glrkn_obj = $(addprefix $(obj_dir), $(addsuffix .o, $(glrkn)))
tfe_src = $(addprefix $(src_dir), $(addsuffix .f90, $(tfe)))
tfe_obj = $(addprefix $(obj_dir), $(addsuffix .o, $(tfe)))
mod_src = $(addprefix $(src_dir), $(addsuffix .mod.f90, $(modf)))
mod_obj = $(addprefix $(obj_dir), $(addsuffix .mod.o, $(modf)))
mod_mod = $(addprefix $(obj_dir), $(addsuffix .mod, $(mod)))
main_src = $(addprefix $(src_dir), $(addsuffix .f90, $(main)))
main_obj = $(addprefix $(obj_dir), $(addsuffix .o, $(main)))
main_out = $(addprefix $(run_dir), $(addsuffix .out, $(main)))
lib_opt = $(addprefix -l, $(libs))
# Concatenate
all_obj = $(mod_obj) $(glrkn_obj) $(tfe_obj) $(main_obj)
# Main executable
$(main_out) : $(all_obj)
gfortran -v $(OPTDB) $(OPTOP) $(OPTLN) $(OPTLB) $(all_obj) -o main.out
mv main.out $(main_out)
# gfortran $(debug) -J$(obj_dir) $(all_obj) -L$(lib_dir) -L$(matlib_dir) -Wl,-rpath-link,$(matlib_dir) $(lib_opt) $(addprefix -l, $(matlibs)) -o main.out
# Main object
$(main_obj) : $(main_src) $(mod_obj)
gfortran -v $(OPTPP) $(OPTDB) $(OPTOP) $(OPTIN) $< -c
mv $(notdir $@) $@
# TFE objects
$(tfe_obj) : $(obj_dir)%.o : $(src_dir)%.f90 $(mod_obj)
gfortran -v $(OPTPP) $(OPTDB) $(OPTOP) $(OPTIN) $< -c
mv $(notdir $@) $@
# Structure objects
$(glrkn_obj) : $(obj_dir)%.o : $(src_dir)%.f90 $(mod_obj)
gfortran -v $(OPTPP) $(OPTDB) $(OPTOP) $(OPTIN) $< -c
mv $(notdir $@) $@
# Module objects
$(mod_obj) : $(obj_dir)%.mod.o : $(src_dir)%.mod.f90
gfortran -v $(OPTPP) $(OPTOP) $(OPTDB) $(OPTIN) $< -c
mv $(notdir $@) $@
# Clean objects folder
.PHONY : clean
clean :
rm -f -v $(obj_dir)*
I've googled the crap out of this and haven't had any luck getting it fixed. If anyone has any ideas for me to try, I'd greatly appreciate it.
Thanks, Zach
Upvotes: 0
Views: 1591
Reputation: 103
Talked the the guy who made it originally. It was an issue with the version of gfortran used. I was using gfortran 4.6.3. He said he used 4.4.5 when he last successfully used it. I installed gfortran 4.4 and compiled with no issues. On to the next issue I encounter!
Upvotes: 2
Reputation: 21
Why not convert the fortran to matlab? If that might work, check out f2matlab at the file exchange.
Upvotes: 0