Как собирать приложеньица под X11, чтобы хотя бы в пределах FreeBSD -- была "кросплатформенность" в бинарном виде. Желательно еще в виде одного файла, а не в виде вагончика библиотек. Но и с вагончиком можно (не проблема скрипт исталлятор написать).В общем начал деятельность по прогамированию в диком мире юникс. До этого только в микроконтроллерах и чуть-чуть в виндах кодил. (одноверменно с этим начал новый концепт С++ вместо С, хотя ООП, изучаю системно, что нельзя сказать об технологии копиляции и граф. библиотек под Unix ).
Соотв. вcякие компиляции делаю либо доверяя навороченным средам типа Qt4, либо делая недо-осмысленные кальки и комбинации с этих калек найденные в гугле в примерах для разных UNIXов.
То, что собранное под qt4 в 7.2 не заработало 4.11, но заработало в 8.0... меня как бы и не удивило.
А вот то, что когда я с qt перешел на "голый" xlib, и что собранное под 4.11 не заработало в 7.2 -- удивало. Причем каждый раз (когда вписывал все требуемые lib*so*N) "несовместимость" проявлялась ошибкой "Segmentation Fault \ Oшибка Сегментации"...
Прога (first.c)
#include <X11/Xlib.h> // Every Xlib program must include this
#include <unistd.h> // So we got the profile for 10 seconds#define NIL (0) // A name for the void pointer
main()
{
int blackColor = BlackPixel(dpy, DefaultScreen(dpy));
int whiteColor = WhitePixel(dpy, DefaultScreen(dpy));
Display *dpy = XOpenDisplay(NIL);
Window w = XCreateWindow(dpy, DefaultRootWindow(dpy), 0, 0,
200, 100, 0,
CopyFromParent, CopyFromParent, CopyFromParent,
NIL, 0);
XMapWindow(dpy, w);
XFlush(dpy);
sleep(10);
}
собираю (недоосознавая что я точно делаю и как это можно сделать по другому)
сс -o -first.aut first.c -lX11 -L/usr/X6R11/lib -I /usr/X6R11/include
Бинарник, собравшийся под 7.2, в 4.11 в конце концов выдал:
Segmentation Fault
Собраное под 4.11 -- в 7.2 (потребовав всего одну библиотеку libc.so.4):
Ошибка сегментации
А чем и как собирать, чтобы без этой фигни?
Если и на навороченном Qt можно собрать так, чтобы запускалось в каких угодно X11 терминалах, оконных менеджерах (типа blackbox) на разных по древности FreeBSD, то приму c oсобой благодарностью иемнно такие советы.
Хотя за любое понятное мне решение поставленной мной задачи -- пиво/мороженное: бесплатная доставка по советскому району.