Dygresja wyodrębniona z wątku:
@robotox1 → tytuł roboczy, możesz zaproponować inny.
Dygresja wyodrębniona z wątku:
@robotox1 → tytuł roboczy, możesz zaproponować inny.
A w jaki sposób mogłbym to skompilować na binarny kod tak jak jest to w /usr/bin ? Większość programów instalowanych z pacmana/aur’a się tam znajduje i chciałbym się nauczyć jak zrobić coś podobnego.
Szczegółowej instrukcji nie podam, bo to dosyć złożone i… jej nie znam
Ale generalnie, najpierw musisz w jakimś języku programowania napisać jakiś program, który coś tam będzie robić. A następnie go skompilować, korzystając z odpowiedniego kompilatora.
Przykładowo, pisząc coś w języku C/C++ powinieneś skorzystać z jakiegoś kompilatora dla C/C++ wymienionego w wiki Archa.
A tu maszlistę innych języków/kompilatorów w Archu.
Powodzenia
@robotox1 -> skrypty piszesz po to, aby skryptami były. Jeżeli chcesz tworzyć binarki, to piszesz kod w odpowiednim języku i kompilujesz (są języki, których możesz użyć na oba sposoby). Język wybierasz w zależności od znajomości, potrzeb, etc. Przede wszystkim jednak, musisz sobie odpowiedzieć na pytanie: na co mi, to potrzebne; w jakim celu chcę, to robić?
Umiem programować głównie w Python, JavaScript i podstawy C++. Pierwszych dwóch języków nie skompiluje. Myślałem, że w /usr/bin znajdują się jakieś launchery do wszystkich programów, które są po prostu skompilowane i chciałem uzyskać podobny efekt na skrypt bash’a. W czym są zatem napisane podstawowe komendy linuxa typu ls, cd, pwd, whereis ?
@azja
Chcę przygotować się pod wydanie własnego pakietu, więc szukam odpowiedniego miejsca na prawidłowe umieszczenie go w systemie. Z tego co zauważyłem praktycznie wszystkie programy znajdują się w folderze /usr/bin, więc myślałem, że też będę musiał go tam umieścić.
Python? Przecież tworząc projekt, podstawowym plikiem jest setup.py
do instalacji programu z uwzględnieniem prostej konfiguracji:
try:
from setuptools import setup
except ImportError:
from distutils.core import setup
config = {
}
Po za tym kompilacja pythona jest możliwa do .exe
, pod linuxem jest zbędna przez wyżej podany przykład.
Większość komend linuxowych to czysty C
, jak i samo jądro linuxa.
Kompilacja Python’a - mimo że jest, to język skryptowy - jest jak najbardziej możliwa:
Na początek, aby nie mieszać w systemie, polecałbym /opt/
. Poza tym, upraszczasz sobie w ten sposób cały proces, bo nie musisz parcelować plików pomiędzy bin, lib i inne foldery, bo cały swój program masz w jednym (np. /opt/moj-prg/).
Dodam tylko że to mija się z celem.
Python został stworzony z myślą o otwartym kodzie i możliwością łatwej edycji.
Binarka czy kompilacja do .exe
nam to blokuje.
Jeśli już uparcie chcemy ukryć kod przed nieogarniętymi w Linuxie, udostępniamy plik *.pyc
. Mówię mało ogarniętych, bo jest możliwość dekompilacji. Kompilacja zaś wygląda następująco:
python(versia) -mcompileall .
python(versia) -mcompileall nazwa_katalogu
versia
podmieniamy wersję pythona w którym został napisany skrypt.Otworzy to nam katalog __pycache__
, gdzie znajdziemy plik *.pyc*
, który można udostępnić.
Jeśli nasz projekt obejmuje strukturę i ładnych parę linijek, binarkę tworzymy dla pliku setup.py
.
Jak już pisałem - język skryptowy po to jest, aby skryptem być, ale chcącemu nie zabraniam i o powody nie pytam. Choć na pewno warto zastanowić się nad stosowniejszym rozwiązaniem, czyli wyborem innego języka, np. C++ — @robotox1 -> jeżeli znasz już podstawy, to nic prostszego, jak rozwinąć się w tym kierunku. Aczkolwiek przedtem - o czym również wspominałem - warto zastanowić się nad odpowiednim językiem, do odpowiednich zadań.