Forum Linux.pl

Bazar / Ogłoszenia => Zlecę => Wątek zaczęty przez: 1709 w 2017-05-13, 19:52:26

Tytuł: Czy za darmo ktos przekonwertuje sit z 32bit na 64bit ?
Wiadomość wysłana przez: 1709 w 2017-05-13, 19:52:26
Czy za darmo ktos przekonwertuje sit z 32bit na 64bit ?

Cos takiego
http://murga-linux.com/puppy/viewtopic.php?t=76431

Sit  sluzy to tworzenia ikonki w tray-u dla gtkdialog, ( jest to GUI dla basha )
 poniewaz gtkdialog nie ma kto za bardzo rozwijac, albo rozwija to bardzo wolno,
to taka funkcjonalnosc tam nie istnieje.
Alternatywa to sit albo zainstalowanie  gtkdialog + yad
 ( jesli chodzi o Debiana to wszystko trzeba kompilowac bo nie ma gotowych pakietow )

Source Code:
http://murga-linux.com/puppy/viewtopic.php?t=76431

W paczce sa pliki:

sit-1.0.tar.gz
├── build
├── sit
└── sit.c

Problem  w tym ze gotowa binarka nie dziala na Debianie
$ ./sit 1000
bash: ./sit: Nie ma takiego pliku ani katalogu

 a kod zrodlowy i skrypt sa przygotowane  dla 32bit ( i zainstalowanie multilib zeby skompilowac to za malo ).

Najlepiej jakby ktos to przerobil tak zeby zostalo te 32bit i po wykryciu procesora 64bit kompilowalo na 64bit
 ( moze powstac nowy plik  sit64.c  , mnie to obojetne ).

Pierwsze co mi sie nasunelo to w pliku build
- dodac owe wsparcie 64bit

if $(uname -m | grep '64'); then
  echo "ARCH: 64-bit"
else
  echo "ARCH: 32-bit"
fi
oraz zamieniajac -march=i486 -mtune=i686 na -m64

zmieniony plik build
#!/bin/sh

if [ `getconf LONG_BIT` = "64" ]; then
echo "ARCH: 64-bit"

#compile
gcc `pkg-config gtk+-x11-2.0 --cflags` -DGTK_NO_CHECK_CASTS -DG_DISABLE_CAST_CHECKS \
-Os -fmerge-all-constants -mno-accumulate-outgoing-args -m64 \
-Wl,-O2,--gc-sections,--as-needed,--sort-common,-s \
sit.c -o sit -lgtk-x11-2.0 && strip --strip-all -R .note -R .comment sit
else
echo "ARCH: 32-bit"

#compile
gcc `pkg-config gtk+-x11-2.0 --cflags` -DGTK_NO_CHECK_CASTS -DG_DISABLE_CAST_CHECKS \
-Os -fmerge-all-constants -mno-accumulate-outgoing-args -march=i486 -mtune=i686 \
-Wl,-O2,--gc-sections,--as-needed,--sort-common,-s \
sit.c -o sit -lgtk-x11-2.0 && strip --strip-all -R .note -R .comment sit
fi





#run a test
./sit 1000 /usr/share/mini-icons/mini-dog.xpm "sit test" "leftclick" "rightclick" 2>/dev/null | \
while read LINE; do
case "$LINE" in
 *)Xdialog --under-mouse --infobox "action=$LINE" 0 0 &
 ;;
esac
done

no i teraz
$ ./build
ARCH: 64-bit
/usr/bin/ld: /tmp/ccigz2D8.o: undefined reference to symbol 'g_signal_connect_data'
//usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0: error adding symbols: DSO missing from command line
collect2: error: ld returned 1 exit status
No i tu trzeba by pogrzebac w kodzie C i gtk, ale ja tego nie znam.   ( plik  sit.c lub sparwdzic flagi w pliku build )

Edytowane:
Znalazlem jeszcze taki kod i kompiluje sie, ale po kliknieciu prawym ikona znika.
http://murga-linux.com/puppy/viewtopic.php?p=651853#651853
 
Tytuł: Odp: Czy za darmo ktos przekonwertuje sit z 32bit na 64bit ?
Wiadomość wysłana przez: Paweł Kraszewski w 2017-05-13, 23:54:58
Wystarczy poprawić Build tak (wtedy kompiluje się na właściwą platformę automatycznie):
gcc `pkg-config gtk+-x11-2.0 --cflags` -DGTK_NO_CHECK_CASTS -DG_DISABLE_CAST_CHECKS \
sit.c -o sit `pkg-config gtk+-x11-2.0 --libs` && strip --strip-all -R .note -R .comment sit


Ale - choć się kompiluje - to nie działa. W każdym razie u mnie, na Ubuntu Zesty nic się nie dzieje: żadne ikony się nie pojawiają - mimo podania ścieżki do istniejącego pliku ikony. Weź pod uwagę, że ten programik ma już 5 lat i mogło się coś pozmieniać (pomijając ofensywę GTK3)
Tytuł: Odp: Czy za darmo ktos przekonwertuje sit z 32bit na 64bit ?
Wiadomość wysłana przez: 1709 w 2017-05-14, 08:38:48
Dzieki twojej pomocy u mnie działa, Debian 8.8    64bit  ( środowisko Mate 1.8.1 ) ( gcc version 4.9.2 (Debian 4.9.2-10)  )
 jak chcesz to sprawdz jeszcze raz, spakowane pliki w zalaczniku.  ( Jak Ci nie bedzie działać, to trudno )
Dziękuję!  ;D

1. Skompiluj skryptem build aby otrzymac binarke sit,
2. Potem uruchom z terminala skrypt "apka"
i klikajac w ikone w trayu lewym i prawym powinienes otrzymac cos takiego

$ ./apka
Nacisnales rightclick
Nacisnales leftclick
Nacisnales rightclick
Nacisnales leftclick
Nacisnales rightclick
Nacisnales leftclick
Nacisnales rightclick
To jest tylko przyklad i zamiast echo "Nacisnales rightclick" czy  echo "Nacisnales leftclick" mozna sobie tam ( w skrypcie  apka ) ustawić dowolną aplikacje czy skrypt.
Przydało by sie jeszcze tylko przy rightclick menu kontekstowe.

Wczoraj ( przy poszukiwaniach ) jeszcze zauwazylem że jest specjalna  aplikacja alltray ,  do tworzenia ikon tray
ale za pierwszym razem nie działało i ładuje się długo to mi sie nie podoba.

Edytowane:
Z tego poradnika http://zetcode.com/gui/gtk2/menusandtoolbars/
wyczytalem ze zeby zrobic menu kontekstowe wystarczy dodać nowe okno ( w gtk ), próbowałem ale coś robie źle,
za to jeszcze tego musze spróbować http://blog.puppylinux.com/?viewDetailed=00030
Tytuł: Odp: Czy za darmo ktos przekonwertuje sit z 32bit na 64bit ?
Wiadomość wysłana przez: 1709 w 2017-05-15, 09:44:42
pliki.v3.tar.gz w zalączniku.

- dodałem menu kontekstowe do ikony w tray-u ( stworzone w  gtkdialog )
- okienko które pokaże się po kliknięciu lewym klawiszem myszy ( stworzone w  gtkdialog )

No ale nie działa to idealnie,
- Jezeli klikne prawym myszą i nie trafie lewym klawiszem w okno kontekstowe, to czasami otwiera sie okno jakbym kliknął lewym klawiszem w ikonke w tray-u.
- Menu kontekstowe ( po kliknieciu prawym w ikonke ) czasami pojawia sie w górnym rogu ekranu ( zamiast obok kursora myszy )

PS: Jesli ktoś potrafi takie menu kontekstowe, uniwersalne do skryptów napisać w gtk dla ikony w tray-u i bedzie działać lepiej,
to niech dopisze.