Ошибка при связывании библиотеки "system c .h" с ОС хоста, при запуске Appimage из контейнера docker - PullRequest
0 голосов
/ 07 мая 2020

У меня есть приложение на C ++, использующее систему c, установка выполняется с помощью cmake. Все в приложении хорошо работает внутри docker (я пробовал с разными изображениями) после создания двоичных файлов. Однако я пытаюсь создать AppImage, и для этого у меня есть сценарий для создания временной файловой системы для хранения всего, что требуется приложению до установки. Приложение запускается изнутри файловой системы, но после создания AppImage я получаю и пытаюсь запустить его, передав полный путь к файлу .h (это вход приложения), я получаю:

в файле, включенном из / путь / в / файл / фатальная ошибка: 'system c .h'file not found #include "system c .h"

скрипт AppRun, который у меня есть, следующее:

cd "$(dirname "$0")"
SELF_DIR="$(dirname "$0")"
LIBS_PATH="$SELF_DIR/root/app/lib:$SELF_DIR/root/app/include:$SELF_DIR/usr/lib:$SELF_DIR/usr/lib/x86_64-linux-gnu"
#All Internal Libraries
LIBS_PATH=${LIBS_PATH}:$(find ./root/app/ -type d | tr '\n' ':' | sed 's/:$//')

if [ -z "$LD_LIBRARY_PATH" ]; then
  LD_LIBRARY_PATH="$LIBS_PATH"
else
  LD_LIBRARY_PATH="$LIBS_PATH:$LD_LIBRARY_PATH"
fi

SYSTEMC_HOME="$SELF_DIR/root/app/include"
SYSTEMC_TARGET_ARCH=linux64

export LD_LIBRARY_PATH
export SYSTEMC_HOME
export SYSTEMC_TARGET_ARCH

exec ./root/app/bin/cppapp

Я не уверен, как связать системную библиотеку c .h в хост-системе, поскольку двоичный cppapp уже сгенерирован, связанный с библиотекой, содержащейся внутри AppImage. Я добавил строки экспорта SYSTEM C, пытаясь исправить ошибку, но это не работает.

Некоторые детали: docker image: ubuntu: последняя команда, используемая для запуска docker: sudo docker --name Ubuntu1 -it --privileged --cap-add = SYS_ADMIN --device = / dev / fuse двоичный ввод ubuntu: путь к файлу .h в ОС хоста, который приложение читает для обработки это

...