2

I am trying to install an old perl module, called BioMol, where SWIG has been used to interface C with perl. It is currently installed on an 'old' machine and we want to install it on a newer machine.

I am able to build the package and install it on the newer machine - producing a single library: BioMol.so.

When I try to run a sample script that uses a simple function from the perl module, I come across the following error:

perl: symbol lookup error: /path-to-binary/BioMol.so: undefined symbol: new_fragmentlist

By looking in the binary file (using nm), I found this:

 253                  U new_dihedrallist
 254 0000000000019f60 T new_DihedralList
 255                  U new_fragment
 256 0000000000017ca0 T new_Fragment
 257                  U new_fragmentlist
 258 0000000000019000 T new_FragmentList

So it is true that new_fragmentlist is undefined (L#257), however new_FragmentList (L#258) seems like the one I should be using anyway. The binary file that is on the 'old' machine looks like this:

896 0000000000018d00 T new_Dihedral
897 0000000000018c20 T new_DihedralList
898 00000000000170b0 T new_Fragment
899 0000000000016fd0 T new_FragmentList

I think this may be due to some rename directive in SWIG (see 5.4.7.2 in http://swig.org/Doc3.0/SWIGDocumentation.html#SWIG_rename_ignore). Maybe the reason I get the case issue in the new binary file, could be because of some new default option in the new SWIG (new version is 3.0.12 and the 'old machine' version is 1.3.40). Any help is much appreciated!

0 Answers0