On Feb 22, 2010, at 11:05 AM, Eric R wrote:
> Hello Brownie users,
> I'm fairly new to compiling GNU programs and that sort of thing, so
> perhaps my problems are only minor ones that lack of experience is
> preventing me from solving, but I'm not having much success at trying
> to get brownie running. I'm trying to get it installed on a couple
> different computers, one Mac and one PC (using Cygwin), so I'll start
> with the Mac, and if I can't get it going on both I'll post the errors
> I'm getting with the PC later.
> The Mac is a PowerPC G5 desktop running OS X 10.4.11. I started by
> downloading the BrownieFolder2p1p1.zip file, and uncompressed the
> contents without any problems. I then ran the browniecmdline.mpkg
> installer, which seemed to run correctly (no errors, and it said "The
> software was successfully installed). But when I try to run the actual
> program, I get the error 'cannot execute binary file'.
I believe brownie is just compiled for intel macs.
> If I run the
> brownie application, it allows me to select an input file, then goes
> to terminal and I get the same error.
The application that lets you pick a file is an applescript, which
works on both intel and powerpc macs. When it switches over to
terminal, it tries using the compiled actual brownie code.
> I then tried downloading just
> the compiled command line version (brownie2p1p1.zip), navigated to the
> directory and tried running it, (./brownie), and received the same
> error 'cannot execute binary file'.
Same issue.
> Since the compiled binary didn't seem to be working, I tried
> downloading and compiling the source code. I installed the gsl 1.13
> library in the default directory, and looked over the makefile, and it
> looked all right (though again, I'm not that experienced), but when I
> run 'make', I get the following warnings:
> makefile:353: warning: overriding commands for target 'Brownie'
> makefile:88: warning: ignoring old commands for target 'Brownie'
That's normal. Depending on your compiler, you may also get warnings
about deprecated headers.
> it then prints
> /usr/bin/g++ -fexceptions cdfvectorholder.cpp -c -I./ncl-2.0/src/ -I./
> TreeLib/ -I. -I./TreeLib/gport/ -o cdfvectorholder.o
> it then sits there, apparently not doing anything. I've left it like
> that for a couple hours and it still never moved on beyond that
> command. Does this step just take this long, or is there some other
> problem going on?
Yes, that step takes a ridiculously long time. It's due to bad coding
on my part, though I haven't found a better solution. Basically, for
the species delimitation analysis, Brownie needs to have stored a
large number of p-values for various kinds of overlap. Rather than
putting this information in a separate file brownie would have to load
and that would have to be kept with the application, I decided to
build it into the source code. It's in the cdfvectorholder file, which
is basically a huge vector of vectors. Compiling this takes a long
time, many hours, especially on older computers. If you run "top" you
should see activity by a compiler. The good news is that once it's
compiled once (file "cdfvectorholder.o" created), you won't need to
compile it again, even if there are later errors in the build (such as
not finding the gsl).
> Any help would be much appreciated. I'll post again with the problems
> I'm having in cygwin a bit later.
I can try to help with that, but the reason Brownie doesn't come pre-
compiled for windows anymore is due to continued issues getting it
working with cygwin (though it has in the past).
Best,
Brian
> Thanks in advance,
> Eric
>
> --
> You received this message because you are subscribed to the Google
> Groups "brownie-users" group.
> To post to this group, send email to browni...@googlegroups.com.
> To unsubscribe from this group, send email to brownie-user...@googlegroups.com
> .
> For more options, visit this group at http://groups.google.com/group/brownie-users?hl=en
> .
>
------------------------------------------------------
Brian O'Meara
http://www.brianomeara.info
Assistant Prof.
Dept. Ecology & Evolutionary Biology
U. of Tennessee, Knoxville
makefile:353: warning: overriding commands for target `Brownie'
makefile:88: warning: ignoring old commands for target `Brownie'
/usr/bin/g++ -fexceptions cdfvectorholder.cpp -c -I./ncl-2.0/src/ -I./
TreeLib/ -I. -I./TreeLib/gport/ -o cdfvectorholder.o
/usr/bin/g++ -fexceptions -O2 brownie.cpp -c -I./ncl-2.0/src/ -I./
TreeLib/ -I. -I./TreeLib/gport/ -o brownie.o
In file included from brownie.cpp:68:
superdouble.h:33: warning: use of `long double' type; its size may
change in a
future release
superdouble.h:33: warning: (Long double usage is reported only once
for each
file.
superdouble.h:33: warning: To disable this warning, use -Wno-long-
double.)
superdouble.h: In member function `Superdouble::operator double()':
superdouble.h:55: error: call of overloaded `pow(int, int&)' is
ambiguous
/usr/include/architecture/ppc/math.h:298: error: candidates are:
double
pow(double, double)
/usr/include/gcc/darwin/3.3/c++/cmath:427: error: long
double
std::pow(long double, int)
/usr/include/gcc/darwin/3.3/c++/cmath:423: error:
float
std::pow(float, int)
/usr/include/gcc/darwin/3.3/c++/cmath:419: error:
double
std::pow(double, int)
/usr/include/gcc/darwin/3.3/c++/cmath:410: error: long
double
std::pow(long double, long double)
/usr/include/gcc/darwin/3.3/c++/cmath:401: error:
float
std::pow(float, float)
In file included from brownie.cpp:68:
superdouble.h: In member function `Superdouble
Superdouble::operator+(Superdouble)':
superdouble.h:120: error: call of overloaded `pow(int, int&)' is
ambiguous
/usr/include/architecture/ppc/math.h:298: error: candidates are:
double
pow(double, double)
/usr/include/gcc/darwin/3.3/c++/cmath:427: error: long
double
std::pow(long double, int)
/usr/include/gcc/darwin/3.3/c++/cmath:423: error:
float
std::pow(float, int)
/usr/include/gcc/darwin/3.3/c++/cmath:419: error:
double
std::pow(double, int)
/usr/include/gcc/darwin/3.3/c++/cmath:410: error: long
double
std::pow(long double, long double)
/usr/include/gcc/darwin/3.3/c++/cmath:401: error:
float
std::pow(float, float)
superdouble.h: In member function `Superdouble
Superdouble::operator-(Superdouble)':
superdouble.h:136: error: call of overloaded `pow(int, int&)' is
ambiguous
/usr/include/architecture/ppc/math.h:298: error: candidates are:
double
pow(double, double)
/usr/include/gcc/darwin/3.3/c++/cmath:427: error: long
double
std::pow(long double, int)
/usr/include/gcc/darwin/3.3/c++/cmath:423: error:
float
std::pow(float, int)
/usr/include/gcc/darwin/3.3/c++/cmath:419: error:
double
std::pow(double, int)
/usr/include/gcc/darwin/3.3/c++/cmath:410: error: long
double
std::pow(long double, long double)
/usr/include/gcc/darwin/3.3/c++/cmath:401: error:
float
std::pow(float, float)
superdouble.h: In member function `void Superdouble::operator
+=(Superdouble)':
superdouble.h:180: error: call of overloaded `pow(int, int&)' is
ambiguous
/usr/include/architecture/ppc/math.h:298: error: candidates are:
double
pow(double, double)
/usr/include/gcc/darwin/3.3/c++/cmath:427: error: long
double
std::pow(long double, int)
/usr/include/gcc/darwin/3.3/c++/cmath:423: error:
float
std::pow(float, int)
/usr/include/gcc/darwin/3.3/c++/cmath:419: error:
double
std::pow(double, int)
/usr/include/gcc/darwin/3.3/c++/cmath:410: error: long
double
std::pow(long double, long double)
/usr/include/gcc/darwin/3.3/c++/cmath:401: error:
float
std::pow(float, float)
superdouble.h: In member function `void Superdouble::operator-
=(Superdouble)':
superdouble.h:195: error: call of overloaded `pow(int, int&)' is
ambiguous
/usr/include/architecture/ppc/math.h:298: error: candidates are:
double
pow(double, double)
/usr/include/gcc/darwin/3.3/c++/cmath:427: error: long
double
std::pow(long double, int)
/usr/include/gcc/darwin/3.3/c++/cmath:423: error:
float
std::pow(float, int)
/usr/include/gcc/darwin/3.3/c++/cmath:419: error:
double
std::pow(double, int)
/usr/include/gcc/darwin/3.3/c++/cmath:410: error: long
double
std::pow(long double, long double)
/usr/include/gcc/darwin/3.3/c++/cmath:401: error:
float
std::pow(float, float)
superdouble.h: In member function `Superdouble Superdouble::getLn()':
superdouble.h:209: error: call of overloaded `exp(int)' is ambiguous
/usr/include/architecture/ppc/math.h:247: error: candidates are:
double
exp(double)
/usr/include/gcc/darwin/3.3/c++/cmath:229: error: long
double
std::exp(long double)
/usr/include/gcc/darwin/3.3/c++/cmath:221: error:
float
std::exp(float)
brownie.cpp: In member function `virtual std::vector<double,
std::allocator<double> >
BROWNIE::GetCombinedScore(ContainingTree*)':
brownie.cpp:2008: error: call of overloaded `log(int&)' is ambiguous
/usr/include/architecture/ppc/math.h:256: error: candidates are:
double
log(double)
/usr/include/gcc/darwin/3.3/c++/cmath:334: error: long
double
std::log(long double)
/usr/include/gcc/darwin/3.3/c++/cmath:326: error:
float
std::log(float)
brownie.cpp: In member function `virtual double
BROWNIE::DoAllAssignments(double, int, ContainingTree*)':
brownie.cpp:2374: error: call of overloaded `pow(int&, int)' is
ambiguous
/usr/include/architecture/ppc/math.h:298: error: candidates are:
double
pow(double, double)
/usr/include/gcc/darwin/3.3/c++/cmath:427: error: long
double
std::pow(long double, int)
/usr/include/gcc/darwin/3.3/c++/cmath:423: error:
float
std::pow(float, int)
/usr/include/gcc/darwin/3.3/c++/cmath:419: error:
double
std::pow(double, int)
/usr/include/gcc/darwin/3.3/c++/cmath:410: error: long
double
std::pow(long double, long double)
/usr/include/gcc/darwin/3.3/c++/cmath:401: error:
float
std::pow(float, float)
brownie.cpp:2411: error: call of overloaded `pow(int&, int&)' is
ambiguous
/usr/include/architecture/ppc/math.h:298: error: candidates are:
double
pow(double, double)
/usr/include/gcc/darwin/3.3/c++/cmath:427: error: long
double
std::pow(long double, int)
/usr/include/gcc/darwin/3.3/c++/cmath:423: error:
float
std::pow(float, int)
/usr/include/gcc/darwin/3.3/c++/cmath:419: error:
double
std::pow(double, int)
/usr/include/gcc/darwin/3.3/c++/cmath:410: error: long
double
std::pow(long double, long double)
/usr/include/gcc/darwin/3.3/c++/cmath:401: error:
float
std::pow(float, float)
brownie.cpp: In member function `gsl_matrix*
BROWNIE::GetVCVwithKappa(nxsstring, double)':
brownie.cpp:13888: warning: choosing `double pow(double, double)' over
`float
std::pow(float, float)'
brownie.cpp:13888: warning: because worst conversion for the former
is better
than worst conversion for the latter
brownie.cpp:13888: warning: choosing `double pow(double, double)' over
`float
std::pow(float, int)'
brownie.cpp:13888: warning: because worst conversion for the former
is better
than worst conversion for the latter
brownie.cpp:13905: warning: choosing `double pow(double, double)' over
`float
std::pow(float, float)'
brownie.cpp:13905: warning: because worst conversion for the former
is better
than worst conversion for the latter
brownie.cpp:13905: warning: choosing `double pow(double, double)' over
`float
std::pow(float, int)'
brownie.cpp:13905: warning: because worst conversion for the former
is better
than worst conversion for the latter
brownie.cpp:13907: warning: choosing `double pow(double, double)' over
`float
std::pow(float, float)'
brownie.cpp:13907: warning: because worst conversion for the former
is better
than worst conversion for the latter
brownie.cpp:13907: warning: choosing `double pow(double, double)' over
`float
std::pow(float, int)'
brownie.cpp:13907: warning: because worst conversion for the former
is better
than worst conversion for the latter
make: *** [brownie.o] Error 1
I tried just restarting make (from the same directory as the
cdfvectorholder.o), and it skipped the cdfvectorholder, which I think
makes sense since it already has cdfvectorholder.o, but again it gave
me the same set of errors. Perhaps it has something to do with my
version of the math library? Any ideas on what the problem might be
and how I might be able to fix it?
Thanks,
Eric
> > For more options, visit this group athttp://groups.google.com/group/brownie-users?hl=en
> > .
>
> ------------------------------------------------------
> Brian O'Mearahttp://www.brianomeara.info
> Thanks for all of your help thus far. So I've left brownie compiling
> on the mac for awhile, and it seems to have completed the
> cdfvectorholder: after 28 hours of compiling (on a Mac G5 with a Dual
> 1.8 GHz PowerPC G5 processor and 2 GB RAM), it created the
> cdfvectorholder.o file and moved on (does this seem like an
> appropriate amount of time?
It seems slow, but I've never compiled on a G5. Again, sorry for the
inefficient coding.
> The cdfvectorholder.o is 21.7 MB in size,
> does that seem about right?).
Yes. On my intel mac, that file is 20M in size, so same ballpark.
> However, it then printed out a long
> series of errors before quitting as follows (this is the full output,
> including the portion on the cdfvectorholder, which I think worked):
Yes, cdfvectorholder seems to have worked, and the errors do appear to
be with math in Superdouble (this is a class I wrote that allows
Brownie to do math on arbitrarily small numbers -- double fails for
numbers smaller in magnitude than about 10^-308, and many likelihoods
are much smaller than that and taking the log isn't always a
convenient option). For example, it's saying that pow(double, int)
isn't allowed. In C, pow(double, double) is all that is permitted, but
C++ should allow others (see http://www.cplusplus.com/reference/clibrary/cmath/pow/
). Try changing, in superdouble.h, "#include <math.h>" to "#include
<cmath>". Based on this online discussion ( http://www.cplusplus.com/forum/general/5207/
), it seems that sometimes cmath works better (depends on compiler
-- I imagine I tried cmath first and then went to math.h, but I don't
know).
Best,
Brian
> For more options, visit this group at http://groups.google.com/group/brownie-users?hl=en