林です。 From: IMAI Kazuki <rapidfox@xxxxxxxxxxxxxxxxx> Date: Mon, 13 Dec 2004 21:25:31 +0900 > つい先週、Vine 2.6 で Firefox 1.0 を source から build したので、 > そのときやったことを書いておきます。 Vine 2.5 だと、 > 4) make -f client.mk build の途中で c++ -o nsTimerImpl.o -c -DOSTYPE=\"Linux2.4.22-0vl2\" -DOSARCH=\"Linux\" -D_IMPL_NS_COM -I./../components -I../../dist/include/string -I../../dist/include/xpcom -I../../dist/include -I/home/chifumi/rpm/BUILD/mozilla/dist/include/nspr -I/usr/X11R6/include -fPIC -I/usr/X11R6/include -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 -pthread -pipe -DNDEBUG -DTRIMMED -O -I/usr/X11R6/include -DMOZILLA_CLIENT -include ../../mozilla-config.h -Wp,-MD,.deps/nsTimerImpl.pp nsTimerImpl.cpp In file included from nsTimerImpl.cpp:36: nsTimerImpl.h:99: syntax error before `virtual' nsTimerImpl.h: In method `void nsTimerImpl::ReleaseCallback()': nsTimerImpl.h:111: invalid use of undefined type `class nsITimerCallback' nsITimer.h:50: forward declaration of `class nsITimerCallback' nsTimerImpl.cpp: At top level: nsTimerImpl.cpp:237: no `nsresult nsTimerImpl::InitWithFuncCallback(void (*)(nsITimer *, void *), void *, unsigned int, unsigned int)' member function declared in class `nsTimerImpl' nsTimerImpl.cpp:252: no `nsresult nsTimerImpl::InitWithCallback(nsITimerCallback *, unsigned int, unsigned int)' member function declared in class `nsTimerImpl' nsTimerImpl.cpp: In method `nsresult nsTimerImpl::InitWithCallback(nsITimerCallback *, unsigned int, unsigned int)': nsTimerImpl.cpp:259: invalid use of undefined type `class nsITimerCallback' nsITimer.h:50: forward declaration of `class nsITimerCallback' nsTimerImpl.cpp: At top level: nsTimerImpl.cpp:267: no `nsresult nsTimerImpl::Init(nsIObserver *, unsigned int, unsigned int)' member function declared in class `nsTimerImpl' nsTimerImpl.cpp:280: no `nsresult nsTimerImpl::Cancel()' member function declared in class `nsTimerImpl' nsTimerImpl.cpp:290: no `nsresult nsTimerImpl::SetDelay(unsigned int)' member function declared in class `nsTimerImpl' nsTimerImpl.cpp: In method `nsresult nsTimerImpl::SetDelay(unsigned int)': nsTimerImpl.cpp:293: `TYPE_REPEATING_PRECISE' undeclared (first use this function) nsTimerImpl.cpp:293: (Each undeclared identifier is reported only once nsTimerImpl.cpp:293: for each function it appears in.) nsTimerImpl.cpp: At top level: nsTimerImpl.cpp:305: no `nsresult nsTimerImpl::GetDelay(PRUint32 *)' member function declared in class `nsTimerImpl' nsTimerImpl.cpp:311: no `nsresult nsTimerImpl::SetType(unsigned int)' member function declared in class `nsTimerImpl' nsTimerImpl.cpp:320: no `nsresult nsTimerImpl::GetType(PRUint32 *)' member function declared in class `nsTimerImpl' nsTimerImpl.cpp:327: no `nsresult nsTimerImpl::GetClosure(void **)' member function declared in class `nsTimerImpl' nsTimerImpl.cpp:334: no `nsresult nsTimerImpl::GetIdle(PRBool *)' member function declared in class `nsTimerImpl' nsTimerImpl.cpp: In method `void nsTimerImpl::Fire()': nsTimerImpl.cpp:385: invalid use of undefined type `class nsITimerCallback' nsITimer.h:50: forward declaration of `class nsITimerCallback' nsTimerImpl.cpp:389: `NS_TIMER_CALLBACK_TOPIC' undeclared (first use this function) nsTimerImpl.cpp:405: `TYPE_REPEATING_SLACK' undeclared (first use this function) nsTimerImpl.cpp: In function `nsresult NS_NewTimer(nsITimer **, void (*)(nsITimer *, void *), void *, unsigned int, unsigned int)': nsTimerImpl.cpp:627: cannot allocate an object of type `nsTimerImpl' nsTimerImpl.cpp:627: since the following virtual functions are abstract: ../../dist/include/xpcom/nsITimerInternal.h:31: nsresult nsITimerInternal::GetIdle(PRBool *) nsITimer.h:132: nsresult nsITimer::Init(void (*)(nsITimer *, void *), void *, unsigned int, unsigned int = 5, unsigned int = NS_TYPE_ONE_SHOT) nsITimer.h:148: nsresult nsITimer::Init(nsITimerCallback *, unsigned int, unsigned int = 5, unsigned int = NS_TYPE_ONE_SHOT) nsITimer.h:151: nsresult nsITimer::Cancel() nsITimer.h:154: PRUint32 nsITimer::GetDelay() nsITimer.h:157: void nsITimer::SetDelay(unsigned int) nsITimer.h:159: PRUint32 nsITimer::GetPriority() nsITimer.h:160: void nsITimer::SetPriority(unsigned int) nsITimer.h:162: PRUint32 nsITimer::GetType() nsITimer.h:163: void nsITimer::SetType(unsigned int) nsITimer.h:166: void * nsITimer::GetClosure() gmake[4]: *** [nsTimerImpl.o] エラー 1 とエラー終了してしまって build できません。 (;_;) | $ find . -name nsTimerImpl.h -ls -exec grep virtual {} \; | 66063 8 -rw-r--r-- 1 chifumi chifumi 5828 1月 15 2004 ./xpcom/threads/nsTimerImpl.h | $ なのになんで | nsTimerImpl.h:99: syntax error before `virtual' なんて出るのか不思議です。 | $ gcc --version | 2.95.3 ですが http://www.mozilla.org/build/unix.html | ・ A C++ compiler. | GCC 3.2 or higher is recommended; egcs 1.0.3 (or higher), gcc 2.95.2 (or higher) will also work. or your platform's native C/C++ | compiler. ということでこれは問題ないと思うのですが。 -- 林 千史 chifumi@xxxxxxxxxxx