- Компиляция и установка программ из исходников
- Содержание
- Распаковка
- Сборка пакета
- Установка
- Правильная установка(Вариант №1)
- Правильная установка(Вариант №2)
- Установка (вариант №3)
- Неправильная установка
- Ошибки
- Необходимое программное обеспечение
- Сборка программ и утилиты терминала Linux. Часть третья
- Сборка программ и утилиты терминала Linux. Часть третья
- Инструменты для сборки программ
- Система сборки Make
- Процесс работы make-команды
- Утилиты терминала Linux
- Применение математики
- Python-утилиты
- Различные полезности
- Пишем и собираем приложения для Android в linux консоли
- Введение
- Железо
- Операционная система
- Установка пакетов
- Настройка adb
- Постановка задачи
- Создание подписи
- Манифест
- Layout
- Исходный код приложения
- Скрипт для сборки
- Сборка и установка
- Заключение
Компиляция и установка программ из исходников
Содержание
Не редко необходимые пакеты можно найти только в виде исходных текстов, в данной статье описывается метод установки пакета из исходных текстов.
Распаковка
Программы обычно распространяются в упакованных архивах, это файлы с расширениями
Нужно понимать отличие между архиватором и упаковщиком.
Для архивации директорий и файлов используется программа tar; результатом её работы является файл с расширением .tar. Грубо говоря, это копия файловой системы — директорий и файлов с их атрибутами и правами доступа, помещённая в один файл.
Данный файл по размеру будет чуть больше, чем суммарный размер файлов, которые были архивированы. Поэтому (а может и по другой причине) используют упаковщики — программы, которые позволяют уменьшить размер файла без потери данных.
Программа tar умеет распаковывать, поэтому не нужно вызывать gunzip, а можно просто указать программе tar, что файл нужно cначала распаковать. Например, команда
сразу распакует и разархивирует. Отличие файлов с расширениями
лишь в том, что использовались разные упаковщики, программа tar определяет метод сжатия автоматически и дополнительных опций в данном случае не требуется.
После распаковки необходимо перейти в полученный каталог, все описываемые ниже команды выполняются в каталоге с исходными текстами пакета.
Сборка пакета
Для сборки программ в GNU/Linux используется (в основном) программа make, которая запускает инструкции из Makefile, но поскольку дистрибутивов GNU/Linux много, и они все разные, то для того чтобы собрать программу, нужно для каждого дистрибутива отдельно прописывать пути,где какие лежат библиотеки и заголовочные файлы. Программисты не могут изучать каждый дистрибутив и для каждого отдельно создавать Makefile. Поэтому придумали конфигураторы, которые «изучают» систему, и в соответствии с полученными знаниями создают Makefile. Но на конфигураторе они не остановились и придумали конфигураторы конфигураторов …на этом они остановились
Для сборки нам нужны компиляторы: они прописаны в зависимостях пакета build-essential, так что достаточно установить его со всеми зависимостями. Ещё нужны autoconf и automake.
Итак, чтобы собрать что-то из исходников, нужно сначала собрать конфигуратор; как собрать конфигуратор, описано в файле configure.in. Для сборки конфигуратора необходимо выполнить
Если таких скриптов в архиве не оказалось, то можно выполнить последовательно следующие команды:
Все эти команды используют файл configure.in. После выполнения этих команд создастся файл configure. После этого необходимо запустить конфигуратор для проверки наличия всех зависимостей, а также установки дополнительных опций сборки (если возможно) и просмотра результата установки (опционально- может не быть)
Конфигуратор построит Makefile основываясь на полученных знаниях и файле makefile.am. Можно передать конфигуратору опции, предусмотренные в исходниках программы, которые позволяют включать/отключать те или иные возможности программы, обычно узнать о них можно командой
Также есть набор стандартных опций, вроде
, которая указывает, какой каталог использовать для установки. Для Ubuntu обычно
БЕЗ слеша в конце! Теперь можно запустить процесс сборки самой программы командой
Для сборки достаточно привелегий обычного пользователя. Окончанием сборки можно считать момент, когда команды в консоли перестанут «беспорядочно» выполняться и не будет слова error. Теперь всё скомпилировано и готово для установки.
Установка
Усилия потраченные на Правильную установку в последствии с лихвой окупятся в случае удаления или обновления устанавливаемого программного обеспечения.
Правильная установка(Вариант №1)
Установка при помощи утилиты checkinstall. Для установки выполните
Для создания и установки deb-пакета необходимо выполнить
Правильная установка(Вариант №2)
Быстрое создание deb-пакета «вручную».
Установка (вариант №3)
Процедура создания deb-пакета подробно описана в данной статье.
Неправильная установка
Для установки необходимо выполнить
Для удаления пакета, установленного данным способом необходимо выполнить в корневой директории исходников программы (там где вы запускали make install).
Ошибки
Часто на этапе конфигурации конфигуратор сообщает, что нехватает той или иной библиотеки. Название библиотеки, которое он сообщает, не всегда соответствует названию пакета в Ubuntu. Из собственного опыта могу посоветовать поискать в Синаптике нужный пакет, исключив префикс lib, если нашлось несколько пакетов различающихся приставкой -dev в названии, то вам нужно установить именно -dev пакет (обычно он тянет за собой и не -dev пакет). Можно ещё поискать с помощью http://packages.ubuntu.com/, введя имя библиотеки в поиск по содержимому пакетов, аналогично, если найдётся dev и не dev, нужны оба . Ну или просто поискать в Google.
Необходимое программное обеспечение
Пакеты с буквами mm в конце описания — это пакеты для C++ программ. Список для bmpx, но подойдёт почти для любой GTK2/Gnome программы. Так что если не получается собрать, то посмотрите на этот список и сверьте с тем что у вас установлено.
Источник
Сборка программ и утилиты терминала Linux. Часть третья
Сборка программ и утилиты терминала Linux. Часть третья
Мы уже рассказали об основных командах терминала Linux, а также инструментах для начинающих вроде tmux, GnuPG и Bash. В этой части рассмотрим сборку программ и утилиты терминала Linux.
Инструменты для сборки программ
Речь пойдёт про интерпретируемые программные платформы, доступные в большинстве систем — Python, Perl, awk, Bash. Кроме того, вам понадобится система сборки кода Make.
Код, который пишет программист, часто разделяется на файлы заголовков .h и файлы исходного кода .c.
При этом компилятор gcc делает следующее:
- При компиляции -S исходный код преобразуется с .c в код сборки .s.
- При компиляции -c код сборки трансформируется в объектный код .o.
- Ссылка -l — это ссылка на стандартные библиотеки для создания исполняемого файла.
По умолчанию gcc объединяет вышеуказанные этапы, создавая исполняемый файл.
gcc hello.c — создает a.out, а не .o или .s-файлы.
Система сборки Make
Данная система автоматизирует компиляцию нескольких исходных файлов в сложном проекте, упорядочивает зависимые действия и выполняет их по порядку. После чего ею считывается конфигурация из файла «сборки», обычно именуемого Makefile. В итоге Makefile действует как программный компонент процесса сборки проекта.
Процесс работы make-команды
make будет считывать данные из Makefile и запускать команды, чтобы построить конечную цель. Например, в Makefile, показанном выше, make будет запускать команды для правил 2–4, за которыми последует правило 1:
gcc -c dep1.c # создать dep1.o
gcc -c dep2.c # создать dep2.o
gcc -c main.c # создать main.o
gcc -o an_exe main.o dep1.o dep2.o -lm
Утилиты терминала Linux
Чтобы запустить команду в определённое время, используйте at :
at 17:00
at> log_days_activities.sh # иногда можно сократить: at> prompt [Ctrl+D]
at предлагает использование ключевых слов, таких как now , noon , today , tomorrow (сейчас, полдень, сегодня, завтра), а также различные опции, например, часы и дни, которые можно указывать с символом + .
at noon
at now + 1 year
at 3:08pm + 1 day
at 15:01 December 19, 2018
Используйте cron , если вы хотите задать периодичность запуска команд.
FBS , Санкт-Петербург , По итогам собеседования
Утилита терминала Linux cron позволяет настроить периодический запуск посредством файла crontab, который управляет процессом и определяет, что и когда требуется выполнить. Запись может быть создана в любом файле и добавлена в систему с помощью команды crontab следующим образом:
echo ’15 18 30 6 * find /home -mtime +30 -print’ > f00
crontab f00 # добавить предыдущую команду в систему crontab
crontab -l # список записей crontab
crontab -r # удалить записи crontab
Вывод команды cron будет осуществляться через почту (в качестве альтернативы она может быть перенаправлена в файл с помощью > ).
Анатомия записи в crontab :
В данном случае получаем следующее: выполнение команды find ежегодно 30 июня в 18:15.
Применение математики
- Генерация случайных чисел с помощью shuf (может потребоваться установка):
shuf -i 1-100 -n 1 - Форматирование чисел с помощью numfmt :
numfmt —to=si 1000
1.0K
numfmt —from=iec 1K
1024 - Использование bc в качестве универсального калькулятора:
bc
echo ‘obase = 16; ibase = 10; 56 ‘| bc # десятичное в шестнадцатеричное
echo ‘scale=8; 60/7.02’ |bc # произвольная точность
Python-утилиты
- Если вам нужно установить простой веб-сервер менее чем за минуту, то просто используйте:
python3 -m http.server 35000 - Если требуется распечатать файл json:
python3 -m json.tool afile.json - Если требуется запустить небольшие программы на Python:
python -c «import math; print (str (math.pi) [: 7])» - Если требуется применить математику:
python -c «print(6*6+20)»
python -c «fctrl=lambda x:0**x or x*fctrl(x-1);
print(fctrl(6))» # вычислить факториал
Различные полезности
Далее будут приведены всевозможные команды, которые во многом облегчат жизнь рядовому пользователю и сэкономят его время.
- Чтобы выполнить команду в течение указанного времени с использованием тайм-аута:
timeout 2 ping google.com - Отобразить изменяющуюся переменную:
watch -n 5 free -m - Используйте yes для автоматического подтверждения операций:
yes | pip install pkg —upgrade
yes «this is a test» | head -50 > testfile.txt # позволяет создать файл с произвольным количеством строк - Создание PDF-файла из текста с помощью vim:
vim states.txt -c «hardcopy> states.ps | q» &&
ps2pdf states.ps # позволяет преобразовать .ps в .pdf - Запуск команды от имени другой группы Linux:
sg grpgit -c ‘git push’ - Отображение CSV-файла в формате столбца или таблицы:
column -t -s , filename.csv - В случае, если возникли трудности с отправкой двоичных исполняемых файлов по электронной почте:
xxd f.exe f.hex # hexdump exe, необходимо просто отправить его по e-mail
xxd -r f.hex f.exe # конвертируем приёмник обратно в exe - Если требуется сгенерировать пароль:
head /dev/urandom | tr -dc A-Za-z0-9 | head -c 8
openssl rand 8 -base64 | cut -c1-8 # -base64 8 для конкретной версии - Pandoc для конвертации файлов (md, tex, txt, html, docx, pdf, odt):
pandoc manual.md -o manual.pdf
pandoc example.txt -o example.html
pandoc -s example.txt -o example.docx - Также можно анализировать и читать файлы XML с помощью xmllint .
- Чтобы разделить большой файл на небольшие части (например, для отправки в виде вложения по почте):
split -b 20M large.tgz parts_ # блоки по 20 МБ
# отправить части__* по почте
cat parts_a *> large.tgz # на принимающей стороне
Если вы пользуетесь не только Linux, но и Windows, посмотрите наше руководство по Windows PowerShell для начинающих.
Хинт для программистов: если зарегистрируетесь на соревнования Huawei Cup, то бесплатно получите доступ к онлайн-школе для участников. Можно прокачаться по разным навыкам и выиграть призы в самом соревновании.
Перейти к регистрации
Ксения Широкова
Перевод материала из GitHub-репозитория
Источник
Пишем и собираем приложения для Android в linux консоли
В данной статье я покажу как можно собрать apk файл в Ubuntu используя лишь
утилиты командной строки.
Обычно для создания приложений для Adroid используется Android Studio. Но для сборки небольших программ можно обойтись командной строкой. Например, когда ресурсы компьютера ограничены и ваше приложение очень простое.
В качестве постоянной среды разработки это, возможно, не очень удобно, но если вам нужно
иногда собирать какие-нибудь мелкие утилиты — это в самый раз.
Введение
Разработка под Android не является основным направлением моей деятельности, я иногда делаю какие-то небольшие приложения для своих нужд.
Раньше я использовал QPython, но он достаточно тяжел и неудобен в работе. Поэтому я перешел к разработке нативных программ. Даже при поверхностном знании Java
это не составляет больших трудностей.
Данное руководство в большой степени базируется на этом документе: Building an Android App
from the Command Line. Кому интересны подробности, обращайтесь к первоисточнику.
Похожая статья: Пишем, собираем и запускаем HelloWorld для Android в блокноте уже встречалась на этом ресурсе, но в ней было рассмотрена разработка в Windows.
Здесь же я рассмотрю, как можно собрать приложение в linux.
Железо
Тестирование проводилось на стареньком нетбуке с процессором Атом, 1Гб ОЗУ
и 8Гб SSD диска.
Операционная система
Я тестировал приложение на Ubuntu 17.04. Начиная с Ubunu 16.04 android-sdk можно установить через пакетный менеджер.
В принципе, тот же SDK можно
скачать с сайта.
Качать файл из раздела ‘Get just the command line tools’
По сути это не сильно меняет процесс, но через пакетный менеджер все гораздо проще.
Разница будет лишь в путях и установке дополнительных пакетов «android-platform».
Установка пакетов
Итак, приступим к установке.
Будет установлено большое количество пакетов, включая Java.
Далее, в зависимости от требуемой версии Android, необходимо установить нужную
версию пакетов. Для lolipop 5.1 необходимо ставить:
Так же необходимо установить дополнительный пакет.
Если вы планируете устанавливать apk-пакет через adb, то необходимо немного дополнительных настроек.
Настройка adb
С помощью lsusb найти подключенное устройство
И создать файл с правилом:
В файл добавить одну строку:
Здесь «1782» взято из вывода lsusb.
После подключения через adb, на устройстве необходимо подтвердить соединение.
Теперь все готово к работе.
Постановка задачи
Приложение, которое будем собирать немного сложнее, чем ‘Hello world’.
- Требуется по нажатию кнопки взять строку из буфера обмена.
- Вырезать подстроку
- Записать подстроку обратно в буфер.
- С помощь Toast вывести подстроку или сообщение об ошибке.
В общем-то все просто.
Я подготовил пример который возьмем за основу.
Создание подписи
Сначала создадим ключ для подписи файла:
Это нам пригодится позже.
Манифест
Здесь указываем имя приложения в атрибуте «android:label». Так же приложение будет использоваться свою иконку, она указана в атрибуте «android:icon». Сама иконка лежит в каталоге «res/drawable-mdpi» файл «icon.png». В качестве иконки можно взять любой небольшой png файл.
Layout
Файл с расположением элементов находится в каталоге «/res/layout/».
В него можно добавлять виджеты, если вы захотите расширить функционал.
Исходный код приложения
Исходный код приложения находится здесь «java/ru/kx13/extractvidid»
Код весьма прост и примитивен, но этот шаблон можно использовать в других приложениях.
Скрипт для сборки
Я не стал использовать утилит сборки типа make или ant, т.к. весь код находится в одном файле и особых преимуществ это не даст. Поэтому это обычный shell скрипт:
Некоторые замечания по поводу путей.
- По умолчанию, переменная BASE указывает на путь, в который пакетный менеджер сохраняет файлы. Если вы ставите SDK вручную, то путь надо будет изменить.
- Если вы используете версию API отличную от 22, то вам надо подправить переменные BUILD_TOOLS и PLATFORM
Сборка и установка
Для сборки просто запустите
Если все настроено правильно никаких сообщений не будет выведено, а в каталоге «build» появится файл «Extractor.apk»
Теперь надо установить наше приложение
Если все прошло нормально, на устройстве появится новое приложение. Можно запускать и пользоваться.
В общем случае можно перекинуть файл apk на устройство любым удобным способом.
Заключение
Как видно из статьи начать разработку в консоли совсем несложно.
Консольные утилиты позволяют разрабатывать программы при весьма небольших ресурсах.
Источник