[Bioclusters] mpiBlast OS X

Nick Brockner bioclusters@bioinformatics.org
Fri, 01 Oct 2004 15:09:12 -0400


That did it (adding -framework CoreServices and -lc).  I now have an  
executable.

Thanks.

-Nick
On Oct 1, 2004, at 10:41 AM, Aaron Darling wrote:

> Another method I've used is to simply grep available library dirs for  
> the missing symbol.  Unfortunately that method produces both the  
> library defining the symbol and any other libraries referencing it, so  
> it can be confusing which one to link...
> I used to do this quite frequently on windows before I discovered MSDN  
> :)  I'm a CodeWarrior so MSDN isn't built in to the IDE.
>
> Joe Landman wrote:
>
>> (popping head up for a moment)
>>
>> If you have the readelf/objdump tools around, and you know which  
>> object file or library is complaining about a missing link, you can  
>> walk the cat backwards (start at the object file or library with the  
>> missing link, look at the symbols, and try to see in /usr/lib or  
>> similar, which library has these symbols ... a simple foreach loop  
>> with a readelf/objdump and a grep is quite helpful here).
>>
>> I have used this methodology with a compiler vendors compilers  
>> recently to fix some chemistry code support.  It is annoying and time  
>> consuming, but not impossible.
>>
>> Joe
>>
>> Aaron Darling wrote:
>>
>>> I haven't tried it (I don't have an OS X machine handy at the  
>>> moment), but based on a perusal of NCBI's darwin.ncbi.mk file, it  
>>> looks like they add "-framework CoreServices" and "-lc" to the link  
>>> command.  You may also need "-framework Carbon", but I'm guessing  
>>> not since that looks like it's just for gui apps on OS X.
>>> Good luck, hope it works this time around!
>>> -Aaron
>>>
>>> Nick Brockner wrote:
>>>
>>>> I now have it almost linking, except for this:
>>>>
>>>> ld: Undefined symbols:
>>>> _DisposeHandle
>>>> _HLock
>>>> _HUnlock
>>>> _MemError
>>>> _NewHandle
>>>> _SetHandleSize
>>>> _FSPathMakeRef
>>>> mpiCC: No such file or directory
>>>>
>>>> Using this command to link:
>>>>
>>>> mpiCC  -O2 -DINSTALL_PREFIX="\"/usr/local\"" -g -O2   -o mpiblast   
>>>> mpiblast-blastjob.o mpiblast-db_spec.o mpiblast-blast_hooks.o  
>>>> mpiblast-embed_rank.o mpiblast-file_util.o mpiblast-fragment_list.o  
>>>> mpiblast-mpiblast_util.o mpiblast-mpiblast.o  
>>>> mpiblast-mpiblast_config.o mpiblast-ncbi_sizeof.o  
>>>> mpiblast-distributed_bioseq.o /usr/local/ncbi/build/ncbithr.o   
>>>> -lncbitool -lncbiobj -lncbi -L/usr/local/ncbi/lib/  -lm -lpthread  
>>>> -lstdc++
>>>>
>>>> I searched all over and cannot find what to link with for these.  I  
>>>> appreciate all the help you have given so far with this.
>>>>
>>>> Thanks,
>>>>
>>>> -Nick
>>>> On Sep 30, 2004, at 5:49 PM, Aaron Darling wrote:
>>>>
>>>>> Yes, looks like something wrong with the build environment.  Looks  
>>>>> like it's not linking to the c++ library.  Usually the GNU  
>>>>> standard c++ library can be linked with -lstdc++.  You could  
>>>>> either add that to the CXXFLAGS environment variable and  
>>>>> reconfigure or just copy the link command, add -lstdc++, and run  
>>>>> it from within the src dir.  In the past we've only tested  
>>>>> releases on Linux and Windows, sounds like that needs to change :)
>>>>>
>>>>> -Aaron
>>>>>
>>>>> Nick Brockner wrote:
>>>>>
>>>>>> Ok, now that getopt() is out of the way it compiles, but then  
>>>>>> when it goes to link I get this garbage:
>>>>>>
>>>>>> ld: Undefined symbols:
>>>>>> std::basic_ostream<char, std::char_traits<char>  
>>>>>> >::operator<<(std::basic_ostream<char, std::char_traits<char> >&  
>>>>>> (*)(std::basic_ostream<char, std::char_traits<char> >&))
>>>>>> std::basic_ostream<char, std::char_traits<char>  
>>>>>> >::operator<<(double)
>>>>>> std::basic_ostream<char, std::char_traits<char>  
>>>>>> >::operator<<(long)
>>>>>> std::basic_ostream<char, std::char_traits<char>  
>>>>>> >::operator<<(unsigned long)
>>>>>> std::basic_string<char, std::char_traits<char>,  
>>>>>> std::allocator<char> >::_Rep::_M_destroy(std::allocator<char>  
>>>>>> const&)
>>>>>> .
>>>>>> .
>>>>>> .
>>>>>>
>>>>>> I think this has nothing to do with the mpiBlast code, and has  
>>>>>> something to do with Apple's build environment.  Difficult build,  
>>>>>> this is.
>>>>>>
>>>>>> Thanks,
>>>>>>
>>>>>> -Nick Brockner
>>>>>> On Sep 30, 2004, at 3:35 PM, Aaron Darling wrote:
>>>>>>
>>>>>>> This happens on OS X, Solaris, and AIX because our getopt()  
>>>>>>> detection was broken in 1.2.1.  A quick fix is to comment out  
>>>>>>> line 147 of mpiBLAST-1.2.1/src/getopt.h
>>>>>>> e.g. change:
>>>>>>> extern int getopt ();
>>>>>>> to:
>>>>>>> /* extern int getopt (); */
>>>>>>>
>>>>>>> -Aaron
>>>>>>>
>>>>>>> Nick Brockner wrote:
>>>>>>>
>>>>>>>> Hi Aaron,
>>>>>>>>
>>>>>>>> Thanks for the pointer.  Using the Oct. 2003 ncbi toolkit  
>>>>>>>> worked for the previous error, but now I have a more sinister  
>>>>>>>> looking error:
>>>>>>>>
>>>>>>>> In file included from /usr/include/pthread.h:61,
>>>>>>>>                  from  
>>>>>>>> /usr/include/gcc/darwin/3.3/c++/ppc-darwin/bits/gthr-default.h: 
>>>>>>>> 37,
>>>>>>>>                  from  
>>>>>>>> /usr/include/gcc/darwin/3.3/c++/ppc-darwin/bits/gthr.h:98,
>>>>>>>>                  from  
>>>>>>>> /usr/include/gcc/darwin/3.3/c++/ppc-darwin/bits/c++io.h:37,
>>>>>>>>                  from  
>>>>>>>> /usr/include/gcc/darwin/3.3/c++/bits/fpos.h:44,
>>>>>>>>                  from /usr/include/gcc/darwin/3.3/c++/iosfwd:49,
>>>>>>>>                  from  
>>>>>>>> /usr/include/gcc/darwin/3.3/c++/bits/stl_algobase.h:70,
>>>>>>>>                  from  
>>>>>>>> /usr/include/gcc/darwin/3.3/c++/algorithm:66,
>>>>>>>>                  from mpiblast.cpp:86:
>>>>>>>> /usr/include/unistd.h:183: error: declaration of C function  
>>>>>>>> `int getopt(int,
>>>>>>>>    char* const*, const char*)' conflicts with
>>>>>>>> getopt.h:147: error: previous declaration `int getopt()' here
>>>>>>>> In file included from file_util.hpp:58,
>>>>>>>>                  from mpiblast.hpp:71,
>>>>>>>>                  from mpiblast.cpp:88:
>>>>>>>>
>>>>>>>>
>>>>>>>> Has anyone seen this before? Looks OS X specific.
>>>>>>>>
>>>>>>>> Thanks,
>>>>>>>>
>>>>>>>> -Nick Brockner
>>>>>>>>
>>>>>>>> On Sep 30, 2004, at 2:51 PM, Aaron Darling wrote:
>>>>>>>>
>>>>>>>>> Assuming you are using mpiBLAST 1.2.1, you need to use the  
>>>>>>>>> October 2003 release of the NCBI Toolbox from here:
>>>>>>>>> ftp://ftp.ncbi.nih.gov/toolbox/ncbi_tools/old/
>>>>>>>>>
>>>>>>>>> Each version of mpiBLAST is designed to compile against a  
>>>>>>>>> specific version of the NCBI Toolbox, as mentioned on our  
>>>>>>>>> download page here:
>>>>>>>>>
>>>>>>>>> http://mpiblast.lanl.gov/download.html
>>>>>>>>>
>>>>>>>>> Later toolbox releases changed the API to BlastMakeMultQueries  
>>>>>>>>> and BXMLPrintOutput, which is why you are seeing those build  
>>>>>>>>> errors.
>>>>>>>>>
>>>>>>>>> Regards,
>>>>>>>>> -Aaron
>>>>>>>>>
>>>>>>>>> Nick Brockner wrote:
>>>>>>>>>
>>>>>>>>>> Hi All,
>>>>>>>>>>
>>>>>>>>>> I think I am missing something here, but attempting to  
>>>>>>>>>> compile mpiBlast gets me the following:
>>>>>>>>>>
>>>>>>>>>> blast_hooks.c: In function `getFakeBioseq':
>>>>>>>>>> blast_hooks.c:785: error: too few arguments to function  
>>>>>>>>>> `BlastMakeMultQueries'
>>>>>>>>>> blast_hooks.c: In function `outputResults':
>>>>>>>>>> blast_hooks.c:1334: error: too few arguments to function  
>>>>>>>>>> `BXMLPrintOutput'
>>>>>>>>>> blast_hooks.c:1345: error: too few arguments to function  
>>>>>>>>>> `BXMLPrintOutput'
>>>>>>>>>> blast_hooks.c:1493: error: too few arguments to function  
>>>>>>>>>> `BXMLPrintOutput'
>>>>>>>>>> blast_hooks.c:1498: error: too few arguments to function  
>>>>>>>>>> `BXMLPrintOutput'
>>>>>>>>>> mpicc: No such file or directory
>>>>>>>>>> make[1]: *** [mpiblast-blast_hooks.o] Error 1
>>>>>>>>>> make: *** [all-recursive] Error 1
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>> My setup:
>>>>>>>>>> OS X Server 10.3.5
>>>>>>>>>> gcc version 3.3 20030304 (Apple Computer, Inc. build 1495)
>>>>>>>>>> NCBI toolkit installed
>>>>>>>>>> LAM-MPI version 7.0.6
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>> Thanks,
>>>>>>>>>>
>>>>>>>>>> -Nick Brockner
>>>>>>>>>>
>>>>>>>>>> _______________________________________________
>>>>>>>>>> Bioclusters maillist  -  Bioclusters@bioinformatics.org
>>>>>>>>>> https://bioinformatics.org/mailman/listinfo/bioclusters
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>> _______________________________________________
>>>>>>>>> Bioclusters maillist  -  Bioclusters@bioinformatics.org
>>>>>>>>> https://bioinformatics.org/mailman/listinfo/bioclusters
>>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>> _______________________________________________
>>>>>>>> Bioclusters maillist  -  Bioclusters@bioinformatics.org
>>>>>>>> https://bioinformatics.org/mailman/listinfo/bioclusters
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>> _______________________________________________
>>>>>>> Bioclusters maillist  -  Bioclusters@bioinformatics.org
>>>>>>> https://bioinformatics.org/mailman/listinfo/bioclusters
>>>>>>>
>>>>>>>
>>>>>>
>>>>>> _______________________________________________
>>>>>> Bioclusters maillist  -  Bioclusters@bioinformatics.org
>>>>>> https://bioinformatics.org/mailman/listinfo/bioclusters
>>>>>
>>>>>
>>>>>
>>>>>
>>>>> _______________________________________________
>>>>> Bioclusters maillist  -  Bioclusters@bioinformatics.org
>>>>> https://bioinformatics.org/mailman/listinfo/bioclusters
>>>>>
>>>>
>>>> _______________________________________________
>>>> Bioclusters maillist  -  Bioclusters@bioinformatics.org
>>>> https://bioinformatics.org/mailman/listinfo/bioclusters
>>>
>>>
>>>
>>> _______________________________________________
>>> Bioclusters maillist  -  Bioclusters@bioinformatics.org
>>> https://bioinformatics.org/mailman/listinfo/bioclusters
>>
>>
>>
> _______________________________________________
> Bioclusters maillist  -  Bioclusters@bioinformatics.org
> https://bioinformatics.org/mailman/listinfo/bioclusters
>
>