LINUX.ORG.RU

Сообщения SaintAnd

 

Компиляция glibc для получения 32-битных библиотек на 64 битной системе

Форум — Development

Имеется porteus базированный на slackware. Хочу скомпилировать wine, но мне во время компиляции пишет следующее:

checking for ld... ld
checking whether gcc -m32 works... no
configure: error: Cannot build a 32-bit program, you need to install 32-bit development libraries.

На ubuntu нужно сделать лишь apt-get install gcc-multilib, но вот в porteus, я пытался установить эти библиотеки разработчиков по этой инструкции https://docs.slackware.com/ru:slackware:multilib . Появляются только ошибки связанные с glibc и компилятор в добавок ломается. Попробовал скомпилировать glibc из исходников. Это получается, но нужны 32 битные библиотеки, потому-что проверочный хелловорлд (proba.c):

#include<stdio.h>
int main() {printf ("This\n");}

не компилируется на 32-битной архитектуре:

root@porteus:/# gcc -m32 /mnt/sda3/proba.c 
In file included from /usr/include/features.h:474,
                 from /usr/include/bits/libc-header-start.h:33,
                 from /usr/include/stdio.h:27,
                 from /mnt/sda3/proba.c:1:
/usr/include/gnu/stubs.h:7:11: fatal error: gnu/stubs-32.h: No such file or directory
    7 | # include <gnu/stubs-32.h>
      |           ^~~~~~~~~~~~~~~~
compilation terminated.

root@porteus:/# gcc /mnt/sda3/proba.c 
root@porteus:/# ./a.out 
This

Но на 64, всё хорошо.

Вопросы. Как мне добавить 32-битные библиотеки разработчика для компиляции wine? Или с каким флагом указать компилятору создавать мультифиблиотечные библиотеки?

Вот какие флаги использую для компиляции glibc.

../configure --prefix=`pwd`/libc

Возможно нужно добавлять флаги –libdir и указывать на 32-битные библиотеки, но не уверен, что у меня появится stubs-32.h в директории include/gnu без дополнительных флагов. Есть ещё –enable-multi-arch, но думаю, что это не то. -m32 не работает для компиляции. Потому что не знаю как менять значения компиляции по умолчанию. Где их найти или название переменной где записаны для gcc g++.

Вот ещё. есть флаг –disable-multilib

root@porteus:# gcc -v
Reading specs from /usr/lib64/gcc/x86_64-slackware-linux/9.1.0/specs
COLLECT_GCC=gcc
COLLECT_LTO_WRAPPER=/usr/libexec/gcc/x86_64-slackware-linux/9.1.0/lto-wrapper
Target: x86_64-slackware-linux
Configured with: ../gcc-9.1.0/configure --... --... --disable-multilib --... --...
Thread model: posix
gcc version 9.1.0 (GCC) 

Вопрос в том, как его изменить на –enable-multilib и если я буду компилировать с ним, то будет ли включена поддержка мультибиблиотечности? (дальше странный вопрос, на который хочется ответ) Он включается так ./configure –enable-multilib? или надо в make задавать? make –enable-multilib

Но я знаю, что можно указать –enable-win64 и всё будет хорошо компилироваться, но 32-битные приложения я не смогу запустить с такой программы, а мне нужна поддержка 32-битных программ.

У ubuntu такой список пакетов, который устанавливается после apt-get install gcc-multilib

( читать дальше... )

Перемещено Shaman007 из admin

 , , , ,

SaintAnd
()

Научите копировать проще в терминале без дублирования пути

Форум — General

Есть команда cp, которая имеет синтаксис cp [КЛЮЧ]… [-T] ИСТОЧНИК НАЗНАЧЕНИЕ

cd /path/to/file
cp file newfile

Это просто. Но есть ли способ без помощи cd скопировать, переименовать или переместить файл не переходя в эту директорию и не дублировать путь до файла.

Например: Нам нужно, скопировать (создать бекап) файл в определённой директории с длинным путём, но нужно оставаться в домашней директории, чтобы начать следующее копирование уже в ней

guest@porteus:~$ pwd
/home/guest
guest@porteus:~$ cp /usr/folder/folder/folder/folder/folder/file.txt /usr/folder/folder/folder/folder/folder/file.txt.back
guest@porteus:~$ cp file1 file2

Согласитесь, что это выглядит плохо. Можно было бы сделать более элегантно. Например:

guest@porteus:~$ pwd
/home/guest
guest@porteus:~$ cd /usr/folder/folder/folder/folder/folder/
guest@porteus:~$ cp file.txt file.txt.back
guest@porteus:~$ cd ~/
guest@porteus:~$ cp file1 file2

Но в моей практике приходится перемещаться не только в домашнюю директорию, но и так же переходить по длинным путям, делать бекап или переименование, что очень неудобно, потому что приходится возвращаться в предыдущий путь, набирать всё с начала, а выделять мышью путь, только время тратить на «прицеливание».

Есть ли способ копировать, перемещать файлы из другой директории, как будто ты там находишься, типа cp file1 file2, чтобы не нужно было дублировать пути?

man читал, но что-то не выходит. Нашёл что-то про --parents и -t -T, но это не помогает. Может не так эти ключи расставлял.

Пользоваться mc ради 1-2 файлов, когда после копирования нужно потом выходить из mc, не вижу смысла.

Если не поняли вопрос, то пишите. Попробую объяснить подробнее.

 , , , ,

SaintAnd
()

Запуск linux без монитора с видеокартой Radeon RX 5500 XT

Форум — Linux-hardware

Купил я Radeon RX 5500 XT и т.к. у меня нет монитора с разъёмами hdmi и display port, то я установил ubuntu и mint через виртуальную машину с помощью porteus подключаясь по vnc c ноутбука. Настроил vnc и ssh в ubuntu/mint, и добавил в /etc/default/grub nomodeset и сделал update-grub. Видеокарта работает в таком состоянии, только не работает видеодрайвер amdgpu. Собственно и без nomodeset работает, вентиляторы на видеокарте отключаются (без режима nomodeset), и появляются зависания (изображение выводится со скоростью 1 кадр в секунду), но в inxi -G в поле display, значение driver: становится b]ati, fbdev, а в поле Device-1 параметр driver переходит в значение N/A. Решил подключить через hdmi не рабочий телевизор rubin, который постоянно перезагружается. Тут ситуация улучшилась, и экран стал зависать примерно 1 раз в 8-14 секунд (через такой промежуток перезагружается телевизор). После этого в inxi -G в поле display, значение driver: amdgpu, ati. Но стоит выключить телефизор или отключить кабель, как оно снова переходит в значение none, и начинаются зависания в 1 кадр в секунду. Вариант с аппаратной заглушкой, «затычка» (эмуляция подключения монитора hdmi или display port) или hdmi-vga не хочу использовать, потому что карту можно повредить таким образом. Поэтому решил использовать программный метод.

Вопрос. Как запустить эту видеокарту, чтобы считала, что монитор подключен?

Похожая тема находится здесь Виртуальный монитор заглушка, но подходит она для видеокарт nvidia. Все опции я пробовал делать. Не помогло.

Ссылка на проблему на другом сайте: https://forum.ubuntu.ru/index.php?topic=313710.msg2440397 https://linuxmint.com.ru/viewtopic.php?t=6339

Система:Ubuntu 20.04 x64 / Mint 20 ulyana x64
Видеокарта:Sapphire Radeon RX 5500 XT
Процессор:Phenom II x4 B95
Плата:N68C-GS4 FX
Память:DDR2 4 GB
Питание:Hipro hpa-500W
Диск:Western Digital 2 TB WD EZRZ

 , , , ,

SaintAnd
()

Как установить nethogs на андроид?

Форум — Mobile

Имею смартфон fly numbus fs454 с процессором cortex-a7 и хочу разобраться с проблемой глюков и подвисаний при подключении к интернету. Мне нужно узнать, какой процесс или приложение начинает использовать сеть без моего ведома. По моему мнению, с этим лучше всего справится утилита nethogs, так как она показывает конкретные приложения, использующие сетевой трафик, и его объём, что мне и нужно знать. Но этой утилиты нет в google play, поэтому я хочу установить её на андроид и пользоваться через терминал.

Если есть похожее приложение, показывающее процесс и его трафик, напишите пожалуйста.

Сам процесс портирования утилит linux на андроид описан в этих статьях: https://m.habr.com/company/xakep/blog/208518/ https://cryptoworld.su/android-linux-2/ https://cryptoworld.su/linux-android/

Есть ещё приложение termux в google play, позволяющее устанавливать утилиты linux на андроид, но там нет nethogs. Я пытался установить в этом приложение nethogs.deb через dpkg, но .deb пакеты не имеют формата armv7, а только i386 и прочее. https://pkgs.org/download/nethogs

Вот ещё есть исходники nethogs для arm версий: http://tardis.tiny-vps.com/aarm/packages/n/nethogs/ . Но я так и не понял как установить эти исходники.

 ,

SaintAnd
()

RSS подписка на новые темы