LINUX.ORG.RU
решено ФорумAdmin

собраную программу из исходников разместить по директориям

 


0

1

Привет! Написали мне как собрать программу из исходников. Собирали st-flash. все установилось как я понял в

/usr/local/bin/
и запускается
LD_LIBRARY_PATH=st-flash
пытались скопировать из /usr/local/lib
cp -r * /lib
cp -r */usr/lib
нозапустить st-flash без
LD_LIBRARY_PATH
не получаеься. помогите правильно разместить библиотеки из /usr/local/lib чтобы можно было без LD_LIBRARY_PATH

Какая система сборки? Если GNU Autotools, то что-то вроде ./configure --prefix=<PATH>, если CMake – cmake -DCMAKE_INSTALL_PREFIX:PATH=<PATH>, если что-то ещё то нужно смотреть.

чтобы можно было без LD_LIBRARY_PATH

Можно использовать RPath для линкера или же написать скрипт run.sh вида: https://doc.qt.io/qt-5/linux-deployment.html#creating-the-application-package

EXL ★★★★★
()
Последнее исправление: EXL (всего исправлений: 1)

все проще, у тебя там CMake и тебе надо просто изменить переменную prefix т.е это должно выглядеть как то так: в директории сборки cmake -DCMAKE_INSTALL_PREFIX=/usr путь к папке с stlink - собрать и запустить инсталляцию,после этого он инсталлирует все куда надо

Silerus ★★★★
()
Ответ на: комментарий от Silerus

мы тоже следили за этой темой) скажите пожалуйста если git склонирован в /usr/local/bin то [code] cmake -DCMAKE_INSTALL_PREFIX=/usr/local/bin? [/code]

anonymous
()
Ответ на: комментарий от EXL

[code] make release [/code] так вроде его научили собирать

anonymous
()
Ответ на: комментарий от anonymous

Что именно вы с TC хотите сделать? Получить портативную версию программы? Или же просто собрать из исходников и установить программу в систему?

Какой у вас дистрибутив Linux? Может проще сделать удобоваримый пакет для него?

EXL ★★★★★
()
Ответ на: комментарий от anonymous

нет, неважно куда клонирован репозиторий - CMAKE_INSTALL_PREFIX указывает верхний уровень куда надо инсталлировать, По умолчанию, если не переопределить переменную она указывает на /usr/local (исполняемые файлы окажутся в /usr/local/bin, конфигурационные в /usr/local/etc и т.д), Если мы хотим инсталлировать в /usr/{bin,etc,share,lib …} - то надо установить /usr, ну и тому подобное.

Silerus ★★★★
()
Ответ на: комментарий от EXL

из пакета на работает, поэтому собирают в той теме все из source. все хотят запускать просто

st-flash
без
LD_LIBRARY_PATH

anonymous
()
Ответ на: комментарий от Silerus

CMAKE_INSTALL_PREFIX указывает верхний уровень куда надо инсталлировать вот в этом то и вопрос. разве зашли бы к админам если бы знали куда инсталировать чтобы st-flash запускался без CMAKE_INSTALL_PREFIX. напишите пожалуйста что конкретно надо указать в командах чтобы все установилось правильно st-flash запускался без CMAKE_INSTALL_PREFIX

anonymous
()
Ответ на: комментарий от Silerus

CMAKE_INSTALL_PREFIX указывает верхний уровень куда надо инсталлировать

вот в этом то и вопрос. разве зашли бы к админам если бы знали куда инсталировать чтобы

st-flash
запускался без
 CMAKE_INSTALL_PREFIX
. напишите пожалуйста что конкретно надо указать в командах чтобы все установилось правильно
st-flash
запускался без
 CMAKE_INSTALL_PREFIX

anonymous
()
Ответ на: комментарий от anonymous
git clone https://github.com/stlink-org/stlink -b v1.7.0 --depth=1 # (без опций, если нужен clone с текущей development-ветки)
cd stlink/
mkdir build; cd build/
cmake .. -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=/usr
make -j4
sudo make install # (вообще так делать плохо)

$ st-flash 
invalid command line
command line:   ./st-flash [--debug] [--reset] [--connect-under-reset] [--hot-plug] [--opt] [--serial <serial>] [--format <format>] [--flash=<fsize>] [--freq=<KHz>] [--area=<area>] {read|write} [path] [addr] [size]
command line:   ./st-flash [--debug] [--connect-under-reset] [--hot-plug] [--freq=<KHz>] [--serial <serial>] erase
command line:   ./st-flash [--debug] [--freq=<KHz>] [--serial <serial>] reset
   <addr>, <serial> and <size>: Use hex format.
   <fsize>: Use decimal, octal or hex (prefix 0xXXX) format, optionally followed by k=KB, or m=MB (eg. --flash=128k)
   <format>: Can be 'binary' (default) or 'ihex', although <addr> must be specified for binary format only.
   <area>: Can be 'main' (default), 'system', 'otp', 'optcr', 'optcr1', 'option' or 'option_boot_add'
print tool version info:   ./st-flash [--version]
example read option byte: ./st-flash --area=option read [path] [size]
example write option byte: ./st-flash --area=option write 0xXXXXXXXX
On selected targets:
example read boot_add option byte:  ./st-flash --area=option_boot_add read
example write boot_add option byte: ./st-flash --area=option_boot_add write 0xXXXXXXXX
example read option control register byte:  ./st-flash --area=optcr read
example write option control register1 byte:  ./st-flash --area=optcr write 0xXXXXXXXX
example read option control register1 byte:  ./st-flash --area=optcr1 read
example write option control register1 byte:  ./st-flash --area=optcr1 write 0xXXXXXXXX

P.S. для корректной сборки нужно установить dev/devel пакеты libgtk3 и libusb.

EXL ★★★★★
()
Последнее исправление: EXL (всего исправлений: 2)
Ответ на: комментарий от anonymous

да спасибо. а разнести то как по директориям? чтобы без [code]LD_LIBRARY_PATH[/code]

Если в исходном коде имеется использование путей из install prefix, то проще всего будет просто пересобрать программу с требуемым установочным каталогом.

Но лучше всего вместо sudo make install выполнять какой-нибудь sudo checkinstall и на выходе получить DEB-пакет, файлы которого будут отслеживаться пакетным менеджером, что позволит легко удалить все разбросанные по ФС файлы программы стандартными средствами.

https://help.ubuntu.com/community/CheckInstall

EXL ★★★★★
()
Ответ на: комментарий от Silerus

да мы сейчас глупости понаделаем. потом исправлять надо, а это новые темы. помогите уже разобраться.

git склонируем в

/usr/local/bin
какой префикс нужно написать чтобы все само установилось туда куда нужно и st-flash запускался без LD_LIBRARY_PATH?

anonymous
()
Ответ на: комментарий от EXL

ребята, просто надо установить чтобы st-flash работал без LD_LIBRARY_PATH. какие префиксы прописать при сборке? это весь вопрос. много времени не просим

anonymous
()
Ответ на: комментарий от anonymous

Я тебе написал рецепт в этом сообщении: собраную программу из исходников разместить по директориям (комментарий)

git склонируем в /usr/local/bin

Репозиторий из GitHub’а нужно склонировать в любой доступный для записи каталог, например, ~/Projects/ или ~/Downloads/.

EXL ★★★★★
()
Ответ на: комментарий от anonymous

удалите то что сконировали из /usr/local/bin (не надо захламлять директорию исходниками) или переместите в домашнюю папку или удалите и склонируйте в домашнюю директорию

mkdir build; cd build/
cmake путь к директории с исходниками -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=/usr
make -j4
sudo make install 
Silerus ★★★★
()
Ответ на: комментарий от anonymous

анонаймус что ниже а почему ты такой агрессивный? как связаны наши вопросы и твоя злоба? вроде даже не к тебе обращались.

Stierlitz_
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.