ПО, ЭВМ и АСУ из Таможенного Союза

Информация о пользователе

Привет, Гость! Войдите или зарегистрируйтесь.


Вы здесь » ПО, ЭВМ и АСУ из Таможенного Союза » Проект "Виртуальные машины" » Как бы так использовать autotools, чтобы они работали?


Как бы так использовать autotools, чтобы они работали?

Сообщений 1 страница 7 из 7

1

[html]<img src="https://sourceforge.net/p/app-emulation-sk-tests/code/ci/main/tree/src/images/autotools.gif?format=raw" width="100%" />[/html]

Почему люди используют autotools?

autotools поддерживают:
- подготовку ПО для установки в разные директории (PREFIX);
- корректную обработку зависимостей между .h-файлами.
- кросс-компиляцию;
- сборку вне директории с исходными текстами (out of tree builds);
они известны людям.

Конфигурация (поддержка PREFIX) -> Компиляция (выбор тулчейна) -> Установка (поддержка DESTDIR)

autoconf
   configure.ac (bash + m4 macros) -> ./configure

automake
   Makefile.am -> Makefile.in

autoheader
   -> config.h.in

aclocal

Нагенерированные файлы (configure, Makefile.in, Makefile) редактировать руками не надо!

./configure
  Makefile.in -> Makefile
  config.h.in -> config.h
  config.log
     опции, переменные окружения

Стандартные цели:
distclean, dist, clean, check, install-strip, install, installcheck, all, uninstall

prefix (/usr/local)
   execprefix ($prefix)
       bindir ($execprefix/bin)
       libdir ($execprefix/lib)
includedir ($prefix/include)
datarootdir ($prefix/share)
   data ($datarootdir)
   man ($datarootdir/man)
   info ($datarootdir/info)
sysconfdir ($prefix/etc)
--<option> для каждой директории
   например, ./configure --prefix=~/sys/

Стандартные переменные окружения:
CC, команда запускающая компилятор Си
CFLAGS, переменная со списком параметров командной строки компилятору Си
CXX, команда запускающая компилятор C++
CXXFLAGS, переменная со списком параметров командной строки компилятору C++
LDFLAGS, переменная со списком параметров командной строки утилите ld
и другие, см. ./configure --help

Три типа систем:
build, на какой платформе происходит сборка
host, на какой платформе программа будет работать
target, на какую платформу программа будет ориентироваться в работе (только для программ собираемого тулчейна)
--build, --host, --target параметры для скрипта ./configure
значения для этих параметров это "тройки, описывающие платформу"

Отредактировано Лис (2023-03-12 19:55:52)

0

2

Что не так с исходниками?
[html]<a href="https://tvoygit.ru/stein47/russian-virtual-mashine/src/branch/devel-mult">https://tvoygit.ru/stein47/russian-virtual-mashine/src/branch/devel-mult</a>[/html]

там у файла Makefile.am отсутствует расширение .am.

Почему так происходит?

Потому что Евгений не понимает пользы и нужности autotools, потому что ему хватает просто make.

Т.е. дело в отсутствии привычки (запускать утилиту autoreconf перед вызовом make, или вообще вместо).

Для формирования новой привычки нужно выполнение двух условий:
- понять, что это не фигня какая-то, а нужно на самом деле (осознание, и желание делать по-новому)
- чтобы прошло время, месяц, чтобы привычка вработалась в мозг

(ну или можно настроить в bash алиас для make, чтобы перед make вызывался autoreconf. Но лучше всё-таки так не делать, это нестандартно)

Отредактировано Лис (2023-03-12 20:13:30)

0

3

Почему я так хочу autotools, кроме того, что заработает .ebuild для Gentoo?

После того, как они будут прикручены, будет возможность начать устанавливать sk на российский процессор Байкал-М.

Отредактировано Лис (2023-03-12 20:45:05)

0

4

А можно пропустить стадию automake? Ограничиться только autoreconf и ./configure?
В этом случае все нормально собирается.
А вот automake выдает много ошибок. Хотя вроде не критичных. Короче нужно время, чтобы его осилить.

0

5

Евгений написал(а):

А можно пропустить стадию automake?

Пока непонятно. Я почитал документацию и не понял зачем вообще этот дополнительный шаг нужен.

Вроде проверяются какие-то зависимости, но какие? как? зачем?

Да и нет у нас никаких зависимостей, вроде (только если от sed).

0

6

Всё, я победил autotools!
Создать Makefile  - autoreconf -i

Создать Makefile и запустить сборку  - autoreconf -im

Исходники обновлены.
Правда файлы NEWS README AUTHORS ChangeLog - пустые, а в COPYING лицензия GPL3. Ее нужно менять на MIT?

0

7

Евгений написал(а):

в COPYING лицензия GPL3. Ее нужно менять на MIT?

Обязательно. Здесь ты устанавливаешь лицензию, а не утилиты.

0


Вы здесь » ПО, ЭВМ и АСУ из Таможенного Союза » Проект "Виртуальные машины" » Как бы так использовать autotools, чтобы они работали?