2015-09-20 2 views
-3

проект чип: нордический nrf51822 256Кб NRF51 SDK версия 6.1gcc может скомпилироваться с объектным файлом, скомпилированным из компилятора keil-arm?

Я преобразование моего проекта в OSX GNU из окон Keil из-за проблемами лицензии.

В моем предыдущем проекте есть некоторые файлы .o, сделанные keil-arm complier. и у меня нет этих c-файлов.

и я попытался скомпилировать проекты, и когда он попытается связать эти .o-файлы, он выйдет по ошибке, как это.

gcc не может скомпилироваться с объектным файлом, скомпилированным из keil-arm complier?

... ... ... ... "/usr/local/gcc-arm-none-eabi-4_9-2015q2/bin/arm-none-eabi-gcc" -Xlinker -Map=_build/ble_app_allb_s110_xxaa.map -mcpu=cortex-m0 -mthumb -mabi=aapcs -L ..//Source//templates/gcc/ -Tgcc_nrf51_s110_xxaa.ld _build/main.o _build/Sensor.o _build/Common.o _build/ble_nus.o _build/ble_srv_common.o _build/retarget.o _build/ble_advdata.o _build/app_timer.o _build/simple_uart.o _build/softdevice_handler.o _build/nrf_delay.o _build/pstorage.o _build/ble_conn_params.o _build/system_nrf51.o _build/gcc_startup_nrf51.o adc.o afe4403.o mpu6050.o spi_master2.o twi_hw_master_sd.o -o _build/ble_app_allb_s110_xxaa.out /usr/local/gcc-arm-none-eabi-4_9-2015q2/bin/../lib/gcc/arm-none-eabi/4.9.3/../../../../arm-none-eabi/bin/ld: error: adc.o: Conflicting CPU architectures 12/0 /usr/local/gcc-arm-none-eabi-4_9-2015q2/bin/../lib/gcc/arm-none-eabi/4.9.3/../../../../arm-none-eabi/bin/ld: failed to merge target specific data of file adc.o /usr/local/gcc-arm-none-eabi-4_9-2015q2/bin/../lib/gcc/arm-none-eabi/4.9.3/../../../../arm-none-eabi/bin/ld: error: afe4403.o: Conflicting CPU architectures 12/0 /usr/local/gcc-arm-none-eabi-4_9-2015q2/bin/../lib/gcc/arm-none-eabi/4.9.3/../../../../arm-none-eabi/bin/ld: failed to merge target specific data of file afe4403.o /usr/local/gcc-arm-none-eabi-4_9-2015q2/bin/../lib/gcc/arm-none-eabi/4.9.3/../../../../arm-none-eabi/bin/ld: error: mpu6050.o: Conflicting CPU architectures 12/0 /usr/local/gcc-arm-none-eabi-4_9-2015q2/bin/../lib/gcc/arm-none-eabi/4.9.3/../../../../arm-none-eabi/bin/ld: failed to merge target specific data of file mpu6050.o /usr/local/gcc-arm-none-eabi-4_9-2015q2/bin/../lib/gcc/arm-none-eabi/4.9.3/../../../../arm-none-eabi/bin/ld: error: spi_master2.o: Conflicting CPU architectures 12/0 /usr/local/gcc-arm-none-eabi-4_9-2015q2/bin/../lib/gcc/arm-none-eabi/4.9.3/../../../../arm-none-eabi/bin/ld: failed to merge target specific data of file spi_master2.o /usr/local/gcc-arm-none-eabi-4_9-2015q2/bin/../lib/gcc/arm-none-eabi/4.9.3/../../../../arm-none-eabi/bin/ld: error: twi_hw_master_sd.o: Conflicting CPU architectures 12/0 /usr/local/gcc-arm-none-eabi-4_9-2015q2/bin/../lib/gcc/arm-none-eabi/4.9.3/../../../../arm-none-eabi/bin/ld: failed to merge target specific data of file twi_hw_master_sd.o /usr/local/gcc-arm-none-eabi-4_9-2015q2/bin/../lib/gcc/arm-none-eabi/4.9.3/../../../../arm-none-eabi/bin/ld: Dwarf Error: Could not find abbrev number 10. afe4403.o: In function afe_write_reg': ....\RedCarrot_ver2(c)\afe4403.c:(.text+0x0): undefined reference to_printf_percent' /usr/local/gcc-arm-none-eabi-4_9-2015q2/bin/../lib/gcc/arm-none-eabi/4.9.3/../../../../arm-none-eabi/bin/ld: Dwarf Error: found dwarf version '0', this reader only handles version 2, 3 and 4 information. ....\RedCarrot_ver2(c)\afe4403.c:(.text+0x0): undefined reference to _printf_d' /usr/local/gcc-arm-none-eabi-4_9-2015q2/bin/../lib/gcc/arm-none-eabi/4.9.3/../../../../arm-none-eabi/bin/ld: Dwarf Error: found dwarf version '11822', this reader only handles version 2, 3 and 4 information. ....\RedCarrot_ver2(c)\afe4403.c:(.text+0x0): undefined reference to_printf_int_dec' /usr/local/gcc-arm-none-eabi-4_9-2015q2/bin/../lib/gcc/arm-none-eabi/4.9.3/../../../../arm-none-eabi/bin/ld: Dwarf Error: found dwarf version '23598', this reader only handles version 2, 3 and 4 information. afe4403.o: In function heartpulse': ....\RedCarrot_ver2(c)\afe4403.c:(.text+0x7a2): undefined reference to__2sprintf' /usr/local/gcc-arm-none-eabi-4_9-2015q2/bin/../lib/gcc/arm-none-eabi/4.9.3/../../../../arm-none-eabi/bin/ld: _build/ble_app_allb_s110_xxaa.out: hidden symbol `__2sprintf' isn't defined /usr/local/gcc-arm-none-eabi-4_9-2015q2/bin/../lib/gcc/arm-none-eabi/4.9.3/../../../../arm-none-eabi/bin/ld: final link failed: Bad value collect2: error: ld returned 1 exit status make: * [_build/ble_app_allb_s110_xxaa.out] Error 1

+0

, пожалуйста, дайте мне знать, что не так, когда вам нужно сжать вниз. –

+0

Непонятно, что вы просите (я не сделал ни единого слова). – Thomas

ответ

0

Короткий ответ: нет, GCC не может надежно использовать файлы Keили, сгенерированные .o или .a.

Хотя они могут использовать ABI (двоичный интерфейс руки), GCC и Keil почти наверняка полагаются на различные реализации libc и могут иметь ссылки на функции, которые другая программная цепочка не предоставляет. Кроме того, информация об отладке может быть несовместимой (см. Ошибку в этой стене текста, связанного с DWARF). Наконец, в то время как ELF является стандартным форматом, многое из того, что входит в файл ELF, и метаданные не обязательно являются стандартными, и каждая инструментальная цепочка делает вещи несколько иначе.

К сожалению, вам, скорее всего, лучше всего всего выполнить сбор всех файлов в одной цепочке инструментов.

+0

Спасибо! но компания не хочет предоставлять все файлы. –

0

Я хочу сообщить, что это возможно! Я уже сделал это, и он работает! Однако вам нужно использовать соответствующие флаги для компиляции с GCC.

Смежные вопросы