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

 
 
> Launchpad'овский gcc-arm-none-eabi Lto и math.h
Viciouspriest
сообщение Dec 15 2016, 08:06
Сообщение #1





Группа: Участник
Сообщений: 14
Регистрация: 24-08-12
Пользователь №: 73 242



Всем здравствуйте.
Осваиваю ланчпадавский компилятор. Столкнулся с тем, что при включенной Lto не видит функции, например sqrt(), из math.h. "undefined reference to `sqrt'
collect2.exe: error: ld returned 1 exit status".

Compile opts -mcpu=cortex-m3 -flto -lto -mthumb -fpack-struct -Wpadded -g -Os
Linker opts -mcpu=cortex-m3 -flto -mthumb -Wl,--gc-sections,-Map=Project.elf.map,-cref,-u,Reset_Handler

Target CPU STM32F103RET6
gcc-arm-none-eabi-5_4-2016q3-20160926-win32

Подозреваю, что дело в ключах, но не знаю в каких. Очень надеюсь на ответ.
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Viciouspriest
сообщение Dec 16 2016, 06:55
Сообщение #2





Группа: Участник
Сообщений: 14
Регистрация: 24-08-12
Пользователь №: 73 242



Цитата(AHTOXA @ Dec 15 2016, 20:42) *
Вроде бы ещё надо линкеру передать ключ оптимизации (-Os)

Не, дело было не в этом. Вчера наконец-то разобрался. Почему-то -Lto выкидывает библиотеку m. Я прописывал -lm, но это не помогало потому, что lm надо прописывать в самом конце, после перечисления всех о-файлов, а я писал вначале. Почему это происходит - непонятно...
Go to the top of the page
 
+Quote Post
andrew_b
сообщение Dec 16 2016, 07:48
Сообщение #3


Профессионал
*****

Группа: Свой
Сообщений: 1 975
Регистрация: 30-12-04
Из: Воронеж
Пользователь №: 1 757



Цитата(Viciouspriest @ Dec 16 2016, 09:55) *
Я прописывал -lm, но это не помогало потому, что lm надо прописывать в самом конце, после перечисления всех о-файлов
Разумеется. По умолчанию включено --as-needed.
Go to the top of the page
 
+Quote Post
demiurg_spb
сообщение Dec 21 2016, 14:49
Сообщение #4


неотягощённый злом
******

Группа: Свой
Сообщений: 2 746
Регистрация: 31-01-08
Из: Санкт-Петербург
Пользователь №: 34 643



Прочитал доку про --as-needed и для меня не совсем очевидно описанное ТС поведение (откидывание libm).
Я понял, что линкер должен выкинуть лишь те либы на которые нет ссылок.
Поясните пожалуйста, если не трудно, что я не так понимаю.

Понял кажется!
Если либа включена до объектиников, то на момент её линковки на неё просто ещё нет ссылок.
Линкер видимо по умолчанию однопроходный.

Кстати, для решения сложных циклических завязок либа от либы есть ключики --start-group --end-group
Код
-Wl,--start-group -lmy_lib -lyour_lib -lhis_lib -Wl,--end-group


--------------------
“Будьте внимательны к своим мыслям - они начало поступков” (Лао-Цзы)
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- Viciouspriest   Launchpad'овский gcc-arm-none-eabi Lto и math.h   Dec 15 2016, 08:06
- - AHTOXA   Вроде бы ещё надо линкеру передать ключ оптимизаци...   Dec 15 2016, 17:42
|- - AHTOXA   А, ну это известная штука. Понять этого нельзя, по...   Dec 16 2016, 07:04
- - Aaron   да, злостная шутка с этими линкер-опциями и порядк...   Dec 23 2016, 07:09
|- - andrew_b   Цитата(Aaron @ Dec 23 2016, 10:09) да, зл...   Dec 23 2016, 07:52
|- - dxp   QUOTE (andrew_b @ Dec 23 2016, 14:52) Это...   Dec 25 2016, 14:32
|- - andrew_b   Цитата(dxp @ Dec 25 2016, 17:32) Всего эт...   Dec 25 2016, 17:31
|- - dxp   QUOTE (andrew_b @ Dec 26 2016, 00:31) А н...   Dec 26 2016, 04:24
|- - andrew_b   Цитата(dxp @ Dec 26 2016, 07:24) Я сказал...   Dec 26 2016, 05:37
- - esaulenka   Андрей, вы б послушали, что dxp говорит... Выкиды...   Dec 26 2016, 07:29
|- - andrew_b   Цитата(esaulenka @ Dec 26 2016, 10:29) Од...   Dec 26 2016, 07:36
- - esaulenka   Ответов по делу тут два: #6 от demiurg_spb (что де...   Dec 26 2016, 08:08
- - demiurg_spb   Зато GNUшный линкер быстрый!   Dec 26 2016, 10:58


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

 


RSS Текстовая версия Сейчас: 21st August 2025 - 03:40
Рейтинг@Mail.ru


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