Помогите научиться устанавливать программы из исходного кода

Установка, обновление, настройка Linux

Модераторы: Olej, adminn

Аватара пользователя
perseus
Писатель
Сообщения: 99
Зарегистрирован: 11 май 2017, 18:01
Откуда: Щёлково, Московская обл.
Контактная информация:

Re: Помогите научиться устанавливать программы из исходного

Непрочитанное сообщение perseus » 14 июн 2017, 11:56

Результат последней компиляции gcc-4.7.1 подсунутым в систему файлом futex.h к сожалению отрицательный. :-( На 303 минуте компилятор выдал ошибку:

Код: Выделить всё

../.././libgo/runtime/proc.c:117:4: ошибка: #error unknown case for SETCONTEXT_CLOBBERS_TLS 
../.././libgo/runtime/proc.c: В функции <<runtime_gogo>>:]
../.././libgo/runtime/proc.c: В функции <<runtime_schedinit>>:n]
cc1: all warning being treated as errors
У кого какие будут предположения, предложения по дальнейшим действиям ?
Вот ссылка на текст файла proc.c
https://code.woboq.org/gcc/libgo/runtime/proc.c.html
Последний раз редактировалось perseus 14 июн 2017, 12:13, всего редактировалось 2 раза.

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Re: Помогите научиться устанавливать программы из исходного

Непрочитанное сообщение Olej » 14 июн 2017, 12:07

perseus писал(а):Результат последней компиляции gcc-4.7.1 подсунутым в систему файлом futex.h к сожалению отрицательный. :-( На 303 минуте компилятор выдал ошибку:

Код: Выделить всё

../.././libgo/runtime/proc.c:117:4: ошибка: #error unknown case for SETCONTEXT_CLOBBERS_TLS 
../.././libgo/runtime/proc.c: В функции <<runtime_gogo>>:]
../.././libgo/runtime/proc.c: В функции <<runtime_schedinit>>:n]
У кого какие будут предположения, предложения по дальнейшим действиям ?
Вы же должны сами себе понимать что:
- футексы - это такой новый фундаментальный примитив ядра Linux, каковыми являются классические мютекст или семафор...
- и в вашем ядре 2.4.х их нет ... "на дух" :lol:
- всё, что вы и можете собрать по максимуму - это очень ограниченная по функциональности программа, которая сможет (если повезёт! ;-) ) собирать Go-программы из очень ограниченного подмножества - без горутин, параллелизма
- в принципе, наблюдения (мои) за исполняющимися процессами Go-приложений, показывают, что самая элементарная программа Hello World на Go запускается в 3 или 4 потока (один из которых - динамический сборщик мусора)...
- но это классические потоки POSIX/Linu pthread_t
- так что горутины с футексами там вряд ли (!) требуются.
Это уже как повезёт! :lol:

Аватара пользователя
perseus
Писатель
Сообщения: 99
Зарегистрирован: 11 май 2017, 18:01
Откуда: Щёлково, Московская обл.
Контактная информация:

Re: Помогите научиться устанавливать программы из исходного

Непрочитанное сообщение perseus » 14 июн 2017, 12:12

Это понятно, как заставить собраться эту пусть и ограниченную версию gcc ?
Чисто спортивный интерес ;-) , пока собрать его не получается с поддержкой go :-?

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Re: Помогите научиться устанавливать программы из исходного

Непрочитанное сообщение Olej » 14 июн 2017, 12:16

perseus писал(а):Результат последней компиляции gcc-4.7.1 подсунутым в систему файлом futex.h к сожалению отрицательный. :-( На 303 минуте компилятор выдал ошибку:

Код: Выделить всё

../.././libgo/runtime/proc.c:117:4: ошибка: #error unknown case for SETCONTEXT_CLOBBERS_TLS 
../.././libgo/runtime/proc.c: В функции <<runtime_gogo>>:]
../.././libgo/runtime/proc.c: В функции <<runtime_schedinit>>:n]
У кого какие будут предположения, предложения по дальнейшим действиям ?
Вот ссылка на текст файла proc.c
https://code.woboq.org/gcc/libgo/runtime/proc.c.html
У вас есть возможность попробовать только 2 варианта:

1. Показанное вами сообщение (ошибки) - это сообщение препроцессора (#define ... #error ... и т.д.) - для предотвращения работы в неправильном окружении, а оно у вас действительно неправильное. ;-)
Вы можете, на свой страх и риск, залезть в исходный код, файл ../.././libgo/runtime/proc.c и в строке 117 (или +/- несколько строк) забить комментарием (/* ... */) эти несколько строк препроцессора с проверкой.
Но то что получится - никто и ничего вам не может гарантировать!

2. Идти по пути статической сборки требуемого приложения Go на другом Linux с ядром 3.х/4.х (кросс-компиляция), с тем, чтобы добиться работоспособноти собранного приложения при переносе его в систему с ядром 2.4.
Тоже рискованный путь, ... но возможный и более вероятный.
P.S. По крайней мере, мы теперь знаем с вами, что в компилируемой Go-программе не могут появляться футесы, т.е. в коде прописываться горутины!

Аватара пользователя
perseus
Писатель
Сообщения: 99
Зарегистрирован: 11 май 2017, 18:01
Откуда: Щёлково, Московская обл.
Контактная информация:

Re: Помогите научиться устанавливать программы из исходного

Непрочитанное сообщение perseus » 21 июн 2017, 12:23

1. Показанное вами сообщение (ошибки) - это сообщение препроцессора (#define ... #error ... и т.д.) - для предотвращения работы в неправильном окружении, а оно у вас действительно неправильное. ;-)
Вы можете, на свой страх и риск, залезть в исходный код, файл ../.././libgo/runtime/proc.c и в строке 117 (или +/- несколько строк) забить комментарием (/* ... */) эти несколько строк препроцессора с проверкой.
Но то что получится - никто и ничего вам не может гарантировать!
Попробовал 1-й вариант. Попробовал в файле proc.c закоментировать выдачу предупреждения об ошибке. Результат отрицательный, поскольку далее в этом же файле задействуются две функции fixcontext и initcontext которые и определяются в директивах препроцессора в зависимости от окружения. Обойти их не получается. Выдаётся сообщение о неявном определении этих двух функций. :-?

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Re: Помогите научиться устанавливать программы из исходного кода

Непрочитанное сообщение Olej » 21 июн 2017, 12:30

perseus писал(а):
1. Показанное вами сообщение (ошибки) - это сообщение препроцессора (#define ... #error ... и т.д.) - для предотвращения работы в неправильном окружении, а оно у вас действительно неправильное. ;-)
Вы можете, на свой страх и риск, залезть в исходный код, файл ../.././libgo/runtime/proc.c и в строке 117 (или +/- несколько строк) забить комментарием (/* ... */) эти несколько строк препроцессора с проверкой.
Но то что получится - никто и ничего вам не может гарантировать!
Попробовал 1-й вариант. Попробовал в файле proc.c закоментировать выдачу предупреждения об ошибке. Результат отрицательный, поскольку далее в этом же файле задействуются две функции fixcontext и initcontext которые и определяются в директивах препроцессора в зависимости от окружения. Обойти их не получается. Выдаётся сообщение о неявном определении этих двух функций. :-?
Постарайтесь, пока ... 1-2 дня, воздержаться от добавления новых сообщений - форум будет перенесен на новый хостинг, и сообщения после архивирования не будут перенесены.
См.: Achtung! Achtung!

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

Аватара пользователя
perseus
Писатель
Сообщения: 99
Зарегистрирован: 11 май 2017, 18:01
Откуда: Щёлково, Московская обл.
Контактная информация:

Re: Помогите научиться устанавливать программы из исходного

Непрочитанное сообщение perseus » 30 июн 2017, 18:37

2. Идти по пути статической сборки требуемого приложения Go на другом Linux с ядром 3.х/4.х (кросс-компиляция), с тем, чтобы добиться работоспособноти собранного приложения при переносе его в систему с ядром 2.4.
Тоже рискованный путь, ... но возможный и более вероятный.
что и где можно почитать про кросс-компиляцию? Хочу попробовать этот вариант сборки gcc с поддержкой go для ядра linux-2.4

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Re: Помогите научиться устанавливать программы из исходного

Непрочитанное сообщение Olej » 01 июл 2017, 14:13

perseus писал(а):
2. Идти по пути статической сборки требуемого приложения Go на другом Linux с ядром 3.х/4.х (кросс-компиляция), с тем, чтобы добиться работоспособноти собранного приложения при переносе его в систему с ядром 2.4.
Тоже рискованный путь, ... но возможный и более вероятный.
что и где можно почитать про кросс-компиляцию? Хочу попробовать этот вариант сборки gcc с поддержкой go для ядра linux-2.4
Вообще-то, кросс-компиляция - это сборка, чаще всего, под другое оборудование ... например под 64-бит на 32-бит системе, или наоборот ... или под другой класс процессора: ARM, MIPS - и зачастую это так и делается.
Но сборка под другой окружение (под ядро 2.4)? - это, наверное, тоже возможно ... собирают же под конкретные библиотеки, отличающиеся от стандартного окружения. Только "возможно" - это вовсе не гарантирует "успешно" ... если у вас там не хватает каких-то критических компонент - например, определённых системных вызовов Linux (новых).

1. Можно попробовать.
И я вам даже помогу и подскажу, в меру умений ... поучаствую.
Только обязательно это обсуждать в новой теме здесь в "Программирование", которую вам предлагаю создать ... что-то с названием типа "Кросс-компиляция".
(это только с тем, чтобы через какое-то время ... месяц, год ... можно было концы с концами свести и найти "где же мы такое подобное уже обсуждали" ;-) )

2. Почитать по кросс-компиляции можно и здесь на форуме ... когда-то попутно обсуждали:
Linux для embedded применений
(если что-то ещё попадётся на глаза, было ещё - добавлю сюда).
А вообще, по кросс-компиляции черпать информацию нужно именно в публикациях по embedded, встраиваемым системам - это их хлеб :lol: ... и на сегодня подавляющее число таких проектов используют Linux для встраивания, другие операционные платформы практически сдохли.
P.S. Добавляю ;-) , как и обещал:
Linux на платформах MIPS (кое-что полезное можно почерпнуть, много ссылок, например)
Там же указан перевод на русский целой книги Разработка и внедрение системы на встраиваемом Linux.
Там есть даже такой замечательный раздел целый как:
Глава 8, Сборка и отладка

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Помогите научиться устанавливать программы из исходного кода

Непрочитанное сообщение Olej » 04 мар 2023, 10:50

Подобная тема возникает снова и снова ... Вот: установка приложений в Linux - там попутно, помимо самой установке, и предшествующая установке сборка из исходников есть.
И новые техники (инструменты) сборки: Ninja ... GN ...

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Помогите научиться устанавливать программы из исходного кода

Непрочитанное сообщение Olej » 13 фев 2024, 14:25

Я за многие годы собрал сотни разных проектов из исходников ... на десятке языков программирования...
Но сейчас вот впоролся в проблему сборки проекта TinyGo: Go: TinyGo ... связано с проблемами сборки LLVM, Clang и библиотеки Clang libc++
Даже интересно стало :lol: - что ж там такая за проблема :?:

Ответить

Вернуться в «Администрирование Linux»

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 6 гостей