реклама на сайте
подробности

 
 
> arm-none-eabi-gcc линковка статических бибилотек
yanvasiij
сообщение Nov 27 2015, 13:07
Сообщение #1


Местный
***

Группа: Свой
Сообщений: 321
Регистрация: 23-12-11
Из: Уфа
Пользователь №: 69 041



Доброго времени суток!

Пытаюсь собрать из скомпилинных объектников статическую либу следующим образом:

Код
arm-none-eabi-gcc -mcpu=cortex-m3 -mlittle-endian -mthumb -Wl,--gc-section -L _output/system_stm32f4xx.o (тут много много объектников) _output/beremizProcess.o _output/startup_stm32f407xx.o -o _output/beremizStm32Port.a -lstdc++


Получаю сообщение

Код
.\beremizStm32Port/./source/src/main.cpp:39: undefined reference to `initBeremizProcess()'


Но дело в том, что эту функцию я хотел реализовать уже в приложении, которое будет использовать эту библиотеку. Что я делаю неправильно?

Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
yanvasiij
сообщение Mar 31 2016, 07:21
Сообщение #2


Местный
***

Группа: Свой
Сообщений: 321
Регистрация: 23-12-11
Из: Уфа
Пользователь №: 69 041



Снова вернулся к попыткам собрать статическую либу. Проблема так и не решилась. Достоверно выяснилось следующее:

1) Когда я добавляю syscalls.o в статическую библиотеку вместе со всем остальным, то при компиляции приложения с использованием этой либы вылазит ошибка:

CODE

c:/program files (x86)/gnu tools arm embedded/4.9 2015q2/bin/../lib/gcc/arm-none-eabi/4.9.3/../../../../arm-none-eabi/lib/armv7-m\libg.a(lib_a-abort.o): In function `abort':
abort.c:(.text.abort+0xa): undefined reference to `_exit'
c:/program files (x86)/gnu tools arm embedded/4.9 2015q2/bin/../lib/gcc/arm-none-eabi/4.9.3/../../../../arm-none-eabi/lib/armv7-m\libg.a(lib_a-sbrkr.o): In function `_sbrk_r':
sbrkr.c:(.text._sbrk_r+0xc): undefined reference to `_sbrk'
c:/program files (x86)/gnu tools arm embedded/4.9 2015q2/bin/../lib/gcc/arm-none-eabi/4.9.3/../../../../arm-none-eabi/lib/armv7-m\libg.a(lib_a-signalr.o): In function `_kill_r':
signalr.c:(.text._kill_r+0xe): undefined reference to `_kill'
c:/program files (x86)/gnu tools arm embedded/4.9 2015q2/bin/../lib/gcc/arm-none-eabi/4.9.3/../../../../arm-none-eabi/lib/armv7-m\libg.a(lib_a-signalr.o): In function `_getpid_r':
signalr.c:(.text._getpid_r+0x0): undefined reference to `_getpid'
c:/program files (x86)/gnu tools arm embedded/4.9 2015q2/bin/../lib/gcc/arm-none-eabi/4.9.3/../../../../arm-none-eabi/lib/armv7-m\libg.a(lib_a-writer.o): In function `_write_r':
writer.c:(.text._write_r+0x10): undefined reference to `_write'
c:/program files (x86)/gnu tools arm embedded/4.9 2015q2/bin/../lib/gcc/arm-none-eabi/4.9.3/../../../../arm-none-eabi/lib/armv7-m\libg.a(lib_a-closer.o): In function `_close_r':
closer.c:(.text._close_r+0xc): undefined reference to `_close'
c:/program files (x86)/gnu tools arm embedded/4.9 2015q2/bin/../lib/gcc/arm-none-eabi/4.9.3/../../../../arm-none-eabi/lib/armv7-m\libg.a(lib_a-fstatr.o): In function `_fstat_r':
fstatr.c:(.text._fstat_r+0xe): undefined reference to `_fstat'
c:/program files (x86)/gnu tools arm embedded/4.9 2015q2/bin/../lib/gcc/arm-none-eabi/4.9.3/../../../../arm-none-eabi/lib/armv7-m\libg.a(lib_a-isattyr.o): In function `_isatty_r':
isattyr.c:(.text._isatty_r+0xc): undefined reference to `_isatty'
c:/program files (x86)/gnu tools arm embedded/4.9 2015q2/bin/../lib/gcc/arm-none-eabi/4.9.3/../../../../arm-none-eabi/lib/armv7-m\libg.a(lib_a-lseekr.o): In function `_lseek_r':
lseekr.c:(.text._lseek_r+0x10): undefined reference to `_lseek'
c:/program files (x86)/gnu tools arm embedded/4.9 2015q2/bin/../lib/gcc/arm-none-eabi/4.9.3/../../../../arm-none-eabi/lib/armv7-m\libg.a(lib_a-readr.o): In function `_read_r':
readr.c:(.text._read_r+0x10): undefined reference to `_read'
collect2.exe: error: ld returned 1 exit status


Но все перечисленные функции реализованы в syscalls.c! Почему он их не видит?!

2) Когда я исключаю из библиотеки syscalls.o и приликовываю ее на этапе компиляции приложения вместе с библиотекой, все компилируется без ошибок и прекрасно работает.

Компилирую arm-none-eabi-gcc, линкую либу arm-none-eabi-gcc-ar, линкую приложение arm-none-eabi-gcc. Флаги следующие:

CODE

#common flags
SET(COMMON_FLAGS "-mthumb")
SET(COMMON_FLAGS "${COMMON_FLAGS} -Wall")
SET(COMMON_FLAGS "${COMMON_FLAGS} -mcpu=cortex-m3")
SET(COMMON_FLAGS "${COMMON_FLAGS} -mlittle-endian")
#common compiler flags
SET(COMMON_CFLAGS "-D USE_STDPERIPH_DRIVER")
SET(COMMON_CFLAGS "${COMMON_CFLAGS} -D USE_STDPERIPH_DRIVER")
SET(COMMON_CFLAGS "${COMMON_CFLAGS} -D STM32F429_439xx")
#SET(COMMON_CFLAGS "${COMMON_CFLAGS} --specs=rdimon.specs")
#SET(COMMON_CFLAGS "${COMMON_CFLAGS} -Wl,--start-group -lgcc -lc -lm -lrdimon -Wl,--end-group")
#c-files compiler flags
SET(CMAKE_C_FLAGS "${COMMON_FLAGS} ${COMMON_CFLAGS}" CACHE INTERNAL "c compiler flags")
SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -std=gnu99")
#cpp-files compiler flags
SET(CMAKE_CXX_FLAGS "${COMMON_FLAGS} ${COMMON_CFLAGS}" CACHE INTERNAL "cxx compiler flags")
SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -g")
SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fno-threadsafe-statics")
#linker flags
SET(CMAKE_EXE_LINKER_FLAGS "${COMMON_FLAGS}" CACHE INTERNAL "exe link flags")
SET(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -Wl,--gc-section")
SET(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -T ./linkScript/STM32F407ZG_FLASH.ld")


Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- yanvasiij   arm-none-eabi-gcc линковка статических бибилотек   Nov 27 2015, 13:07
- - AHTOXA   Либы собираются другой программой, arm-none-eabi-a...   Nov 27 2015, 13:23
|- - demiurg_spb   Цитата(AHTOXA @ Nov 27 2015, 16:23) Либы ...   Jan 11 2016, 15:13
|- - AHTOXA   Спасибо, запомню на будущее.   Jan 11 2016, 15:37
- - yanvasiij   Цитата(AHTOXA @ Nov 27 2015, 18:23) Либы ...   Nov 30 2015, 05:33
|- - AHTOXA   Цитата(yanvasiij @ Nov 30 2015, 10:33) Да...   Nov 30 2015, 09:32
- - Radmir   наверно забыл добавить что-то типа " --specs=...   Nov 30 2015, 08:11
- - yanvasiij   Цитата(demiurg_spb @ Jan 11 2016, 20:13) ...   Jan 14 2016, 17:58
|- - demiurg_spb   Цитата(yanvasiij @ Jan 14 2016, 20:58) h...   Jan 15 2016, 13:35
|- - demiurg_spb   Попробуйте поменять очерёдность включения библиоте...   Mar 31 2016, 11:06
|- - alx2   Цитата(yanvasiij @ Mar 31 2016, 13:21) 1)...   Apr 4 2016, 05:52
|- - demiurg_spb   Цитата(alx2 @ Apr 4 2016, 08:52) Ничего с...   Apr 4 2016, 09:40
- - yanvasiij   Цитата(demiurg_spb @ Mar 31 2016, 16:06) ...   Apr 1 2016, 03:58
|- - demiurg_spb   Цитата(yanvasiij @ Apr 1 2016, 06:58) При...   Apr 1 2016, 10:06
- - yanvasiij   Цитата(alx2 @ Apr 4 2016, 10:52) ... Ниче...   Apr 6 2016, 04:47


Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 20th July 2025 - 13:56
Рейтинг@Mail.ru


Страница сгенерированна за 0.01402 секунд с 7
ELECTRONIX ©2004-2016