Firefox 2.0.0.3 (Vanilla, source code downloaded from ftp.mozilla.org) compiles on Ubuntu Edgy, on Debian Unstable, but not on Ubuntu Feisty with the same options.
Here is the end of the console output:
-----
c++ -o nsSpecialSystemDirectory.o -c -I../../dist/include/system_wrappers -include /home/erwan/Devel/firefox-2/mozilla/config/gcc_hidden.h -DMOZILLA_INTERNAL_API -DOSTYPE=\"Linux2.6\" -DOSARCH=\"Linux\" -DBUILD_ID=0000000000 -D_IMPL_NS_COM_OBSOLETE -I.. -I/home/erwan/Devel/firefox-2/mozilla/xpcom/obsolete/../io -I../../dist/include/xpcom -I../../dist/include/string -I../../dist/include/xpcom_obsolete -I../../dist/include -I../../dist/include/nspr -I../../dist/sdk/include -fPIC -fno-rtti -fno-exceptions -Wall -Wconversion -Wpointer-arith -Wcast-align -Woverloaded-virtual -Wsynth -Wno-ctor-dtor-privacy -Wno-non-virtual-dtor -Wno-long-long -pedantic -fshort-wchar -pthread -pipe -DDEBUG -D_DEBUG -DDEBUG_erwan -DTRACING -g -fno-inline -DMOZILLA_CLIENT -include ../../mozilla-config.h -Wp,-MD,.deps/nsSpecialSystemDirectory.pp /home/erwan/Devel/firefox-2/mozilla/xpcom/obsolete/nsSpecialSystemDirectory.cpp
/home/erwan/Devel/firefox-2/mozilla/xpcom/obsolete/nsSpecialSystemDirectory.cpp:119: warning: ‘PRBool DeleteSystemDirKeys(nsHashKey*, void*, void*)’ defined but not used
rm -f libxpcom_compat.so
c++ -fno-rtti -fno-exceptions -Wall -Wconversion -Wpointer-arith -Wcast-align -Woverloaded-virtual -Wsynth -Wno-ctor-dtor-privacy -Wno-non-virtual-dtor -Wno-long-long -pedantic -fshort-wchar -pthread -pipe -DDEBUG -D_DEBUG -DDEBUG_erwan -DTRACING -g -fno-inline -fPIC -shared -Wl,-z,defs -Wl,-h,libxpcom_compat.so -o libxpcom_compat.so nsFileSpec.o nsFileStream.o nsIFileStream.o nsFileSpecImpl.o nsSpecialSystemDirectory.o -Wl,--whole-archive ../../dist/lib/libmozreg_s.a -Wl,--no-whole-archive -L../../dist/bin -lxpcom -lxpcom_core -L../../dist/bin -L../../dist/lib -lplds4 -lplc4 -lnspr4 -lpthread -ldl -ldl -lm
nsFileSpec.o: In function `nsCOMPtr<nsILocalFile>::assign_from_qi(nsQueryInterface, nsID const&)':
/home/erwan/Devel/firefox-2/mozilla/ff-debug-static/xpcom/obsolete/../../dist/include/xpcom/nsCOMPtr.h:1232: undefined reference to `nsQueryInterface::operator()(nsID const&, void**) const'
nsFileStream.o: In function `nsCOMPtr<nsIOpenFile>::assign_from_qi(nsQueryInterface, nsID const&)':
/home/erwan/Devel/firefox-2/mozilla/ff-debug-static/xpcom/obsolete/../../dist/include/xpcom/nsCOMPtr.h:1232: undefined reference to `nsQueryInterface::operator()(nsID const&, void**) const'
nsFileStream.o: In function `nsCOMPtr<nsIOutputStream>::assign_from_qi(nsQueryInterface, nsID const&)':
/home/erwan/Devel/firefox-2/mozilla/ff-debug-static/xpcom/obsolete/../../dist/include/xpcom/nsCOMPtr.h:1232: undefined reference to `nsQueryInterface::operator()(nsID const&, void**) const'
nsFileStream.o: In function `nsCOMPtr<nsIRandomAccessStore>::assign_from_qi(nsQueryInterface, nsID const&)':
/home/erwan/Devel/firefox-2/mozilla/ff-debug-static/xpcom/obsolete/../../dist/include/xpcom/nsCOMPtr.h:1232: undefined reference to `nsQueryInterface::operator()(nsID const&, void**) const'
nsFileStream.o: In function `nsCOMPtr<nsIFileSpecOutputStream>::assign_from_qi(nsQueryInterface, nsID const&)':
/home/erwan/Devel/firefox-2/mozilla/ff-debug-static/xpcom/obsolete/../../dist/include/xpcom/nsCOMPtr.h:1232: undefined reference to `nsQueryInterface::operator()(nsID const&, void**) const'
nsFileStream.o:/home/erwan/Devel/firefox-2/mozilla/ff-debug-static/xpcom/obsolete/../../dist/include/xpcom/nsCOMPtr.h:1232: more undefined references to `nsQueryInterface::operator()(nsID const&, void**) const' follow
nsSpecialSystemDirectory.o: In function `nsSpecialSystemDirectory::Set(nsSpecialSystemDirectory::SystemDirectories, nsFileSpec*)':
/home/erwan/Devel/firefox-2/mozilla/xpcom/obsolete/nsSpecialSystemDirectory.cpp:889: undefined reference to `nsHashtable::nsHashtable(unsigned int, int)'
/home/erwan/Devel/firefox-2/mozilla/xpcom/obsolete/nsSpecialSystemDirectory.cpp:895: undefined reference to `nsHashtable::Put(nsHashKey*, void*)'
nsSpecialSystemDirectory.o: In function `nsSpecialSystemDirectory::operator=(nsSpecialSystemDirectory::SystemDirectories)':
/home/erwan/Devel/firefox-2/mozilla/xpcom/obsolete/nsSpecialSystemDirectory.cpp:456: undefined reference to `nsHashtable::Get(nsHashKey*)'
/home/erwan/Devel/firefox-2/mozilla/xpcom/obsolete/nsSpecialSystemDirectory.cpp:459: undefined reference to `nsHashtable::Get(nsHashKey*)'
/home/erwan/Devel/firefox-2/mozilla/xpcom/obsolete/nsSpecialSystemDirectory.cpp:490: undefined reference to `nsHashtable::Get(nsHashKey*)'
/home/erwan/Devel/firefox-2/mozilla/xpcom/obsolete/nsSpecialSystemDirectory.cpp:493: undefined reference to `nsHashtable::Get(nsHashKey*)'
/home/erwan/Devel/firefox-2/mozilla/xpcom/obsolete/nsSpecialSystemDirectory.cpp:525: undefined reference to `nsHashtable::Get(nsHashKey*)'
nsSpecialSystemDirectory.o: In function `~SystemDirectoriesKey':
/home/erwan/Devel/firefox-2/mozilla/xpcom/obsolete/nsSpecialSystemDirectory.cpp:93: undefined reference to `nsHashKey::~nsHashKey()'
/home/erwan/Devel/firefox-2/mozilla/xpcom/obsolete/nsSpecialSystemDirectory.cpp:93: undefined reference to `nsHashKey::~nsHashKey()'
nsSpecialSystemDirectory.o:(.data.rel.ro._ZTV20SystemDirectoriesKey[vtable for SystemDirectoriesKey]+0x1c): undefined reference to `nsHashKey::Write(nsIObjectOutputStream*) const'
/usr/bin/ld: libxpcom_compat.so: hidden symbol `nsQueryInterface::operator()(nsID const&, void**) const' isn't defined
/usr/bin/ld: final link failed: Nonrepresentable section on output
collect2: ld returned 1 exit status
make[3]: *** [libxpcom_compat.so] Error 1
make[3]: Leaving directory `/home/erwan/Devel/firefox-2/mozilla/ff-debug-static/xpcom/obsolete'
make[2]: *** [tier_2] Error 2
make[2]: Leaving directory `/home/erwan/Devel/firefox-2/mozilla/ff-debug-static'
make[1]: *** [default] Error 2
make[1]: Leaving directory `/home/erwan/Devel/firefox-2/mozilla/ff-debug-static'
make: *** [build] Error 2
Well, this isn't actually a bug, since thats why there are specialized packages for Ubuntu... but the issue here is your trying to compile a static build, but your referencing some system libs (possibly even libxpcom) which aren't static, or something of the like. Below is a link to the total diff of a raw firefox package against what Feisty currently compiles and ships, you can root around through that.
http:// librarian. launchpad. net/7127315/ firefox_ 2.0.0.3% 2B1-0ubuntu2. diff.gz