встроенные функции имеют «сначала определено здесь» и «множественное определение» - PullRequest
3 голосов
/ 13 января 2012

Как и два моих предыдущих вопроса ( inline-asm-with-gcc & arm7tdmi-не-поддержка-запрошено-специальное-регистр , у меня есть какая-то сборкапроблема при преобразовании кода, скомпилированного с помощью ARMASM, в gcc (исходный код GCC-4.6.2 eabi).

На этот раз в процессе компоновки: я получаю много «сначала определено здесь» и «множественное определение» для встроенногофункции. Пример:

inline U16 ByteSwap16(U16 uData) {
return ( (uData >> 8) | (uData << 8) );
}

Я получаю "множественное определение` ByteSwap16 '"и" впервые определено здесь "в первой строке.

Вот параметр связывания, который я использую для файлас ошибкой:

arm-none-eabi-ld  -T".\linker.ld" -Map=BootLoad.map -o BootLoad.elf InitMain.o tsk_main.o ecp.o memalloc.o tsk_ecp.o firmdesc.o crc.o flash.o eth.o firmflash.o firmdest.o bcfg.o bootdownload.o cinit.o serial.o cpu.o mmu.o  ngucos.o cdbini.o cs712sio.o  cs712eth.o nginit.o MmuSdram0.o   ../../OS/ngos/lib/rtstub/arm/gcc/libngosd4m32l.a ../../OS/ngip/lib/rtstub/arm/gcc/libngipd4m32l.a 

В случае возникновения ошибки в процессе компиляции:

arm-none-eabi-gcc -c -H -Wall -Wa,-adhlns="tsk_main.o.lst" -fmessage-length=0 -MMD -MP -MF"tsk_main.d" -MT"tsk_main.d" -fpic -o"tsk_main.o" -march=armv4t -mcpu=arm7tdmi -mlittle-endian -g3 -gdwarf-2 -O0 -I"../../OS/ngos/hw/cdb89712" -I"../../OS/ngos" -I"../../OS/ngos/include" -I"../../OS/ngos/rtos/ucosii" -I"./"  -I"src/" -I"../../Common/inc" -I"../../OS/uCOS-II/SOURCE" -I"../../OS/ngos/drivers/arm" -I"../../OS/ngos/include/ngos" -I"../../OS/ngip/include" -I"../../OS/ngip/include/ngip" -I"../../Dvcscomponent/Inc" -I"../../Inc" "src/tsk_main.c"

Есть идеи, почему встроенная функция генерирует эти ошибки?

Заранее спасибо!

...