undefined reference to

jmchu@uci.edu jmchu@uci.edu
Wed Aug 25 13:04:00 GMT 2010


Hi,
I am running Cygwin on Windows 7 and I am trying to compile a c file that
has uses a function from a c++ file. However I keep on getting undefined
reference to the c++ function

In my ATmegaBOOT_xx8.c file,
I declared the header of the c++ file

extern "C" {
#include "wireless.h"
}

C:\Users\School\dkirkby-athomeleaf-a657898>make adaboot328
cygwin warning:
  MS-DOS style path detected:
C:\\Users\\School\\arduino-0015/hardware/cores/arduino/pins_arduino.c
  Preferred POSIX equivalent is:
/cygdrive/c/Users/School/arduino-0015/hardware/cores/arduino/pins_arduino.c
  CYGWIN environment variable option "nodosfilewarning" turns off this
warning.
  Consult the user's guide for more details about POSIX paths:
    http://cygwin.com/cygwin-ug-net/using.html#using-pathnames
C:\\Users\\School\\arduino-0015/hardware/tools/avr/bin/avr-g++ -v -g -Wall
-O2 -mmcu=atmega328p -DF_CPU=16000000L  '-DMAX_TIME_COUNT=F_CPU>>2'
'-DNUM_LED_FLASHES=3'  '-DWATCHDOG_MODS' -Wl,--section-st
art=.text=0x7800 -o ATmegaBOOT_xx8_adaboot328.elf  ATmegaBOOT_xx8.o
Using built-in specs.
Target: avr
Configured with: ../gcc-4.3.2/configure
--enable-win32-registry=WinAVR-20081205 --with-gmp=/usr/local
--with-mpfr=/usr/local --prefix=/c/WinAVR --target=avr
--enable-languages=c,c++,objc --with-dwarf2
 --enable-doc --disable-shared --disable-libada --disable-libssp
--disable-nls --with-pkgversion='WinAVR 20081205'
--with-bugurl='URL:http://sourceforge.net/tracker/?atid=520074&group_id=68108&func=br
owse'
Thread model: single
gcc version 4.3.2 (WinAVR 20081205)
COMPILER_PATH=c:/users/school/arduino-0015/hardware/tools/avr/bin/../libexec/gcc/avr/4.3.2/;c:/users/school/arduino-0015/hardware/tools/avr/bin/../libexec/gcc/;c:/users/school/arduino-0015/hardware/to
ols/avr/bin/../lib/gcc/avr/4.3.2/../../../../avr/bin/
LIBRARY_PATH=c:/users/school/arduino-0015/hardware/tools/avr/bin/../lib/gcc/avr/4.3.2/avr5/;c:/users/school/arduino-0015/hardware/tools/avr/bin/../lib/gcc/avr/4.3.2/../../../../avr/lib/avr5/;c:/users/
school/arduino-0015/hardware/tools/avr/bin/../lib/gcc/avr/4.3.2/;c:/users/school/arduino-0015/hardware/tools/avr/bin/../lib/gcc/;c:/users/school/arduino-0015/hardware/tools/avr/bin/../lib/gcc/avr/4.3.
2/../../../../avr/lib/
COLLECT_GCC_OPTIONS='-v' '-g' '-Wall' '-O2' '-mmcu=atmega328p'
'-DF_CPU=16000000L' '-DMAX_TIME_COUNT=F_CPU>>2' '-DNUM_LED_FLASHES=3'
'-DWATCHDOG_MODS' '-o' 'ATmegaBOOT_xx8_adaboot328.elf'
 c:/users/school/arduino-0015/hardware/tools/avr/bin/../lib/gcc/avr/4.3.2/../../../../avr/bin/ld.exe
-m avr5 -Tdata 0x800100 -o ATmegaBOOT_xx8_adaboot328.elf
c:/users/school/arduino-0015/hardware/tool
s/avr/bin/../lib/gcc/avr/4.3.2/../../../../avr/lib/avr5/crtm328p.o
-Lc:/users/school/arduino-0015/hardware/tools/avr/bin/../lib/gcc/avr/4.3.2/avr5
-Lc:/users/school/arduino-0015/hardware/tools/avr/bin
/../lib/gcc/avr/4.3.2/../../../../avr/lib/avr5
-Lc:/users/school/arduino-0015/hardware/tools/avr/bin/../lib/gcc/avr/4.3.2
-Lc:/users/school/arduino-0015/hardware/tools/avr/bin/../lib/gcc
-Lc:/users/sc
hool/arduino-0015/hardware/tools/avr/bin/../lib/gcc/avr/4.3.2/../../../../avr/lib
--section-start=.text=0x7800 ATmegaBOOT_xx8.o -lgcc -lm -lgcc -lc -lgcc
ATmegaBOOT_xx8.o: In function `main':
C:\Users\School\dkirkby-athomeleaf-a657898/ATmegaBOOT_xx8.c:262: undefined
reference to `initNordic'
make: *** [ATmegaBOOT_xx8_adaboot328.elf] Error 1


I think the linker does not know where to look for my wireless.o file,
it is at the current directory of make file/build.328/obj

how do I tell the linker where to look?  when I tried -l/build.328/obj ,
it kept saying folder not found



More information about the Gcc-help mailing list