Hallo, ich möchte die Libary lib_AT91SAM7S256.h in mein Projekt einfügen und bekommen folgene Fehlermeldung von GNU: make -k all .compiling arm-elf-gcc -I./ -c -fno-common -O0 -g lib_AT91SAM7S256.h lib_AT91SAM7S256.h:55: error: expected ')' before 'pAic' lib_AT91SAM7S256.h:84: error: expected ')' before 'pAic' lib_AT91SAM7S256.h:96: error: expected ')' before 'pAic' . . . . das geht eine ganze Weile so weiter! meine Makefile sieht im übrigen so aus: NAME = test # variables CC = arm-elf-gcc LD = arm-elf-ld -v AR = arm-elf-ar AS = arm-elf-as CP = arm-elf-objcopy OD = arm-elf-objdump CFLAGS = -I./ -c -fno-common -O0 -g AFLAGS = -ahls -mapcs-32 -o crt.o LFLAGS = -Map main.map -Ttest123.cmd CPFLAGS = --output-target=binary ODFLAGS = -x --syms OBJECTS = crt.o main.o button2isr.o isrsupport.o lowlevelinit.o lib_AT91SAM7S256.o ioat91sam7s256.o # make target called by Eclipse (Project -> Clean ...) clean: -rm $(OBJECTS) crt.lst main.lst main.out main.bin main.hex main.map main.dmp #make target called by Eclipse (Project -> Build Project) all: main.out @ echo "...copying" $(CP) $(CPFLAGS) main.out main.bin $(OD) $(ODFLAGS) main.out > main.dmp main.out: $(OBJECTS) test123.cmd @ echo "..linking" $(LD) $(LFLAGS) -o main.out $(OBJECTS) libc.a libm.a libgcc.a crt.o: crt.s @ echo ".assembling" $(AS) $(AFLAGS) crt.s > crt.lst main.o: main.c @ echo ".compiling" $(CC) $(CFLAGS) main.c button2isr.o: button2isr.c @ echo ".compiling" $(CC) $(CFLAGS) button2isr.c isrsupport.o: isrsupport.c @ echo ".compiling" $(CC) $(CFLAGS) isrsupport.c lowlevelinit.o: lowlevelinit.c @ echo ".compiling" $(CC) $(CFLAGS) lowlevelinit.c lib_AT91SAM7S256.o: lib_AT91SAM7S256.h @ echo ".compiling" $(CC) $(CFLAGS) lib_AT91SAM7S256.h ioat91sam7s256.o: ioat91sam7s256.h @ echo ".compiling" $(CC) $(CFLAGS) ioat91sam7s256.h ------------------------------------------------------------------------ - # specify output filename here (must be *.bin file) TARGET = main.bin # specify the directory where openocd executable and configuration files reside OPENOCD_DIR = 'c:/Programme/openocd-2007re141/bin/' # specify OpenOCD executable (pp is for the wiggler, ftd2xx is for the USB debuggers) #OPENOCD = $(OPENOCD_DIR)openocd-pp.exe OPENOCD = $(OPENOCD_DIR)openocd-ftd2xx.exe # specify OpenOCD configuration file (pick the one for your device) #OPENOCD_CFG = $(OPENOCD_DIR)at91sam7s256-wiggler-flash-program.cfg #OPENOCD_CFG = $(OPENOCD_DIR)at91sam7s256-jtagkey-flash-program.cfg OPENOCD_CFG = $(OPENOCD_DIR)at91sam7s256-armusbocd-flash-program.cfg # program the AT91SAM7S256 internal flash memory program: $(TARGET) @echo "Flash Programming with OpenOCD..." # display a message on the console $(OPENOCD) -f $(OPENOCD_CFG) # program the onchip FLASH here @echo "Flash Programming Finished." # display a message on the console Die Datei ioat91sam7s256.h benötigt die lib_AT91SAM7S256.h selbst! Bei dem Versuch es händisch mit GNu zu machen....kommt das gleiche raus! Die lib*.h muß doch erst eine lib*.a Datei werden und dann kann es eine lib*.o Datei werden, richtig? Nur wie wird es eine lib*.a Datei
Eine .h -Datei ist eine Header Datei der Sprache "C" Darin stehen Daten- und Prototypen von andernorts definierten Funktionen. Eine .h Datei wird normalerweise nicht eigenständig in eine object-Datei (.o) kompiliert, erst recht nicht in eine Liste von object-Dateien, was eine library (.a) darstellt. Wenn man eine Library verwenden will, verwendet man die entsprechende(n)Header-Datei(en) per #include - Anweisung im eigenen Quelltext und bindet die Bibliothek per Linker-Anweisung mit dem eigenen Programm zusammen, indem ( beim GNU -ld) außer den Namen der selbst erzeugten Objekt-Dateien der Name der Bibliothek mittels "-l" auf dessen Befehlzeile angegeben wird (ld --help erklärt den Rest. Aus irgendwelchen Gründen bewirkt die Angabe "ld -ldns" die Einbindung der Bibliothek libdns, die angabe des Präfix "lib" spart man sich also.)
Guten Morgen, durch deinen Tip habe ich versucht ersteinmal eine .o Datei zu bekommen, denn nur die versteht der gnu -ld. Wenn ich nun mit meiner Datei arm-elf-gcc (arm-elf-gcc lib_AT91SAM7S256.h) versuche daraus eine .o Datei zu erstellen, bekomme ich nur zu lesen das ganz viel Funktionen nicht deklariert sind! versuche ich das Ganze mit dem Zusatz -S (arm-elf-gcc -S lib_AT91SAM7S256.h) dann sagt er mir das die "output filename are specified twice" Die Aussage verstehe ich aber nicht, hast du einen Tip? Gruß Tobi
Zumindest die lib_AT91SAM7S256.h, die ich kenne, ist keine Library im Sinne von einer Sammlung von Objectcode und auch nicht dazu gedacht, eine solche daraus zu machen. Die darin enthaltenen Funktionen sind zu Verwendung als Inline-Funktionen gedacht. Damit es bei gcc wie beabsichtigt funktioniert:
1 | #define __inline static inline
|
2 | #include "lib_AT91..." |
Martin Thomas
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.