Tôi đang làm việc trên phần mềm nhúng cho vi điều khiển ARM (SAM7) và sử dụng chuỗi công cụ Yagarto.Làm cách nào để buộc gcc sử dụng các triển khai tùy chỉnh của các hàm được triển khai newlibc?
Mã của tôi hiện liên kết libc.a. Tuy nhiên, tôi muốn sử dụng triển khai tùy chỉnh hàm dựng sẵn memcpy mà mã của tôi đã có.
Tôi đã cố gắng sử dụng -fno-BUILTIN và/hoặc -fno-BUILTIN-memcpy như quy định trong GCC Manual nhưng mối liên kết vẫn còn than phiền sẽ cảnh báo sau đây:
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
cách chính xác là gì sử dụng triển khai tùy chỉnh của một số chức năng tích hợp gcc nhất định?
Chỉnh sửa 1: Thêm lệnh liên kết mà tôi đang sử dụng. Trong đoạn mã dưới đây Porject.a là một tệp lưu trữ được tạo với tất cả các tệp đối tượng của dự án.
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
Cũng bao gồm dòng lệnh trình liên kết đã tạo lỗi này. – Clifford
@Clifford Tôi đã chỉnh sửa bài đăng gốc để thêm thông tin bạn yêu cầu – maguirre