Nп/п : 78 из 100
От : Rinat Sadretdinow 2:5020/620 27 апр 25 14:34:32
К : Alexey Khromov 27 апр 25 14:38:01
Тема : Почему такая бНОПНЯ образовалась?
----------------------------------------------------------------------------------
@MSGID: 2:5020/620 680e1649
@REPLY: 2:5030/723 680dfb8f
@CHRS: CP866 2
@TZUTC: 0300
@TID: hpt/lnx 1.9.0-cur 2021-05-15
Hello Alexey!
27 Apr 25 12:31, you wrote to me:
RS>> Если это так интересно Отцу Русской Демократии, то вот. Я лично
RS>> понимаю только то, что я тут ничего не понимаю. gdb создан
RS>> каким-то яйцеголовыми пришельцами с Альфа Центавра и если им тут
RS>> хоть что-то
AK> Ну таки да) благо интерфейс у большинства cli-дебаггеров такой же.
AK> Есть обертки, тот же nemiver
Даже debug.com, symdeb.exe и SoftICE не так убоги как gdb и windbg.
AK> Я тут по-бырому F42 развернул в WSL-е и попытался собрать голдед всеми
AK> штатными средствами. Рубится на линковке, так как не может найти
AK> символ termname в либе /lib64/libtinfo.so.5 (ncurses-compat-libs
AK> установлены). Символ этот там точно есть, nm его видит. В ABI6 эти же
AK> символы присутствуют, но несовместимы с ABI5.
AK> Ну а так как свярщик я ненастоящий, и курзесы вместе с плюсами
AK> недолюбливаю - глубжее разбираться уже не было сил)
Рассказываю как собрать в F42 для получения коры (если не следовать
этой инструкции, а собирать штатно, то на Fedora 42 соберётся то, что
кору не кидает, использует ncurses 6 и корректно показывает лишь латиницу,
а вместо кириллицы кажет полную дрянь).
1) устанавливаем ncurses-compat-libs чтобы были курсесы пятой версии
2) далее файле /usr/lib64/libncurses.so:
===
rhs@sys3175:~$ cat /usr/lib64/libncurses.so
INPUT(libncurses.so.6 -ltinfo)
rhs@sys3175:~$
===
меняем so.6 на so.5
3) собираем штатно `rpmbuild -bb golded.spec`, при этом всё
собирается без вопросов и ldd говорит что golded+ теперь хочет ncurses 5, а
не 6:
===
rhs@sys3175:~$ ldd /usr/bin/gedlnx
linux-vdso.so.1 (0x00007f7cc20c9000)
libncurses.so.5 => /lib64/libncurses.so.5 (0x00007f7cc2077000)
^^^^
libtinfo.so.6 => /lib64/libtinfo.so.6 (0x00007f7cc204a000)
libstdc++.so.6 => /lib64/libstdc++.so.6 (0x00007f7cc1c00000)
libm.so.6 => /lib64/libm.so.6 (0x00007f7cc1f5c000)
libgcc_s.so.1 => /lib64/libgcc_s.so.1 (0x00007f7cc1f30000)
libc.so.6 => /lib64/libc.so.6 (0x00007f7cc1a0e000)
libtinfo.so.5 => /lib64/libtinfo.so.5 (0x00007f7cc1f03000)
^^^^
/lib64/ld-linux-x86-64.so.2 (0x00007f7cc20cb000)
rhs@sys3175:~$
===
Без выполнения пункта номер 2 как я ни бился gedlnx всё равно
упорно собирался для ncurses 6
3а) можно вернуть so.6 который был изменён на so.5 в пункте номер
2 чтобы другие программы, завязанные на ncurses 6, не обломались (всё
равно ncurses 5 теперь жёстко hardcoded в gedlnx и он железно будет
обращаться именно к библиотекам из ncurses-compat-libs), можно это *временно*
оставить для чистоты эксперимента, но после экспериментов всё равно надо
вернуть, иначе после перезагрузки есть ненулевой шанс что перестанут работать:
===
rhs@sys3175:~$ dnf repoquery --whatrequires ncurses-libs
Updating and loading repositories:
Repositories loaded.
2048-cli-0:0.9.1-23.fc42.x86_64
4store-0:1.1.6-1.x86_64
Agda-0:2.6.4.3-53.fc42.x86_64
Io-language-0:20170906-21.fc42.i686
[...тысячи их, "Имя им легион" поэтому несколько сотен зависимых от
ncurses поскипано...]
zile-0:2.6.2-8.fc42.x86_64
zkl-0:1.14.7-1.x86_64
zork-0:1.0.3-8.fc41.x86_64
zsh-0:5.9-16.fc42.x86_64
===
4) запускаем gedlnx что со скрином, что с луитом, получаем SIGSEGV, радуемся!
Меня смущает то, что gedlnx требует как libtinfo.so.6, так и
libtinfo.so.5 Скорее всего тут и порылась собака, скорее всего именно вот из-за
этого и происходит бяка и кака. Но вот как это побороть и оставить
только libtinfo.so.5, выкинув из требуемых библиотек libtinfo.so.6 я не
придумал (хотя и не думал честно говоря :-)
Bye!
--- GoldED+/LNX 1.1.5-b20180707
* Origin: -= Thunder Bird =- (2:5020/620)
SEEN-BY: 46/49 50/109 104/117 221/6 240/1120 301/1
341/66 451/31 452/28 166
SEEN-BY: 455/19 463/68 4500/1 5000/111 5001/100
5015/42 46 5019/40 400
SEEN-BY: 5020/101 113 545 620 715 830 846 848
1042 2992 4441 5480 12000
SEEN-BY: 5022/128 5029/32 5030/49 115 1081 1474
5049/1 3 5050/151 5053/51 58
SEEN-BY: 5054/89 5058/104 5060/900 5061/133 5068/45
5083/1 444 6078/80 6090/1
@PATH: 5020/620 1042 4441