Автор Тема: Ребята никто не подскажет х64 Linux с Xlib11 на борту  (Прочитано 6304 раз)

Оффлайн ProMiNick

  • Завсегдатай
  • *
  • Сообщений: 6
    • Email
Я собрал бинарник под х64 линукс опирающийся на xlib (я думал xlib данность) - хотел потестить. (32битный то успешно потестил).
Но под первой же попавшейся Линукс я xlib не нашел в либах.
А тупо перебором 1 за другим х64 линухи скачивать по 6 Гб каждый та еще перспектива.
НИ С КАКОЙ ДРУГОЙ БИБЛИТОТЕКОЙ работоспособность своих макросов Я ТЕСТИТЬ НЕ ХОЧУ. Оказалось я линукс не пощупал толком, но уже ярый хейтер квиктайма, гтк, каких то виджетов и прочих надстроек над простейшим интерфейсом.

Ваше сообщество уже как то помогло мне 2 года назад -    Тема: Может кто скомпилировать из Linux исполняемые GUI ELFs — Linux  (Прочитано 1076 раз) - как результат я сгенерировал х32 ГУИ приложение под линукс на ассемблере (я его скомпилировал в windows, и протестировал в Linux) - и не на ГНУтом ассемблере, а на фасме. (до меня фасм такого не умел)
я попробовал также собрать х64 ГУИ приложение под линукс на ассемблере (по аналогии) - по моей логике оно должно успешно запуститься.
вот собственно исходник:
format ELF64 executable 3
entry start

include 'linux/x64.inc'

interpreter '/lib64/ld-linux-x86-64.so.2'
needed 'libX11.so.6'

include 'os_specs/linux/api/x86/libx11.inc'

segment readable executable
start:
        sub     esp,8
        xor     edi,edi
        cinvoke libx11.XOpenDisplay;, rdi
        or      rax, rax
        jz      .failXserver
        mov     [hdisplay], rax
        mov     edi, [rax+XDISPLAY.default_screen]
        shl     edi, bsf sizeof.XSCREEN ; because sizeof.XSCREEN is power of 2
        add     rdi, [rax+XDISPLAY.screens]
        cinvoke libx11.XCreateSimpleWindow, rax, [rdi+XSCREEN.root], 10, 20, 400, 200, 0, [rdi+XSCREEN.black_pixel], [rdi+XSCREEN.white_pixel]
        or      rax, rax
        jz      .failCreateWindow
        mov     [hwnd], rax
        cinvoke libx11.XSelectInput, [hdisplay], rax, 0;$8001
        cinvoke libx11.XStoreName, [hdisplay], [hwnd], _title
        ;cinvoke libx11.XMapWindow, [hdisplay], [hwnd]
        cinvoke libx11.XMapRaised, [hdisplay], [hwnd]
        or      rax, rax
        jz      .failShow
        cinvoke libx11.XCreateGC, [hdisplay], [hwnd], 0, 0
        mov     [hGC], rax
        cinvoke libx11.XSetForeground, [hdisplay], [hGC], $000000
        cinvoke libx11.XSetBackground, [hdisplay], [hGC], $ffffff
.msg_pump:
        cinvoke libx11.XNextEvent, [hdisplay], event
        jmp     .msg_pump
        call    Xshutdown
.failShow:
.failCreateWindow:
.failXserver:
        mov     [con_handle],2
        mov     esi,_error
        call    display_string
        mov     al,-1
exit_program:
        movzx   edi,al
        lcall   sys_exit,edi
Xshutdown:
        cinvoke libx11.XFreeGC, [hdisplay], [hGC]
        cinvoke libx11.XDestroyWindow, [hwnd], [hdisplay]
        cinvoke libx11.XSetErrorHandler, [oError]
        xor     eax, eax
        retn

display_string:
        mov     rdi,rsi
        or      ecx,-1
        xor     al,al
        repne   scasb
        neg     ecx
        sub     ecx,2
        lcall   sys_write,[con_handle],rsi,rcx
        retn

segment readable writeable
        _title TCHAR 'Linux64 Xlib GUI program template',0
        _error TCHAR 'Startup failed.',0
        con_handle      dd 0
        oError          dd 0
        hGC             dq 0
        hwnd            dq 0
        hdisplay        dq 0
        event           rb $C0
полный исходник со всеми макросами, константами и структурами - Linux32(not only 32 anymore) Xlib GUI program template

НУЖНА сборка Линукс х64 с xlib на борту для теста бинарника!!!!!! что посоветуете?

Оффлайн yaleks

  • Мастер
  • ***
  • Сообщений: 5 440
rpm -qf /usr/lib64/libX11.so.6
libX11-1.6.7-alt1.x86_64

6 гигов не надо - https://mirror.yandex.ru/altlinux-starterkits/release/ (например *icewm*x86_64.iso ), там доставить fasm и возможно libX11-devel пакеты.
« Последнее редактирование: 13.06.2020 11:31:45 от yaleks »

Оффлайн ProMiNick

  • Завсегдатай
  • *
  • Сообщений: 6
    • Email
rpm -qf /usr/lib64/libX11.so.6
libX11-1.6.7-alt1.x86_64

6 гигов не надо - https://mirror.yandex.ru/altlinux-starterkits/release/ (например *icewm*x86_64.iso ), там доставить fasm и возможно libX11-devel пакеты.
https://yadi.sk/i/gZVAFLt3s2v87g картинка
в ней открыто окно поиска - Xlib нет ни в либ ни в либ64. Не там ищу?
в ней открыто окно консоли -
[altlinux@localhost ~]$ rpm -qf /usr/lib64/libX11.so.6
error: file usr/lib64/libx11.so.6: No such file or directory
[altlinux@localhost ~]$ libX11-1.6.7-alt1.x86_64
bash: libX11-1.6.7-alt1.x86_64: command not found
[altlinux@localhost ~]$ x6

ну и сам мой файлик для теста весом 1,9кб в загрузках

Оффлайн yaleks

  • Мастер
  • ***
  • Сообщений: 5 440
su -
apt-get update
apt-get install libX11
но странно что её нет.

Оффлайн ProMiNick

  • Завсегдатай
  • *
  • Сообщений: 6
    • Email
su -
apt-get update
успешно

[root@localhost ~]# apt-get install libX11
Reading Package Lists ... Done
Building Dependency Tree ... Done
E: Couldn`t find package libx11
[root@localhost ~]#

Зато в usr/lib64 теперь вижу ее
« Последнее редактирование: 13.06.2020 18:41:45 от ProMiNick »

Оффлайн andrew_b

  • Давно тут
  • **
  • Сообщений: 452
Что-то вы нас обманываете.

в ней открыто окно поиска - Xlib нет ни в либ ни в либ64. Не там ищу?
Потому что libx11 != libX11.

[altlinux@localhost ~]$ rpm -qf /usr/lib64/libX11.so.6
error: file usr/lib64/libx11.so.6: No such file or directory
Почему в ответе путь к файлу не начинается c / ?

[root@localhost ~]# apt-get install libX11
Reading Package Lists ... Done
Building Dependency Tree ... Done
E: Couldn`t find package libx11
Опять-таки, почему в ответе libx11, если в запросе libX11?

Оффлайн yaleks

  • Мастер
  • ***
  • Сообщений: 5 440
su -
apt-get update
успешно
apt-repoчто говорит?

Оффлайн yaleks

  • Мастер
  • ***
  • Сообщений: 5 440
Сдается мне что у топикстартера трюк не выйдет, т.к. в альте fasm похоже не умеет в 64 бита...
apt-get install fasm
Чтение списков пакетов... Завершено
Построение дерева зависимостей... Завершено
Выбрано i586-fasm.32bit для 'fasm'
Следующие дополнительные пакеты будут установлены:
  i586-fasm.32bit i586-glibc-core.32bit

Хотя может он и умеет делать 64 битные elf...

Оффлайн ProMiNick

  • Завсегдатай
  • *
  • Сообщений: 6
    • Email
Сдается мне что у топикстартера трюк не выйдет,
да, ничего не происходит. Скорее всего в моем файле что то не так.
Одна разница, в 32 битном линукс приложение использующее хлиб открывал 2м кликом, под другим Линукс, запуска Х-терминала не требовалось.
А тут требуется запуск терминала, проверил на нефасмовом фасмлибе также.