I strongly recommend you backup your existing fahmon installation before using these builds (or at least the config folder)
If you are just starting out with fahmon, you first need to download the official 2.1.5 build from http://fahmon.silent-blade.org and extract the contents to a suitable location.
Then download the latest unofficial build and extract the contents over the official build. For Windows users this will replace fahmon.exe, and for Linux users this will replace most of the contents of the src and include directories
There isn't one. Just run fahmon.exe and everything will work just fine!
Slightly more complicated.
If you've compiled fahmon before, you should have no difficulties, as nothing in the compilation procedure has changed. Once you've copied over the unofficial files, you simply
[me@mybox ~]$ cd path/to/fahmon/src [me@mybox ~]$ scons
If you've never install fahmon before or are new to Linux, here's what you need to do
To compile fahmon you need several packages installed on your machine, these are:
In most distros the headers are part of the devel packages:
Installing these packages is fairly painless, you can either use a gui package manager like synaptic, or use the shell, with a one-liner. In ubuntu all you need do (assuming the packages are in the repositores) is issue this from the shell:
[me@mybox ~]$ apt-get install scons libwxgtk2.6-dev wx-common g++
If you get error messages about not being able to locate packages, or you can't fund them in your GUI package manager, you may need to update your list of repositories (you don't need to for PCLinuxOS). Please consult your own respective distros documentation/website for instructions on how to do this.
Assuming you've got this far and installed the packages listed above, you need to test wxGTK to make sure it's installed correctly. To do this, open a shell and type
[me@mybox ~]$ wx-config --list
If wxGTK is installed correctly you should get some output like this:
[me@mybox ~]$ Default config is gtk2-unicode-release-2.6 Default config will be used for output Alternate matches: gtk2-unicode-debug-2.6
After you've confirmed that wxGTK is installed correctly its fairly painless to compile fahmon. Simply navigate to the location you've extracted fahmon to, I'll assume it's in a directory called "fahmon" in your home directory, cd into the src directory and run scons:
[me@mybox ~]$ cd ~/fahmon [me@mybox ~]$ cd src [me@mybox ~]$ scons
Lots of scary looking information will start flowing up your console window at this point, don't be alarmed though, it's doing exactly what it should.
It will look a lot like this:
scons: Reading SConscript files ... scons: done reading SConscript files. scons: Building targets ... g++ -o aboutDialog.o -c -DGTK_NO_CHECK_CASTS -D__WXGTK__ -D_FILE_OFFSET_BITS=64 -D_LARGE_FILES -D_LARGEFILE_SOURCE=1 -pthread -O2 -D_FAHMON_LINUX_ -Wall -Wno-strict-aliasing -I/usr/lib/wx/include/gtk2-ansi-release-2.6 -I/usr/include/wx-2.6 -I/home/uncle_fungus/FahMon/include aboutDialog.cpp g++ -o base64Codec.o -c -DGTK_NO_CHECK_CASTS -D__WXGTK__ -D_FILE_OFFSET_BITS=64 -D_LARGE_FILES -D_LARGEFILE_SOURCE=1 -pthread -O2 -D_FAHMON_LINUX_ -Wall -Wno-strict-aliasing -I/usr/lib/wx/include/gtk2-ansi-release-2.6 -I/usr/include/wx-2.6 -I/home/uncle_fungus/FahMon/include base64Codec.cpp g++ -o benchmark.o -c -DGTK_NO_CHECK_CASTS -D__WXGTK__ -D_FILE_OFFSET_BITS=64 -D_LARGE_FILES -D_LARGEFILE_SOURCE=1 -pthread -O2 -D_FAHMON_LINUX_ -Wall -Wno-strict-aliasing -I/usr/lib/wx/include/gtk2-ansi-release-2.6 -I/usr/include/wx-2.6 -I/home/uncle_fungus/FahMon/include benchmark.cpp g++ -o benchmarksDialog.o -c -DGTK_NO_CHECK_CASTS -D__WXGTK__ -D_FILE_OFFSET_BITS=64 -D_LARGE_FILES -D_LARGEFILE_SOURCE=1 -pthread -O2 -D_FAHMON_LINUX_ -Wall -Wno-strict-aliasing -I/usr/lib/wx/include/gtk2-ansi-release-2.6 -I/usr/include/wx-2.6 -I/home/uncle_fungus/FahMon/include benchmarksDialog.cpp g++ -o benchmarksManager.o -c -DGTK_NO_CHECK_CASTS -D__WXGTK__ -D_FILE_OFFSET_BITS=64 -D_LARGE_FILES -D_LARGEFILE_SOURCE=1 -pthread -O2 -D_FAHMON_LINUX_ -Wall -Wno-strict-aliasing -I/usr/lib/wx/include/gtk2-ansi-release-2.6 -I/usr/include/wx-2.6 -I/home/uncle_fungus/FahMon/include benchmarksManager.cpp g++ -o client.o -c -DGTK_NO_CHECK_CASTS -D__WXGTK__ -D_FILE_OFFSET_BITS=64 -D_LARGE_FILES -D_LARGEFILE_SOURCE=1 -pthread -O2 -D_FAHMON_LINUX_ -Wall -Wno-strict-aliasing -I/usr/lib/wx/include/gtk2-ansi-release-2.6 -I/usr/include/wx-2.6 -I/home/uncle_fungus/FahMon/include client.cpp g++ -o clientDialog.o -c -DGTK_NO_CHECK_CASTS -D__WXGTK__ -D_FILE_OFFSET_BITS=64 -D_LARGE_FILES -D_LARGEFILE_SOURCE=1 -pthread -O2 -D_FAHMON_LINUX_ -Wall -Wno-strict-aliasing -I/usr/lib/wx/include/gtk2-ansi-release-2.6 -I/usr/include/wx-2.6 -I/home/uncle_fungus/FahMon/include clientDialog.cpp g++ -o clientHelperThread.o -c -DGTK_NO_CHECK_CASTS -D__WXGTK__ -D_FILE_OFFSET_BITS=64 -D_LARGE_FILES -D_LARGEFILE_SOURCE=1 -pthread -O2 -D_FAHMON_LINUX_ -Wall -Wno-strict-aliasing -I/usr/lib/wx/include/gtk2-ansi-release-2.6 -I/usr/include/wx-2.6 -I/home/uncle_fungus/FahMon/include clientHelperThread.cpp g++ -o clientsManager.o -c -DGTK_NO_CHECK_CASTS -D__WXGTK__ -D_FILE_OFFSET_BITS=64 -D_LARGE_FILES -D_LARGEFILE_SOURCE=1 -pthread -O2 -D_FAHMON_LINUX_ -Wall -Wno-strict-aliasing -I/usr/lib/wx/include/gtk2-ansi-release-2.6 -I/usr/include/wx-2.6 -I/home/uncle_fungus/FahMon/include clientsManager.cpp g++ -o core.o -c -DGTK_NO_CHECK_CASTS -D__WXGTK__ -D_FILE_OFFSET_BITS=64 -D_LARGE_FILES -D_LARGEFILE_SOURCE=1 -pthread -O2 -D_FAHMON_LINUX_ -Wall -Wno-strict-aliasing -I/usr/lib/wx/include/gtk2-ansi-release-2.6 -I/usr/include/wx-2.6 -I/home/uncle_fungus/FahMon/include core.cpp g++ -o dataInputStream.o -c -DGTK_NO_CHECK_CASTS -D__WXGTK__ -D_FILE_OFFSET_BITS=64 -D_LARGE_FILES -D_LARGEFILE_SOURCE=1 -pthread -O2 -D_FAHMON_LINUX_ -Wall -Wno-strict-aliasing -I/usr/lib/wx/include/gtk2-ansi-release-2.6 -I/usr/include/wx-2.6 -I/home/uncle_fungus/FahMon/include dataInputStream.cpp g++ -o dataOutputStream.o -c -DGTK_NO_CHECK_CASTS -D__WXGTK__ -D_FILE_OFFSET_BITS=64 -D_LARGE_FILES -D_LARGEFILE_SOURCE=1 -pthread -O2 -D_FAHMON_LINUX_ -Wall -Wno-strict-aliasing -I/usr/lib/wx/include/gtk2-ansi-release-2.6 -I/usr/include/wx-2.6 -I/home/uncle_fungus/FahMon/include dataOutputStream.cpp g++ -o eta.o -c -DGTK_NO_CHECK_CASTS -D__WXGTK__ -D_FILE_OFFSET_BITS=64 -D_LARGE_FILES -D_LARGEFILE_SOURCE=1 -pthread -O2 -D_FAHMON_LINUX_ -Wall -Wno-strict-aliasing -I/usr/lib/wx/include/gtk2-ansi-release-2.6 -I/usr/include/wx-2.6 -I/home/uncle_fungus/FahMon/include eta.cpp g++ -o fahlogAnalyzer.o -c -DGTK_NO_CHECK_CASTS -D__WXGTK__ -D_FILE_OFFSET_BITS=64 -D_LARGE_FILES -D_LARGEFILE_SOURCE=1 -pthread -O2 -D_FAHMON_LINUX_ -Wall -Wno-strict-aliasing -I/usr/lib/wx/include/gtk2-ansi-release-2.6 -I/usr/include/wx-2.6 -I/home/uncle_fungus/FahMon/include fahlogAnalyzer.cpp g++ -o firstTimeDialog.o -c -DGTK_NO_CHECK_CASTS -D__WXGTK__ -D_FILE_OFFSET_BITS=64 -D_LARGE_FILES -D_LARGEFILE_SOURCE=1 -pthread -O2 -D_FAHMON_LINUX_ -Wall -Wno-strict-aliasing -I/usr/lib/wx/include/gtk2-ansi-release-2.6 -I/usr/include/wx-2.6 -I/home/uncle_fungus/FahMon/include firstTimeDialog.cpp g++ -o htmlParser.o -c -DGTK_NO_CHECK_CASTS -D__WXGTK__ -D_FILE_OFFSET_BITS=64 -D_LARGE_FILES -D_LARGEFILE_SOURCE=1 -pthread -O2 -D_FAHMON_LINUX_ -Wall -Wno-strict-aliasing -I/usr/lib/wx/include/gtk2-ansi-release-2.6 -I/usr/include/wx-2.6 -I/home/uncle_fungus/FahMon/include htmlParser.cpp g++ -o httpDownloader.o -c -DGTK_NO_CHECK_CASTS -D__WXGTK__ -D_FILE_OFFSET_BITS=64 -D_LARGE_FILES -D_LARGEFILE_SOURCE=1 -pthread -O2 -D_FAHMON_LINUX_ -Wall -Wno-strict-aliasing -I/usr/lib/wx/include/gtk2-ansi-release-2.6 -I/usr/include/wx-2.6 -I/home/uncle_fungus/FahMon/include httpDownloader.cpp g++ -o listViewClients.o -c -DGTK_NO_CHECK_CASTS -D__WXGTK__ -D_FILE_OFFSET_BITS=64 -D_LARGE_FILES -D_LARGEFILE_SOURCE=1 -pthread -O2 -D_FAHMON_LINUX_ -Wall -Wno-strict-aliasing -I/usr/lib/wx/include/gtk2-ansi-release-2.6 -I/usr/include/wx-2.6 -I/home/uncle_fungus/FahMon/include listViewClients.cpp g++ -o main.o -c -DGTK_NO_CHECK_CASTS -D__WXGTK__ -D_FILE_OFFSET_BITS=64 -D_LARGE_FILES -D_LARGEFILE_SOURCE=1 -pthread -O2 -D_FAHMON_LINUX_ -Wall -Wno-strict-aliasing -I/usr/lib/wx/include/gtk2-ansi-release-2.6 -I/usr/include/wx-2.6 -I/home/uncle_fungus/FahMon/include main.cpp g++ -o mainDialog.o -c -DGTK_NO_CHECK_CASTS -D__WXGTK__ -D_FILE_OFFSET_BITS=64 -D_LARGE_FILES -D_LARGEFILE_SOURCE=1 -pthread -O2 -D_FAHMON_LINUX_ -Wall -Wno-strict-aliasing -I/usr/lib/wx/include/gtk2-ansi-release-2.6 -I/usr/include/wx-2.6 -I/home/uncle_fungus/FahMon/include mainDialog.cpp g++ -o messagesFrame.o -c -DGTK_NO_CHECK_CASTS -D__WXGTK__ -D_FILE_OFFSET_BITS=64 -D_LARGE_FILES -D_LARGEFILE_SOURCE=1 -pthread -O2 -D_FAHMON_LINUX_ -Wall -Wno-strict-aliasing -I/usr/lib/wx/include/gtk2-ansi-release-2.6 -I/usr/include/wx-2.6 -I/home/uncle_fungus/FahMon/include messagesFrame.cpp g++ -o messagesManager.o -c -DGTK_NO_CHECK_CASTS -D__WXGTK__ -D_FILE_OFFSET_BITS=64 -D_LARGE_FILES -D_LARGEFILE_SOURCE=1 -pthread -O2 -D_FAHMON_LINUX_ -Wall -Wno-strict-aliasing -I/usr/lib/wx/include/gtk2-ansi-release-2.6 -I/usr/include/wx-2.6 -I/home/uncle_fungus/FahMon/include messagesManager.cpp g++ -o pathManager.o -c -DGTK_NO_CHECK_CASTS -D__WXGTK__ -D_FILE_OFFSET_BITS=64 -D_LARGE_FILES -D_LARGEFILE_SOURCE=1 -pthread -O2 -D_FAHMON_LINUX_ -Wall -Wno-strict-aliasing -I/usr/lib/wx/include/gtk2-ansi-release-2.6 -I/usr/include/wx-2.6 -I/home/uncle_fungus/FahMon/include pathManager.cpp g++ -o preference.o -c -DGTK_NO_CHECK_CASTS -D__WXGTK__ -D_FILE_OFFSET_BITS=64 -D_LARGE_FILES -D_LARGEFILE_SOURCE=1 -pthread -O2 -D_FAHMON_LINUX_ -Wall -Wno-strict-aliasing -I/usr/lib/wx/include/gtk2-ansi-release-2.6 -I/usr/include/wx-2.6 -I/home/uncle_fungus/FahMon/include preference.cpp g++ -o preferencesDialog.o -c -DGTK_NO_CHECK_CASTS -D__WXGTK__ -D_FILE_OFFSET_BITS=64 -D_LARGE_FILES -D_LARGEFILE_SOURCE=1 -pthread -O2 -D_FAHMON_LINUX_ -Wall -Wno-strict-aliasing -I/usr/lib/wx/include/gtk2-ansi-release-2.6 -I/usr/include/wx-2.6 -I/home/uncle_fungus/FahMon/include preferencesDialog.cpp g++ -o preferencesManager.o -c -DGTK_NO_CHECK_CASTS -D__WXGTK__ -D_FILE_OFFSET_BITS=64 -D_LARGE_FILES -D_LARGEFILE_SOURCE=1 -pthread -O2 -D_FAHMON_LINUX_ -Wall -Wno-strict-aliasing -I/usr/lib/wx/include/gtk2-ansi-release-2.6 -I/usr/include/wx-2.6 -I/home/uncle_fungus/FahMon/include preferencesManager.cpp g++ -o progressManager.o -c -DGTK_NO_CHECK_CASTS -D__WXGTK__ -D_FILE_OFFSET_BITS=64 -D_LARGE_FILES -D_LARGEFILE_SOURCE=1 -pthread -O2 -D_FAHMON_LINUX_ -Wall -Wno-strict-aliasing -I/usr/lib/wx/include/gtk2-ansi-release-2.6 -I/usr/include/wx-2.6 -I/home/uncle_fungus/FahMon/include progressManager.cpp g++ -o project.o -c -DGTK_NO_CHECK_CASTS -D__WXGTK__ -D_FILE_OFFSET_BITS=64 -D_LARGE_FILES -D_LARGEFILE_SOURCE=1 -pthread -O2 -D_FAHMON_LINUX_ -Wall -Wno-strict-aliasing -I/usr/lib/wx/include/gtk2-ansi-release-2.6 -I/usr/include/wx-2.6 -I/home/uncle_fungus/FahMon/include project.cpp g++ -o projectHelperThread.o -c -DGTK_NO_CHECK_CASTS -D__WXGTK__ -D_FILE_OFFSET_BITS=64 -D_LARGE_FILES -D_LARGEFILE_SOURCE=1 -pthread -O2 -D_FAHMON_LINUX_ -Wall -Wno-strict-aliasing -I/usr/lib/wx/include/gtk2-ansi-release-2.6 -I/usr/include/wx-2.6 -I/home/uncle_fungus/FahMon/include projectHelperThread.cpp g++ -o projectsManager.o -c -DGTK_NO_CHECK_CASTS -D__WXGTK__ -D_FILE_OFFSET_BITS=64 -D_LARGE_FILES -D_LARGEFILE_SOURCE=1 -pthread -O2 -D_FAHMON_LINUX_ -Wall -Wno-strict-aliasing -I/usr/lib/wx/include/gtk2-ansi-release-2.6 -I/usr/include/wx-2.6 -I/home/uncle_fungus/FahMon/include projectsManager.cpp projectsManager.cpp: In member function `bool ProjectsManager::Update_DownloadProjectsFile(wxString&, ProgressManager&, wxString&)': projectsManager.cpp:291: warning: `wxUint32 portused' might be used uninitialized in this function g++ -o staticBoldedText.o -c -DGTK_NO_CHECK_CASTS -D__WXGTK__ -D_FILE_OFFSET_BITS=64 -D_LARGE_FILES -D_LARGEFILE_SOURCE=1 -pthread -O2 -D_FAHMON_LINUX_ -Wall -Wno-strict-aliasing -I/usr/lib/wx/include/gtk2-ansi-release-2.6 -I/usr/include/wx-2.6 -I/home/uncle_fungus/FahMon/include staticBoldedText.cpp g++ -o staticUrl.o -c -DGTK_NO_CHECK_CASTS -D__WXGTK__ -D_FILE_OFFSET_BITS=64 -D_LARGE_FILES -D_LARGEFILE_SOURCE=1 -pthread -O2 -D_FAHMON_LINUX_ -Wall -Wno-strict-aliasing -I/usr/lib/wx/include/gtk2-ansi-release-2.6 -I/usr/include/wx-2.6 -I/home/uncle_fungus/FahMon/include staticUrl.cpp g++ -o tools.o -c -DGTK_NO_CHECK_CASTS -D__WXGTK__ -D_FILE_OFFSET_BITS=64 -D_LARGE_FILES -D_LARGEFILE_SOURCE=1 -pthread -O2 -D_FAHMON_LINUX_ -Wall -Wno-strict-aliasing -I/usr/lib/wx/include/gtk2-ansi-release-2.6 -I/usr/include/wx-2.6 -I/home/uncle_fungus/FahMon/include tools.cpp g++ -o trayManager.o -c -DGTK_NO_CHECK_CASTS -D__WXGTK__ -D_FILE_OFFSET_BITS=64 -D_LARGE_FILES -D_LARGEFILE_SOURCE=1 -pthread -O2 -D_FAHMON_LINUX_ -Wall -Wno-strict-aliasing -I/usr/lib/wx/include/gtk2-ansi-release-2.6 -I/usr/include/wx-2.6 -I/home/uncle_fungus/FahMon/include trayManager.cpp g++ -o workUnitFrame.o -c -DGTK_NO_CHECK_CASTS -D__WXGTK__ -D_FILE_OFFSET_BITS=64 -D_LARGE_FILES -D_LARGEFILE_SOURCE=1 -pthread -O2 -D_FAHMON_LINUX_ -Wall -Wno-strict-aliasing -I/usr/lib/wx/include/gtk2-ansi-release-2.6 -I/usr/include/wx-2.6 -I/home/uncle_fungus/FahMon/include workUnitFrame.cpp g++ -o fahmon -pthread aboutDialog.o base64Codec.o benchmark.o benchmarksDialog.o benchmarksManager.o client.o clientDialog.o clientHelperThread.o clientsManager.o core.o dataInputStream.o dataOutputStream.o eta.o fahlogAnalyzer.o firstTimeDialog.o htmlParser.o httpDownloader.o listViewClients.o main.o mainDialog.o messagesFrame.o messagesManager.o pathManager.o preference.o preferencesDialog.o preferencesManager.o progressManager.o project.o projectHelperThread.o projectsManager.o staticBoldedText.o staticUrl.o tools.o trayManager.o workUnitFrame.o -L/usr/X11R6/lib -lwx_gtk2_xrc-2.6 -lwx_gtk2_qa-2.6 -lwx_gtk2_html-2.6 -lwx_gtk2_adv-2.6 -lwx_gtk2_core-2.6 -lwx_base_xml-2.6 -lwx_base_net-2.6 -lwx_base-2.6 scons: done building targets.
If there are no errors then fahmon has been compiled correctly, ignore any "warning" messages.
If you get lots of errors that look something like:
sh: O cannot find specified file.
it means you haven't got g++ installed, or it's not installed properly
Because fahmon needs to be run from its own directory in Linux, you can't just double click on the application and expect it to work. What you need to do is create a script that launchs fahmon correctly. You can then create a shortcut/link to this script on your desktop etc. Using the same assumption as above with regard to the location of fahmon, open up an shell and enter this into it:
[me@mybox ~]$ cd ~ [me@mybox ~]$ cat > fahmon.sh << EOF #!/bin/sh cd ~/fahmon/src ./fahmon EOF
Press enter. This will have created a shell script in your home directory, called fahmon.sh which starts fahmon in the correct way. The last thing you need to do is run this command from the shell:
[me@mybox ~]$ chmod +x ~/fahmon.sh
Now your script is finished, and you've just given yourself execute permissions over it. So now you can start fahmon, either by double clicking the shell script in your file manager, or by running it from a shell:
[me@mybox ~]$ ~/fahmon.sh
From the instructions above it looks terribly laborious and difficult. In fact it isn't, assuming nothing breaks (like you forgot to make sure the packages were in the repositories), then it should take a maximum of 2 minutes from start to finish to get fahmon compiled from source.