[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
>
>