Я собрал бинарник под х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 на борту для теста бинарника!!!!!! что посоветуете?