Thank you Adrian.  This is my env, generally speaking, it's Gentoo 2005.1 with gcc 3.4.4 and gnustep from `ACCEPT_KEYWORDS="~x86" emerge gnustep-env'.
===============================================
# uname -a
Linux SUN 2.6.13-gentoo-r5 #3 Sun Oct 30 21:32:52 CST 2005 i686 Intel(R) Pentium(R) M processor 1.86GHz GenuineIntel GNU/Linux

# gcc -v
Reading specs from /usr/lib/gcc/i686-pc-linux-gnu/3.4.4/specs
Configured with: /var/tmp/portage/gcc-3.4.4-r1/work/gcc-3.4.4/configure --prefix=/usr --bindir=/usr/i686-pc-linux-gnu/gcc-bin/3.4.4 --includedir=/usr/lib/gcc/i686-pc-linux-gnu/3.4.4/include --datadir=/usr/share/gcc-data/i686-pc-linux-gnu/3.4.4 --mandir=/usr/share/gcc-data/i686-pc-linux-gnu/3.4.4/man --infodir=/usr/share/gcc-data/i686-pc-linux-gnu/3.4.4/info --with-gxx-include-dir=/usr/lib/gcc/i686-pc-linux-gnu/3.4.4/include/g++-v3 --host=i686-pc-linux-gnu --build=i686-pc-linux-gnu --disable-altivec --enable-nls --without-included-gettext --with-system-zlib --disable-checking --disable-werror --disable-libunwind-exceptions --disable-multilib --disable-libgcj --enable-languages=c,c++,objc,f77 --enable-shared --enable-threads=posix --enable-__cxa_atexit --enable-clocale=gnu
Thread model: posix
gcc version 3.4.4 (Gentoo 3.4.4-r1, ssp-3.4.4-1.0, pie-8.7.8)

# emerge -s gnustep
*  gnustep-base/gnustep-back-art
      Latest version installed: 0.9.6-r1

*  gnustep-base/gnustep-back-xlib
      Latest version installed: [ Not Installed ]

*  gnustep-base/gnustep-base
      Latest version installed: 1.10.3-r1

*  gnustep-base/gnustep-env
      Latest version installed: 0.1.6-r1

*  gnustep-base/gnustep-gui
      Latest version installed: 0.9.5

*  gnustep-base/gnustep-make
      Latest version installed: 1.10.0-r2
===============================================

I googled for a while after that reply, and found the same suggestion as you gave.  It works for compiling *.m to *.o, but there're still error messages when gcc links *.o to `temacs', all are "undefined reference to whatwhatwhat".  I added `-lobjc' to the gcc link command line, some errors gone, but still many like "undefined reference to NSxxx" and "undefined reference to __objc_class_name_NSxxx".  I searched the GNUStep directory, found no *.a but only *.so.  I'm stuck here.

2005/11/7, Adrian Robert <arobert@cogsci.ucsd.edu>:


On Nov 7, 2005, at 3:17 AM, Sun Yijiang wrote:

> I have GNUStep installed on my GNU/Linux, but got this error message:
> # make
> gcc -c -D_BSD_SOURCE   -Demacs -DHAVE_CONFIG_H   -I. -I/home/sun/
> sandbox/emacs-23.0.0_NS-9.0pre1/src -D_BSD_SOURCE -g -O2 nsterm.m
> nsterm.m: In function `ns_init_paths':
> nsterm.m:292: error: cannot find interface declaration for
> `NXConstantString'

Try editing nextstep/compile and add

  -fconstant-string-class=NSConstantString

to the CFLAGS variable setting for the GNUstep case.  Then rm ../
config.log and invoke ./compile again.  (The other warnings are "OK"..)

At one point I needed that flag when compiling it under GNUstep, but
then I stopped needing it and I'd assumed that it was because of some
other flag settings rendering it unnecessary -- but it looks like I
might have been wrong.  What OS and gcc version are you running?
What version of gnustep?

Adrian