in de arduino.mk worden nog wat extra dingen toegevoegd. (ik denk deze: https://github.com/sudar/Arduino-Makefile ) Het is een arduino.mk om zonder arduino ide toch te kunnen compileren.
De main zit daar in.

( krijg het gevoel dat het best lang geleden is.)

@goof: blijkbaar heel lang geleden want je hebt de arduino ide nodig :p

In ieder geval dit gevonden: http://stackoverflow.com/questions/12573816/what-is-an-undefined-refer… daar eens doorlezen.

edit: nog een gevonden met een oplossingen:
http://stackoverflow.com/questions/18549526/undefined-references-to-fu…

[Bericht gewijzigd door Damic op (26%)]

Ik heb TS zijn source even gepakt en geprobeerd te bouwen.

Omdat ik geen zin heb een IDE te installeren heb ik gewoon mijn standaard Makefile genomen, en alle bijna sources erin gezet.

oledgps.cpp heb ik als target genomen. main.cpp heb ik weggelaten.

Dat gaf deze foutmelding:
wiring_digital.c:(.text+0x6a): undefined reference to 'digital_pin_to_bit_mask_PGM'

"digital_pin_to_bit_mask_PGM" heb ik even gegoogled, en dat leert dat die normaal in pins_arduino.h gedefinieerd wordt. Wat verder zoeken leert dat de pins_arduino.h die TS had incompleet was. Dus even een goede gezocht, en voila:
Alles bouwt (met een paar warnings)...

Conclusie: TS heeft zijn IDE verkeerd ingesteld.

Makefile:

# Makefile
TARGET = oledgps

MCU=atmega328p
# put at end of mem in bootloader memory

SRC = twi.c  WInterrupts.c  wiring_analog.c  wiring.c  wiring_digital.c  wiring_pulse.c  wiring_shift.c
INCLUDE = .
CXXSRC = GOFi2cOLED.cpp TinyGPS++.cpp CDC.cpp HardwareSerial.cpp HID.cpp IPAddress.cpp new.cpp Print.cpp Stream.cpp Tone.cpp USBCore.cpp  Wire.cpp WMath.cpp WString.cpp

F_CPU = 16000000

OBJCOPY = /usr/bin/avr-objcopy
OBJDUMP = /usr/bin/avr-objdump
CC      = /usr/bin/avr-gcc
CXX     = /usr/bin/avr-g++
SIZE    = /usr/bin/avr-size
NM      = /usr/bin/avr-nm
AR      = /usr/bin/avr-ar
RM      = /bin/rm -f

CXXFLAGS      = -mmcu=$(MCU) -DF_CPU=$(F_CPU) -DARDUINO=100 -Os -I$(INCLUDE)
CFLAGS        = -mmcu=$(MCU) -DF_CPU=$(F_CPU) $(C_DEFINES) -O2 -I$(INCLUDE)
LDFLAGS       = -lm 
# all objects
OBJ = $(SRC:.c=.o) $(CXXSRC:.cpp=.o) $(ASRC:.S=.o)
#default target
all: hex lss sym bin size

elf: $(TARGET).elf
hex: $(TARGET).ihex
eep: $(TARGET).eep
lss: $(TARGET).lss
sym: $(TARGET).sym
bin: $(TARGET).bin

#Display size
HEXSIZE = $(SIZE) --target=ihex $(TARGET).ihex
ELFSIZE = $(SIZE) $(TARGET).elf
size:
        @if [ -f $(TARGET).elf ]; then echo; echo $(MSG_SIZE_AFTER); $(HEXSIZE); echo; fi

.SUFFIXES: .elf .ihex .eep .lss .sym .bin

# standard rules for building

.elf.ihex:
        $(OBJCOPY) -j .text -j .data -j .buildstamp -O ihex $< $@

.elf.bin:
        $(OBJCOPY) -j .text -j .data -j .buildstamp -O binary $< $@

.elf.eep:
        -$(OBJCOPY) -j .eeprom --set-section-flags=.eeprom="alloc,load" \
        --change-section-lma .eeprom=0 -O ihex $< $@

# Create extended listing file from ELF output file.
.elf.lss:
        $(OBJDUMP) -h -S $< > $@

# Create a symbol table from ELF output file.
.elf.sym:
        $(NM) -n $< > $@

# Link: create ELF output file from library.
$(TARGET).elf: $(TARGET).cpp common.a
        $(CC) $(CFLAGS) -o $@ $(TARGET).cpp  -L. common.a $(LDFLAGS)
        $(RM) buildstamp.o

common.a: $(OBJ)
        @for i in $(OBJ); do echo $(AR) rcs common.a $$i; $(AR) rcs common.a $$i; done
        $(RM) $(OBJ)

# Compile: create object files from C++ source files.
.cpp.o:
        $(CXX) -c $(CXXFLAGS) $< -o $@

# Compile: create object files from C source files.
.c.o:
        $(CC) -c $(CFLAGS) $< -o $@

clean:
        $(RM) $(TARGET).ihex $(TARGET).eep $(TARGET).elf \
        $(TARGET).map $(TARGET).sym $(TARGET).lss common.a \
        $(OBJ) $(LST) $(SRC:.c=.s) $(SRC:.c=.d) $(CXXSRC:.cpp=.s) $(CXXSRC:.cpp=.d) \
        $(TARGET).bin


.PHONY: all build elf hex eep lss sym program coff extcoff clean depend sizebefore sizeafter readfuse bin

Ha dan heeft den installer van Arduino problemen, want ik had nog bestanden dat er niet waren. Eens de zip downloaden en die uitpakken in de arduino map.

Trouwens de 328p gebruik ik niet :p zal nog wel wat moeten aanpassen voor de 90can

Voor een 90can zul je zeker moeten aanpassen, want je gebruikt allerlei arduino-code die ervan uit gaat dat er een mapping is van het arduino pinnummer ('12' in digitalWrite(12,1) bijvoorbeeld) naar een bit in een Atmega SFR.

Als je dat niet goed hebt zal het wel bouwen en programmeren, maar in de praktijk waarschijnlijk niets doen.
Of roken als je pech hebt :)

Edit: @damic hieronder. Apart, want mijn v1.0.5. heeft pins_arduino.h wel. En zonder die file gaat zelfs de blink scetch niet werken....

[Bericht gewijzigd door blurp op (16%)]

Ja maar eerst is het van: compileerd het en dan is het van werkt het ;)

Edit: wat ik helemaal niet grappig vind is dat pins_arduino.h zelf niet bij in het zip bestand (v1.0.6) zit :/ nu de beta versie aan het downloaden. was in de verkeerde map aan het zien :(

Juist een atmega8 aangesloten via usbasp, wil ik de source compileren in de laatste beta versie van arduino, krijg ik een mooie domme melding, dat er iets is fout gegaan maar voor de rest noegabollen.

Arduino: 1.5.8 (Windows 7), Board: "Arduino NG or older, ATmega8"

Using library Wire in folder: C:\Arduino\hardware\arduino\avr\libraries\Wire
Using library GOFi2cOLED in folder: C:\Arduino\libraries\GOFi2cOLED (legacy)
Using library TinyGPSPlus in folder: C:\Arduino\libraries\TinyGPSPlus (legacy)

C:\Arduino/hardware/tools/avr/bin/avr-gcc -c -g -Os -w -ffunction-sections -fdata-sections -MMD -mmcu=atmega8 -DF_CPU=16000000L -DARDUINO=158 -DARDUINO_AVR_NG -DARDUINO_ARCH_AVR -IC:\Arduino\hardware\arduino\avr\cores\arduino -IC:\Arduino\hardware\arduino\avr\variants\standard -IC:\Arduino\hardware\arduino\avr\libraries\Wire -IC:\Arduino\libraries\GOFi2cOLED -IC:\Arduino\libraries\TinyGPSPlus C:\Users\damic\AppData\Local\Temp\build7059498318240703907.tmp\hooks.c -o C:\Users\damic\AppData\Local\Temp\build7059498318240703907.tmp\hooks.c.o

Error compiling.

handig he :/

HA nu zien ik het, als ik het project opendoen krijg ik:

File name TinyGPS++.cpp is invalid: ignoredFile name TinyGPS++.h is invalid: ignored