Click to See Complete Forum and Search --> : Fract-O-Rama
arlenagha
01-21-2003, 04:02 PM
i downloaded fractorama prebuilt version for windows and it works fine. now i've got the source code and trying to compile it in linux. there is no "how to" for compiling it and i don't know how? i know i have QT installed, but where do i begin compiling and building it?
bwkaz
01-21-2003, 05:13 PM
Is there a configure script? If so, run it and pass the --help option to get a list of options that you can use.
If not, is there a Makefile? If so, edit it to specify stuff like installation directories, compiler flags, and whatnot, and then just run make.
If there is no Makefile (also check for makefile and GNUmakefile), then maybe it's like FCEUltra? There are multiple different Makefiles for each platform, for example, Makefile.linuxvga and Makefile.unixsdl. If this is the case, copy the one that corresponds to your platform into Makefile, then edit that and run make.
If this isn't the case, then there would have to be instructions somewhere. Is there a doc/ directory? What about src/Makefile, that's a possibility?
truls
01-22-2003, 10:21 AM
I'm figuring you are using the source downloaded from Fractorama (http://fractorama.com/download.html), in which case you can follow bwkaz's advice and run make.
If you have problems, read the Makefile.
arlenagha
01-23-2003, 02:36 AM
yes, i am using the download source and yes there is a Makefile. i did run "make", and its was going ok till it stopped after giving me these errors:
////////////////////////////////////////////////////////////
In file included from GradientColorNode.cpp:1:
GradientColorNode.h:21: type specifier omitted for parameter `strstream'
GradientColorNode.h:21: parse error before `&' token
GradientColorNode.cpp:5: type specifier omitted for parameter `strstream'
GradientColorNode.cpp:5: parse error before `&' token
GradientColorNode.cpp: In static member function `static GradientColorNode*
GradientColorNode::create(...)':
GradientColorNode.cpp:8: `count' undeclared (first use this function)
GradientColorNode.cpp:8: (Each undeclared identifier is reported only once for
each function it appears in.)
GradientColorNode.cpp:8: `size' undeclared (first use this function)
GradientColorNode.cpp:10: `errStream' undeclared (first use this function)
GradientColorNode.cpp:17: `theStack' undeclared (first use this function)
make[1]: *** [GradientColorNode_debug.o] Error 1
make[1]: Leaving directory `/home/Arlen/temp/fractorama/src/lib/fractal'
make: *** [build_libfractal] Error 2
///////////////////////////////////////////////////////////
i am thinking there is something wrong with that file.
any help???
bwkaz
01-23-2003, 11:36 AM
Yeah, there's something wrong with it. The people that wrote it don't know how C++ standard includes should work. ;)
Adding a using std::strstream; line right after the #include <strstream> line in that file fixed the compile.
I also had to edit directories.inc and change the UNIX_QTROOT variable to the actual root of my Qt installation. Mine was /usr/qt3, I don't know what yours would be.
arlenagha
01-23-2003, 06:43 PM
bwkaz, i did what you told me about adding using std::strstream; and it did fix that problem, but now i get this error:
///////////////////////////////////////////////
make -C lib/fractal "RELEASE="
make[1]: Entering directory `/home/Arlen/temp/fractorama/src/lib/fractal'
make[1]: `libfractal_debug.a' is up to date.
make[1]: Leaving directory `/home/Arlen/temp/fractorama/src/lib/fractal'
make -C lib/tiff "RELEASE="
make[1]: Entering directory `/home/Arlen/temp/fractorama/src/lib/tiff'
make[1]: `libtiff_debug.a' is up to date.
make[1]: Leaving directory `/home/Arlen/temp/fractorama/src/lib/tiff'
make -C lib/persist "RELEASE="
make[1]: Entering directory `/home/Arlen/temp/fractorama/src/lib/persist'
make[1]: `libpersist_debug.a' is up to date.
make[1]: Leaving directory `/home/Arlen/temp/fractorama/src/lib/persist'
g++ -o ../debug.exe main_debug.o antialiasdialog_debug.o application_debug.o heltter_debug.o map_debug.o qinfiniteloopcallback_debug.o findreplacedialog_debug.oractalsplitter_debug.o moc_findreplacedialog_debug.o lib/fractal/libfractal_debulib/fractal/libfractal_debug.a(Fractal_debug.o): In function `operator<<(std::ba/home/Arlen/temp/fractorama/src/lib/fractal/Fractal.cpp:424: undefined referencecollect2: ld returned 1 exit status
make: *** [../debug.exe] Error 1
/////////////////////////////////////////////
i am not very good at c++, i am just trying to get this work for linux.
any ideas what i should do?
bwkaz
01-24-2003, 02:24 PM
OK, umm, that's not the full error. You seem to be getting an undefined reference to something, but I can't tell what (the "undefined symbol" part is getting cut off...). There should be more information after the "In function `operator<<(std::ba" part, and it should give you the undefined symbol's name.
As a matter of fact, once I get a libqt installed here (I had qt-mt only), I'm getting this as the error:
lib/fractal/libfractal_debug.a(Fractal_debug.o): In function `operator<<(std::basic_ostream<char, std::char_traits<char> >&, Fractal const&)':
/home/bilbo/fractorama/src/lib/fractal/Fractal.cpp:424: undefined reference to `operator<<(std::basic_ostream<char, std::char_traits<char> >&, BooleanNode const&)' Which looks like the people that wrote fractorama used in the definition of (for example) cout << some_Fractal, the function cout << some_BooleanNode, but never defined the << operator on a BooleanNode reference.
Oops. I'm not sure what to try to change here, because I don't know what a BooleanNode should look like when it gets printed... maybe try bugging the fractorama developers?
Edit: never mind, that won't help. The function is there (in the BooleanNode_debug.o library in the libfractal_debug.a archive), but for some reason the Fractal class can't see it. I though it'd be because they were run through ar in alphabetical order rather than in dependency order, but that didn't seem to help (I changed the LIBS variable in fractorama/src/lib/fractal/Makefile so that BooleanNode_$(something) was before Fractal_$(something), but that didn't help.
I did notice that in fractorama/src/lib/fractal/BooleanNode.h, the ostream class is just forward-declared rather than being properly included from <iostream> (or actually, <iostream.h> here, because for some reason the authors aren't using the correct <iostream> header...). That's compiling now...
HAH. That was it.
Edit fractorama/src/lib/fractal/BooleanNode.h, and change the class ostream; line to #include <iostream.h>, and see if that works.
arlenagha
01-25-2003, 10:37 PM
Thank you bwkaz, what you told me worked and i was able to compile. I appreciate your time and knowledge.