2005-08-25 08:19 PM
2005-08-22 09:40 PM
Hi, I am working with the Hitop5 IDE and a HITEX evaluation board. HITOP5 works with a supplied GNU compiler(v3.3.2).
My problem is the following: when I am using the devide sign '' / '' (in the C langue), I recieve a error while compiling my C-langue program. The compile error is: source/main.c:76: undefined reference to `__divsi3' I think I found a possible problem. The problem is in the libgcc.a low-level runtime library. The library is not getting properly linked with the project or it is an incorrect version(Am I right here?). I have tried the multiply sign '' * '' and this works just fine! I tried to solve this problem myself and it kept my busy for two days now. I don't get the problem fixed :( The version of the GNU compiler is 3.3.2. Can someoney help me solving this problem. It is driving me nuts! thanks, Jimmey2005-08-22 09:54 PM
I think I had similar problems - am using eclipse and gcc 3.4.2.
you need to make sure the path to the library is correct - libgcc.a on my setup is installed in a different directory. Also can you see just what exactly is being passed on the command line when the compiler is invoked ?2005-08-22 10:22 PM
Hi!,
I do not know well micro that he uses. Perhaps if you write the makefile you must change the option ''-nostdlib'' with ''-nostartfiles''.2005-08-22 10:31 PM
I have just upgraded to version 3.4.3 of the arm tools from gnuarm.org and have no problems. I suspect it is a path issue.
in my makefile I have the following CFLAGS = -c -O2 -Wall -g -mcpu=arm7tdmi -mlittle-endian -ffunction-sections LIB_PATH = -L F:/gnu-arm/GNUARM/arm-elf/lib -L f:/gnu-arm/GNUARM/lib/gcc/arm-elf/3.4.3 build_for_flash: $(SOURCE) $(LD) -o flash.elf $(SOURCE) $(USB_INTERFACE) $(LIBS) $(LIB_PATH) -lc -lgcc -lm -lg -T ./flash.ln --gc-section this is including libgcc.a2005-08-22 10:36 PM
The problem is that I don't know the GNU/GCC compiler very well. I know that the problem is in the library but I don't know were to change the path to it.
Is it paerhaps wise to de-install my 3.3.2 version and upgrade to a higher version? Thanks,2005-08-22 10:40 PM
It is most likely a setting in your IDE. I doubt there is a problem with the version of gcc you are using.
I am not familiar with the IDE though. I suggest you look for some form of project/library/path settings. Is it running an external makefile ? do you get any for of output from the build process ?2005-08-22 11:16 PM
Yes I have some setting:project>settings>Compiler toolchain>Tool settings>
Here I can set the default options for Assembler/compiler and the linker. The linker option now say: --cref -t -static -lc -lm --start-group I don't know what it means. In my project directoy there is a make file but I don't know if it's being used. I deleted the make file and I could still build/rebuild my program even after restarting the IDE. There are some path options in a .LD file also in the project folder, but I don't know if these are the right options. The output of the build proces says: === Build log === arm-elf-gcc.exe -c -gdwarf-2 -MD -mapcs-frame -O0 -mcpu=arm7tdmi -w -mthumb-interwork -I.\source\ -o .\objects\interrupt.o ..\..\..\Software\source\interrupt.c arm-elf-gcc.exe -c -gdwarf-2 -MD -mapcs-frame -O0 -mcpu=arm7tdmi -w -mthumb-interwork -I.\source\ -o .\objects\main.o .\source\main.c arm-elf-as.exe -m armv4t -gdwarf2 -mthumb-interwork -o .\objects\startup.o ..\..\..\Software\source\startup.s arm-elf-ld.exe --cref -t -static -lc -lm -Map=Example.map -o .\objects\Example.elf -T.\objects\Example.ld objects\main.o(.text+0x6c): In function `ADC_IRQ_isr': source/main.c:76: undefined reference to `__divsi3' arm-elf-ld: link errors found, deleting executable `.\objects\Example.elf' arm-elf-ld: mode armelf objects\startup.o objects\main.o objects\interrupt.o2005-08-22 11:22 PM
it looks like it is not including libgcc.a
you need a -lgcc on the linker option2005-08-23 12:14 AM
I tried that but I don't know if I used the right syntax to include the libgcc.a library.
I put : --cref -t -static -lc -lgcc -lm --start-group in the linker option box. Is this right? Still having the same error The buid report says: === Build log === arm-elf-gcc.exe -c -gdwarf-2 -MD -mapcs-frame -O0 -mcpu=arm7tdmi -w -mthumb-interwork -I.\source\ -o .\objects\interrupt.o ..\..\..\Software\source\interrupt.c arm-elf-gcc.exe -c -gdwarf-2 -MD -mapcs-frame -O0 -mcpu=arm7tdmi -w -mthumb-interwork -I.\source\ -o .\objects\main.o .\source\main.c arm-elf-as.exe -m armv4t -gdwarf2 -mthumb-interwork -o .\objects\startup.o ..\..\..\Software\source\startup.s arm-elf-ld.exe --cref -t -static -lc -lm -Map=Example.map -o .\objects\Example.elf -T.\objects\Example.ld objects\main.o(.text+0x6c): In function `ADC_IRQ_isr': source/main.c:76: undefined reference to `__divsi3' arm-elf-ld: link errors found, deleting executable `.\objects\Example.elf' arm-elf-ld: mode armelf objects\startup.o objects\main.o objects\interrupt.o Here you can see that the linker still uses arm --cref -t -static -lc -lm -Map without the lgcc library I added in the option box. By the way, how does the linker know the path of the libgcc.a library?