./configure CC=arm-linux-gnueabi-gcc-7 --host=aarch64-linux-android //тут ОК
make // gcc: command not found
Мне надо ссылку делать в bin на arm-linux-gnueabi-gcc-7, или это костыль в данном случае
Что означает ошибка «Error: relocation ... cannot be used with -shared»
gcc -fpic
). Из-за того что динамические библиотеки могут быть загружены в процесс по любому адресу существует требование, что код в них должен быть position-independent. Поэтому объектники скомпилированные как position-dependent обычно не могут быть слинкованы в динамическую библиотеку. R_AARCH64_TLSLE_ADD_TPREL_HI12
говорит (частью TLSLE, где LE означает Local Executable) о том, что код объектника в котором она находится был намеренно собран с рассчётом на то, что объектник будет частью исполняемого файла, а не динамической библиотеки. Здесь можно почитать об отличиях моделей адресации TLS, в частности о модели Local Exec в разделе 4.4. пишет, что не может найти "efi.h", хотя он есть в папке inc из Makefile
inc
определённую в 7й строке, то ты её нигде не использовал, а сами по себе переменные с произвольными именами в Makefile ничего не значат.gcc -fshort-wchar -I -I/ -I/usr/include -O2 -Wall -fpic -DEFI_FUNCTION_WRAPPER -ffreestanding -nostdlib -c main.c -o main.o main.c:1:10: фатальная ошибка: efi.h: Нет такого файла или каталога
-I
ты не указал своего каталога inc
, как по-твоему компилятор должен понять, что efi.h
нужно там искать?-I$(EFIINC)
EFIINC
, откуда ты ожидаешь что она возьмётся?inc
на EFIINC
, lib
на EFILIB
, crtobj
на CRTOBJ
и т. д. Как это решается в других проектах?
создал мэйк файл с помощью утилиты autotools. все получилось кроме настройки make install.
дополнительные папки с конфигами и картинками.
install-data-local
. После сборки чужой библиотеки из исходного кода, появился файл с расширением .lib
Что делать с ним - непонятно,
windres lib/glut/glut.rc lib/glut/resources.o : Invalid argumentresources.o
в чем может быть дело
windres lib\glut\glut.rc lib\glut\resources.o
Подскажите пожалуйста, почему так
a b c
символы, которые нужны библиотеке b
будут искаться только в библиотеке c
, но не в a
. Если между библиотеками нет циклических зависимостей (т.е. нет такого, что a
определяет символ, нужный b
, а b
определяет символ, нужный a
), то их можно упорядочить так, что линковка будет успешной (см. топологическая сортировка). Если циклические зависимости есть, или сортировать лень, можно перечислить нужные библиотеки несколько раз или взять их в группу:g++ main.cpp -Wl,--start-group -lglfw3 -lgdi32 -lopengl32 -lglew32s -Wl,--end-group
пишу ключ -static
'-static'
On systems that support dynamic linking, this prevents linking with
the shared libraries. On other systems, this option has no effect.
линковать с ключем -dynamic.
Проект создаёт статическую библиотеку mylib, но в неё не включена требуемая реализация boost, то есть при линковке приложения с mylib нужно явно указывать, что нужно линковать boost.
pkg-config --libs <имя библиотеки>
и получает список ключей для линковки. build/obj/%.obj: %.cpp $(USER_CFG_H_FILE) $(FREE_RTOS_H_FILE)
FREE_RTOS_H_FILE := FreeRTOS_for_stm32f2/include/FreeRTOS.h
FREE_RTOS_H_FILE := FreeRTOS_for_stm32f2/FreeRTOS.h