Ответы пользователя по тегу Сборка проектов
  • Почему gcc: command not found в этом случае?

    jcmvbkbc
    @jcmvbkbc
    "I'm here to consult you" © Dogbert
    ./configure CC=arm-linux-gnueabi-gcc-7 --host=aarch64-linux-android //тут ОК
    make // gcc: command not found

    Если конфигурирование прошло успешно, то система сборки должна использовать CC который был ей дан на этапе configure. То что где-то вызывается gcc это либо результат ошибки конфигурирования, либо баг в системе сборки проекта.

    Мне надо ссылку делать в bin на arm-linux-gnueabi-gcc-7, или это костыль в данном случае

    Если arm-linux-gnueabi-gcc-7 успешно вызывается из консоли по имени, то ничего делать не надо.
    gcc -- это хостовый компилятор, ты же не на arm-хосте компилируешь? Если gcc перестал вызываться из консоли -- это отдельная проблема, к кросс-компиляции не имеющая отношения.
    Ответ написан
    6 комментариев
  • Что означает ошибка "Error: relocation ... cannot be used with -shared"?

    jcmvbkbc
    @jcmvbkbc
    "I'm here to consult you" © Dogbert
    Что означает ошибка «Error: relocation ... cannot be used with -shared»

    Эта ошибка значает, что такой объектник содержит код, работа которого зависит от адреса по которому он будет размещён. Так называемый position-dependent code. Альтернатива -- position-independent code, такой, который выполняется одинаково, независимо от адреса, а все данные и константы, которые зависят от адреса, если таковые есть, вынесены из кода в отдельный изменяемый сегмент. Такой код генерируется компилятором если его вызывать с правильным флагом (например gcc -fpic). Из-за того что динамические библиотеки могут быть загружены в процесс по любому адресу существует требование, что код в них должен быть position-independent. Поэтому объектники скомпилированные как position-dependent обычно не могут быть слинкованы в динамическую библиотеку.

    В данном случае запись о релокации с типом R_AARCH64_TLSLE_ADD_TPREL_HI12 говорит (частью TLSLE, где LE означает Local Executable) о том, что код объектника в котором она находится был намеренно собран с рассчётом на то, что объектник будет частью исполняемого файла, а не динамической библиотеки. Здесь можно почитать об отличиях моделей адресации TLS, в частности о модели Local Exec в разделе 4.4.
    Ответ написан
    Комментировать
  • Почему не собирается EFI application?

    jcmvbkbc
    @jcmvbkbc
    "I'm here to consult you" © Dogbert
    пишет, что не может найти "efi.h", хотя он есть в папке inc из Makefile

    что такое "папка 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)

    В твоём Makefile не определена переменная EFIINC, откуда ты ожидаешь что она возьмётся?

    Судя по содержимому Makefile стоит заменить имя inc на EFIINC, lib на EFILIB, crtobj на CRTOBJ и т. д.
    Ответ написан
  • В чем проблема не нахождения ссылок на функции*?

    jcmvbkbc
    @jcmvbkbc
    "I'm here to consult you" © Dogbert
    При сборке проекта, возникает ошибка ненахождения метода.

    Убедись, что -lboost указан после -lcpprest в команде линковки.
    Ответ написан
  • Почему я не могу слинковать .cpp файлы с своим проектом SFML?

    jcmvbkbc
    @jcmvbkbc
    "I'm here to consult you" © Dogbert
    Файлы imgui.cpp и тд не лежат в корне проекта, я их туда не положил, потому-что при компиляции с ними появляется ещё больше ошибок

    А где по-твоему реализованы функции ImGui::SetNextWindowPos, ImGui::SetNextWindowSize и т.д.?
    Ответ написан
    1 комментарий
  • Не находится функция библиотеки?

    jcmvbkbc
    @jcmvbkbc
    "I'm here to consult you" © Dogbert
    А зачем в скрипте сборки gmsv_ekau_linux.dll стоит это: -Wl,-soname,lua_shared.so?
    Ответ написан
  • Как автоматизировать сборку зависимостей программы?

    jcmvbkbc
    @jcmvbkbc
    "I'm here to consult you" © Dogbert
    Как это решается в других проектах?

    В других проектах (обычно называемых "дистрибутивы ОС") библиотеки и заголовочные файлы помещаются в пакеты и устанавливаются стандартной командой ОС из репозитория. Велика вероятность того, что часть ваших библиотек уже представлена готовыми пакетами.
    Другие проекты (иногда называемых "построители дистрибутивов") могут по большей части состоять из рецептов сборки всяческих библиотек. См. например buildroot или yocto.
    Ответ написан
    Комментировать
  • Как настроить make install для проекта?

    jcmvbkbc
    @jcmvbkbc
    "I'm here to consult you" © Dogbert
    создал мэйк файл с помощью утилиты autotools. все получилось кроме настройки make install.

    Читать главы install и the uiform naming scheme мануала automake

    дополнительные папки с конфигами и картинками.

    Если они вписываются в стандарт использования файловой системы, то добавить их в data_DATA. Если не вписываются -- добавить своё правило install-data-local.
    Ответ написан
  • Как устранить ошибку при компиляции, возникающую вероятно из-за OpenSSL?

    jcmvbkbc
    @jcmvbkbc
    "I'm here to consult you" © Dogbert
    Я подозреваю, что добавление #include <openssl/ossl_typ.h> в external/unbound/validator/val_secalgo.c должно помочь.
    Ответ написан
  • Как совместить lib файл с проектом?

    jcmvbkbc
    @jcmvbkbc
    "I'm here to consult you" © Dogbert
    После сборки чужой библиотеки из исходного кода, появился файл с расширением .lib

    Традиционно статические библиотеки называются *.lib на винде и *.a на *nix. Динамические библиотеки называются *.dll и *.so, соответственно.

    Что делать с ним - непонятно,

    Передавать линковщику. Нет разницы, как оно называется.
    Ответ написан
    Комментировать
  • Почему возникает ошибка линковки в данном случае?

    jcmvbkbc
    @jcmvbkbc
    "I'm here to consult you" © Dogbert
    Почему возникает ошибка линковки в данном случае?
    'memset' was not declared in this scope

    Это ошибка компиляции, а не линковки. Потому что не хватает #include <cstring>
    Ответ написан
    4 комментария
  • В чем может быть проблема сборки исходников?

    jcmvbkbc
    @jcmvbkbc
    "I'm here to consult you" © Dogbert
    windres lib/glut/glut.rc lib/glut/resources.o
    : Invalid argumentresources.o

    в чем может быть дело

    windres не нравится второй аргумент командной строки. Похоже на то, что он ожидает '\' в качестве разделителя элементов пути к файлу вместо '/'.
    Можно начать с проверки того, в этом ли дело, запустив windres так: windres lib\glut\glut.rc lib\glut\resources.o
    Ещё стоит проверить, что используется windres из того же набора, что и остальные инструменты сборки, а не какой-нибудь левый.
    Ответ написан
    Комментировать
  • Почему тут undefined reference?

    jcmvbkbc
    @jcmvbkbc
    "I'm here to consult you" © Dogbert
    Подскажите пожалуйста, почему так

    Потому что порядок перечисления библиотек важен: в списке библиотек a b c символы, которые нужны библиотеке b будут искаться только в библиотеке c, но не в a. Если между библиотеками нет циклических зависимостей (т.е. нет такого, что a определяет символ, нужный b, а b определяет символ, нужный a), то их можно упорядочить так, что линковка будет успешной (см. топологическая сортировка). Если циклические зависимости есть, или сортировать лень, можно перечислить нужные библиотеки несколько раз или взять их в группу:
    g++ main.cpp -Wl,--start-group -lglfw3 -lgdi32 -lopengl32 -lglew32s -Wl,--end-group
    Ответ написан
    Комментировать
  • Как в netbeans подключить динамическую библиотеку вместе со статическими ubuntu?

    jcmvbkbc
    @jcmvbkbc
    "I'm here to consult you" © Dogbert
    пишу ключ -static

    из info gcc:
    '-static'
    On systems that support dynamic linking, this prevents linking with
    the shared libraries. On other systems, this option has no effect.


    линковать с ключем -dynamic.

    нет же такого ключа когда собираешь под linux

    Что делать? Убирать ключ -static -- всё равно статически слинкованного исполняемого файла не получится, раз нужна динамическая библиотека.
    Ответ написан
    1 комментарий
  • Gitian-builder ошибка гугл не помогает?

    jcmvbkbc
    @jcmvbkbc
    "I'm here to consult you" © Dogbert
    ./build/bitcoin.o: file not recognized: File format not recognized

    Смотри логи на предмет того, как build/bitcoin.o был построен и разбирайся с ним.
    Ни к одному из тегов вопрос не имеет непосредственного отношения.
    Ответ написан
  • Как включить в статическую библиотеку все зависимости из других стат.библиотек в CMake проекте?

    jcmvbkbc
    @jcmvbkbc
    "I'm here to consult you" © Dogbert
    Проект создаёт статическую библиотеку mylib, но в неё не включена требуемая реализация boost, то есть при линковке приложения с mylib нужно явно указывать, что нужно линковать boost.

    Так обычно библиотеки и делают -- ни одна нормальная библиотека не тащит с собой часть другой.
    А вот для того, чтобы указать, что у библиотеки есть зависимости используют pkg-config. Такая библиотека устанавливает в системе свой архив (*.a), свои заголовочные файлы (*.h) и описание для pkg-config (*.pc). Пользователь библиотеки вызывает pkg-config --libs <имя библиотеки>и получает список ключей для линковки.
    Ответ написан
    Комментировать
  • Как скомпилировать проект С++ под разные платформы?

    jcmvbkbc
    @jcmvbkbc
    "I'm here to consult you" © Dogbert
    можно ли скомпилировать "hello word" на андроид, не приложив титанических усилий?

    Проще всего это сделать собрав приложение компилятором под linux на целевом CPU статически.
    Ответ написан
    Комментировать
  • Несовместимость gnu make 3.81 и 4.2.1. Как разрешить?

    jcmvbkbc
    @jcmvbkbc
    "I'm here to consult you" © Dogbert
    файл FreeRTOS_for_stm32f2/FreeRTOS.h откоторого зависят все цели в следующем правиле не существует:
    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
    Ответ написан
  • Нужен нормальный форум по buildroot?

    jcmvbkbc
    @jcmvbkbc
    "I'm here to consult you" © Dogbert
    Ответ написан
    Комментировать