observe: // our source temp.c #include<math.h> int main() { return sin(2); } it compiles just fine: user@host ch4 $ gcc -Wall -c temp.c -o temp.o user@host ch4 $ linking, however, is a disaster: user@host ch4 $ gcc temp.c /tmp/ccK7oydF.o(.text+0x20): In function `main': : undefined reference to `sin' collect2: ld returned 1 exit status user@host ch4 $ Reproducible: Always Steps to Reproduce: gcc version: sys-devel/gcc-config-1.3.3-r1 sys-devel/gcc-3.2.3-r1 environment: declare -x CC="gcc" declare -x CLASSPATH="/opt/blackdown-jdk-1.4.1/jre/lib/rt.jar:.:/home/singollo/GNUstep/Libraries/Java:/usr/GNUstep/Local/Libraries/Java:/usr/GNUstep/Network/Libraries/Java:/usr/GNUstep/System/Libraries/Java" declare -x COLORTERM="gnome-terminal" declare -x CONFIG_PROTECT="/usr/X11R6/lib/X11/xkb /usr/kde/3.1/share/config /usr/share/config"declare -x CONFIG_PROTECT_MASK="/etc/gconf" declare -x CVS_RSH="ssh" declare -x CXX="g++" declare -x DESKTOP_STARTUP_ID="" declare -x DISPLAY=":0.0" declare -x EDITOR="/usr/bin/vim" declare -x GNOME_DESKTOP_SESSION_ID="Default" declare -x GNUSTEP_FLATTENED="" declare -x GNUSTEP_HOST="i686-pc-linux-gnu" declare -x GNUSTEP_HOST_CPU="ix86" declare -x GNUSTEP_HOST_OS="linux-gnu" declare -x GNUSTEP_HOST_VENDOR="pc" declare -x GNUSTEP_LOCAL_ROOT="/usr/GNUstep/Local" declare -x GNUSTEP_MAKEFILES="/usr/GNUstep/System/Makefiles" declare -x GNUSTEP_NETWORK_ROOT="/usr/GNUstep/Network" declare -x GNUSTEP_PATHLIST="/home/user/GNUstep:/usr/GNUstep/Local:/usr/GNUstep/Network:/usr/GNUstep/System" declare -x GNUSTEP_ROOT="/usr/GNUstep" declare -x GNUSTEP_SYSTEM_ROOT="/usr/GNUstep/System" declare -x GNUSTEP_USER_ROOT="/home/singollo/GNUstep" declare -x GUILE_LOAD_PATH="/home/user/GNUstep/Libraries/Guile:/usr/GNUstep/Local/Libraries/Guile:/usr/GNUstep/Network/Libraries/Guile:/usr/GNUstep/System/Libraries/Guile" declare -x G_BROKEN_FILENAMES="1" declare -x HOME="/home/user" declare -x HOSTNAME="host" declare -x INFODIR="/usr/share/info:/usr/X11R6/info" declare -x INFOPATH="/usr/share/info:/usr/share/gcc-data/i686-pc-linux-gnu/3.2/info" declare -x INPUTRC="/etc/inputrc" declare -x JAVAC="/opt/blackdown-jdk-1.4.1/bin/javac" declare -x JAVA_HOME="/opt/blackdown-jdk-1.4.1" declare -x JDK_HOME="/opt/blackdown-jdk-1.4.1" declare -x KDEDIR="/usr/kde/3.1" declare -x KDEDIRS="/usr" declare -x LARCH_PATH="/usr/share/splint/lib" declare -x LCLIMPORTDIR="/usr/share/splint/imports" declare -x LD_LIBRARY_PATH="/home/user/GNUstep/Libraries/ix86/linux-gnu/gnu-gnu-gnu:/home/user/GNUstep/Libraries/ix86/linux-gnu:/usr/GNUstep/Local/Libraries/ix86/linux-gnu/gnu-gnu-gnu:/usr/GNUstep/Local/Libraries/ix86/linux-gnu:/usr/GNUstep/Network/Libraries/ix86/linux-gnu/gnu-gnu-gnu:/usr/GNUstep/Network/Libraries/ix86/linux-gnu:/usr/GNUstep/System/Libraries/ix86/linux-gnu/gnu-gnu-gnu:/usr/GNUstep/System/Libraries/ix86/linux-gnu" declare -x LESS="-R" declare -x LESSOPEN="|lesspipe.sh %s" declare -x LIBRARY_COMBO="gnu-gnu-gnu" declare -x LOGNAME="user" declare -x LS_COLORS="no=00:fi=00:di=01;34:ln=01;36:pi=40;33:so=01;35:do=01;35:bd=40;33;01:cd=40;33;01:or=40;31;01:ex=01;32:*.tar=01;31:*.tgz=01;31:*.arj=01;31:*.taz=01;31:*.lzh=01;31:*.zip=01;31:*.z=01;31:*.Z=01;31:*.gz=01;31:*.bz2=01;31:*.deb=01;31:*.rpm=01;31:*.jpg=01;35:*.gif=01;35:*.bmp=01;35:*.ppm=01;35:*.tga=01;35:*.xbm=01;35:*.xpm=01;35:*.tif=01;35:*.png=01;35:*.mpg=01;35:*.avi=01;35:*.fli=01;35:*.gl=01;35:*.dl=01;35:" declare -x MAIL="/var/mail/user" declare -x MANPATH="/usr/share/man:/usr/local/share/man:/usr/share/gcc-data/i686-pc-linux-gnu/3.2/man:/usr/X11R6/man:/opt/blackdown-jdk-1.4.1/man:/opt/vmware/man" declare -x MOZILLA_FIVE_HOME="/usr/lib/mozilla" declare -x OLDPWD declare -x PAGER="/usr/bin/less" declare -x PATH="/home/user/GNUstep/Tools:/home/user/GNUstep/Tools/ix86/linux-gnu/gnu-gnu-gnu:/home/singollo/GNUstep/Tools/ix86/linux-gnu:/usr/GNUstep/Local/Tools:/usr/GNUstep/Local/Tools/ix86/linux-gnu/gnu-gnu-gnu:/usr/GNUstep/Local/Tools/ix86/linux-gnu:/usr/GNUstep/Network/Tools:/usr/GNUstep/Network/Tools/ix86/linux-gnu/gnu-gnu-gnu:/usr/GNUstep/Network/Tools/ix86/linux-gnu:/usr/GNUstep/System/Tools:/usr/GNUstep/System/Tools/ix86/linux-gnu/gnu-gnu-gnu:/usr/GNUstep/System/Tools/ix86/linux-gnu:/bin:/usr/bin:/usr/local/bin:/opt/bin:/usr/i686-pc-linux-gnu/gcc-bin/3.2:/opt/stuffit/bin:/usr/X11R6/bin:/opt/blackdown-jdk-1.4.1/bin:/opt/blackdown-jdk-1.4.1/jre/bin:/usr/qt/3/bin:/usr/qt/tinyq/bin:/usr/kde/3.1/bin:/usr/games/bin:/opt/vmware/bin:~/bin" declare -x PS1="\\[\\033[01;32m\\]\\u@\\h \\[\\033[01;34m\\]\\W \\\$ \\[\\033[00m\\]" declare -x PWD="/home/user" declare -x QMAKESPEC="linux-g++" declare -x QTDIR="/usr/qt/3" declare -x SANE_CONFIG_DIR="/etc/sane.d" declare -x SDL_DSP_NOSELECT="1" declare -x SESSION_MANAGER="local/host:/tmp/.ICE-unix/1367" declare -x SHELL="/bin/bash" declare -x SHLVL="5" declare -x TERM="xterm" declare -x USER="user" declare -x WINDOWID="23131140" declare -x WINDOW_MANAGER="/usr/bin/metacity" declare -x XAUTHORITY="/home/user/.Xauthority" declare -x XINITRC="/etc/X11/xinit/xinitrc" Portage 2.0.48-r5 (default-x86-1.4, gcc-3.2.3, glibc-2.3.2-r1) ================================================================= System uname: 2.4.20-gentoo-r5 i686 AMD Athlon(tm) Processor GENTOO_MIRRORS="http://gentoo.oregonstate.edu http://distro.ibiblio.org/pub/Linux/distributions/gentoo" CONFIG_PROTECT="/etc /var/qmail/control /usr/kde/2/share/config /usr/kde/3/share/config /usr/X11R6/lib/X11/xkb /usr/kde/3.1/share/config /usr/share/config" CONFIG_PROTECT_MASK="/etc/gconf /etc/env.d" PORTDIR="/usr/portage" DISTDIR="/usr/portage/distfiles" PKGDIR="/usr/portage/packages" PORTAGE_TMPDIR="/var/tmp" PORTDIR_OVERLAY="" USE="x86 oss 3dnow apm avi crypt cups encode foomaticdb gif jpeg libg++ mad mikmod mmx mpeg ncurses nls pdflib png quicktime spell truetype xml2 xmms xv zlib gtkhtml gdbm berkdb slang readline arts tetex bonobo svga tcltk java guile sdl gpm tcpd pam libwww ssl perl python esd imlib oggvorbis qt kde motif opengl mozilla cdr scanner X gtk gtk2 gnome dvd" COMPILER="gcc3" CHOST="i686-pc-linux-gnu" CFLAGS="-march=athlon-tbird -O3 -pipe" CXXFLAGS="-O2 -mcpu=i686 -pipe" ACCEPT_KEYWORDS="x86" MAKEOPTS="-j2" AUTOCLEAN="yes" SYNC="rsync://rsync.gentoo.org/gentoo-portage" FEATURES="sandbox ccache userpriv usersandbox"
gcc -v Reading specs from /usr/lib/gcc-lib/i686-pc-linux-gnu/3.2.3/specs Configured with: /var/tmp/portage/gcc-3.2.3-r1/work/gcc-3.2.3/configure --prefix=/usr --bindir=/usr/i686-pc-linux-gnu/gcc-bin/3.2 --includedir=/usr/lib/gcc-lib/i686-pc-linux-gnu/3.2.3/include --datadir=/usr/share/gcc-data/i686-pc-linux-gnu/3.2 --mandir=/usr/share/gcc-data/i686-pc-linux-gnu/3.2/man --infodir=/usr/share/gcc-data/i686-pc-linux-gnu/3.2/info --enable-shared --host=i686-pc-linux-gnu --target=i686-pc-linux-gnu --with-system-zlib --enable-languages=c,c++,ada,f77,objc,java --enable-threads=posix --enable-long-long --disable-checking --enable-cstdio=stdio --enable-clocale=generic --enable-__cxa_atexit --enable-version-specific-runtime-libs --with-gxx-include-dir=/usr/lib/gcc-lib/i686-pc-linux-gnu/3.2.3/include/g++-v3 --with-local-prefix=/usr/local --enable-shared --enable-nls --without-included-gettext Thread model: posix gcc version 3.2.3 20030422 (Gentoo Linux 1.4 3.2.3-r1, propolice)
You need to link in the math library: --------------------------------------- tmp $ cat temp.c #include<math.h> int main() { return sin(2); } tmp $ gcc -Wall -c temp.c -o temp.o tmp $ gcc -lm temp.c tmp $ ./a.out tmp $