Estoy trabajando en un software integrado para un microcontrolador ARM (SAM7) y el uso de Yagarto toolchain.¿Cómo puedo forzar a gcc a usar implementaciones personalizadas de las funciones implementadas de newlibc?
Mi código enlaza actualmente libc.a. Sin embargo, me gustaría utilizar una implementación personalizada de la función integrada memcpy que mi código ya tiene.
He intentado usar -fno-orden interna y/o -fno incorporado-memcpy como se especifica en el GCC Manual pero el enlazador todavía se queja será la siguiente advertencia:
contiki-crazy-horse.a(flashd_efc.o): In function `memcpy':
C:\Users\Melvin\GitRepo\projects\Amatis_Project\SAM7_Contiki\examples\er-rest-example/../../cpu/arm//at91sam7s-x/./flashd_efc.c:669: multiple definition of `memcpy'
c:/toolchains/yagarto/bin/../lib/gcc/arm-none-eabi/4.6.2/../../../../arm-none-eabi/lib\libc.a(lib_a-memcpy.o):C:\msys\1.0\home\yagarto\newlib-build\arm-none-eabi\newlib\libc\string/../../../../../newlib-1.19.0/newlib/libc/string/memcpy.c:78: first defined here
collect2: ld returned 1 exit status
make: *** [rest-server-example-nosyms.crazy-horse] Error 1
../../cpu/arm/at91sam7s-x/Makefile.at91sam7s-x:181: recipe for target `rest-server-example-nosyms.crazy-horse' failed
Cuál es la forma correcta usar implementaciones personalizadas de ciertas funciones incorporadas de gcc?
Editar 1: Agregar el comando de enlace que estoy usando. En el código a continuación, Porject.a es un archivo de almacenamiento creado con todos los archivos de objeto del proyecto.
CC = arm-none-eabi-gcc
CFLAGSNO = -I. -I$(CONTIKI)/core -I$(CONTIKI_CPU) -I$(CONTIKI_CPU)/loader \
-I$(CONTIKI_CPU)/dbg-io \
-I$(CONTIKI)/platform/$(TARGET) \
${addprefix -I,$(APPDIRS)} \
-DWITH_UIP -DWITH_ASCII -DMCK=$(MCK) \
-Wall $(ARCH_FLAGS) -g -D SUBTARGET=$(SUBTARGET)
CFLAGS += $(CFLAGSNO) -O -DRUN_AS_SYSTEM -DROM_RUN -ffunction-sections
LDFLAGS += -L $(CONTIKI_CPU) --verbose -T $(LINKERSCRIPT) -nostartfiles -Wl,-Map,$(TARGET).map
$(CC) $(LDFLAGS) $(CFLAGS) -nostartfiles -o project.elf -lc Project.a
También incluya la línea de comando del vinculador que generó este error. – Clifford
@Clifford He editado la publicación original para agregar la información que ha solicitado – maguirre