I hope someone can give me clues about what's screwing up the compilation of a molecular docking app I'm trying to assemble for my classes... It is supposed to compile on a number of *nix platforms including Linux, but my attempts die at the linking stage.
I do not program (OK, I learned APL in high school 30 years ago and did some assembly and Basic stuff in college), but I _am_ learning the hard way about how parts of the process work. I have already written to a big computational chemistry list about this, but the help offered provided no answer or fix. The research group from which this app comes is not being particularly helpful (i.e. they aren't responding)--they are quite explicit in their docs about their group being the last resort for problems. (There is no other app. like this, so...) Additionally, I don't know any local guru familiar with Unix. My school is a Windoze institution... :-( I've listed the errors encountered below along with snippets of the Makefile and a library listing (nm) for the apparent culprit get_atom_type. The various object files compile with only a couple of sporadic warnings about variable type conversions. Can someone suggest places to look for the cause of this? Is there other information I could find to help? I have tried the nm command with the three functions referenced below, and the only consistent difference I can see is the lack of a bunch of alphanumerics after the name shown on the last line of that listing. Any help would be greatly appreciated! Kenward ---snippet of Makefile--- ... # # C++ compiler # # AutoDock 3.0 Makefile GNU Linux -- START CC = g++ LIB = -lm CSTD = -DHPPA $(PROF) $(DBUG) $(WARN) CFLAGS = $(OPT) OPTLEVEL = -O3 OPT = $(CSTD) $(OPTLEVEL) OLIMIT = $(OPT) LINKOPT = $(OPT) LINK = $(LINKOPT) LINT = lint LINTFLAGS = -DHPPA $(LIB) -c DBUG = -DNDEBUG # No debugging and no assert code PROF = # No profiling WARN = # Default warning level # AutoDock 3.0 Makefile GNU Linux -- END autodock3 : main.o $(ADLIB) ... ---errors in compiling messages---I don't believe the warnings are important? Sorry about the line wrap... ... g++ -DHPPA -DNDEBUG -O3 -c getpdbcrds.cc g++ -DHPPA -DNDEBUG -O3 -DCHECK_ISNAN -c gs.cc -o gs.o gs.cc: In method `genetic_Algorithm::Genetic_Algorithm(EvalMode, Selection_Mode, Xover_Mode, Worst_Mode, int, float, float, int, unsigned int, unsigned int)': gs.cc:170: warning: assignment to `int' from `double' gs.cc:170: warning: assignment to `int' from `double' ... g++ -DHPPA -DNDEBUG -O3 -c ranlib.cc ranlib.cc: In function `fourByteLong ignbin(long int, float)': ranlib.cc:766: warning: assignment to `fourByteLong' from `float' ranlib.cc:791: warning: assignment to `fourByteLong' from `float' ranlib.cc:801: warning: assignment to `fourByteLong' from `float' ranlib.cc:808: warning: assignment to `fourByteLong' from `double' ranlib.cc:816: warning: assignment to `fourByteLong' from `double' ... g++ -DHPPA -DNDEBUG -O3 -c trilinterp.cc ar r libad.a analysis.o banner.o bestpdb.o call_glss.o call_gs.o call_ls.o changeState.o check_header_float.o check_header_int.o check_header_line.o cluster_analysis.o clmode.o cmdmode.o cnv_state_to_coords.o com.o stateLibrary.o readfield.o readmap.o readPDBQ.o dpftypes.o eval.o evaluate_energy.o gencau.o getrms.o get_atom_type.o getInitialState.o getpdbcrds.o gs.o initautodock.o input_state.o investigate.o linpack.o ls.o mapping.o minmeanmax.o mkNewState.o mkTorTree.o mkRandomState.o nonbonds.o openfile.o output_state.o parse_com_line.o parse_dpf_line.o parse_pdbq_line.o parse_trj_line.o print_2x.o print_atomic_energies.o print_avsfld.o writeMolAsPDBQ.o writePDBQ.o writePDBQState.o print_rem.o printdate.o printEnergies.o printhms.o prClusterHist.o prInitialState.o prTorConList.o qmultiply.o qtransform.o quicksort.o ranlib.o rep.o scauchy.o set_cmd_io_std.o setflags.o simanneal.o sort_enrg.o stop.o strindex.o success.o summarizegrids.o support.o swap.o timesys.o timesyshms.o torNorVec.o torsion.o usage.o weedbonds.o warn_bad_file.o eintcal.o eintcalPrint.o intnbtable.o nbe.o trilinterp.o echo . ' on '`date`', using '`hostname` >> LATEST_MAKE echo 'Flags: 'g++ -DHPPA -DNDEBUG -O3 -DNOSQRT -L. -lad -lm >> LATEST_MAKE g++ -DHPPA -DNDEBUG -O3 -DNOSQRT -o autodock3 main.o -L. -lad -lm ./libad.a(clmode.o): In function `clmode(char *, int, float, char *, long, tms, char, char *, float (*)[2], float *, char, char *)': clmode.o(.text+0x640): undefined reference to `get_atom_type(char *, char *)' ./libad.a(cmdmode.o): In function `cmdmode(int, long, tms, float, float, float, float, float, float, float, float (*)[127][127][7], float (*)[5][5], float, float (*)[2], int (*)[2047], int, int, int (*)[1], char (*)[127], float (*)[2], char *, int *, float *, char, float *, char *, float, int)': cmdmode.o(.text+0x48f): undefined reference to `get_atom_type(char *, char *)' ./libad.a(readPDBQ.o): In function `readPDBQ(char *, char *, int, int *, float (*)[2], float *, char *, int *, char (*)[4], char *, _ciT0T3T3T5T5T3T3PA2047_iT4 (*)[1], int *, int *, int (*)[1], long, tms, char *, int *)': readPDBQ.o(.text+0x465): undefined reference to `get_atom_type(char *, char *)' collect2: ld returned 1 exit status make: *** [autodock3] Error 1 ---end of run--next is a listing by nm of libad.a for get_atom_type daddy:/home/local/src/autodock/dist305/src/autodock# nm libad.a|grep -i get_atom_type U get_atom_type__FPcT0 U get_atom_type__FPcT0 U get_atom_type__FPcT0 get_atom_type.o: 00000000 T get_atom_type -- It is not so very important for a person to learn facts. For that he doesn't really need a college education, for he can learn them from books. The value of an education in a liberal arts college is not the learning of many facts but the training of the mind to thinking--something that cannot be learned from books. Albert Einstein