Nie daję rady bo mój angielski jest taki sobie i nieinformatyczny.
- Ale z google translatorem costam rozumiesz ?
https://translate.google.pl/?hl=plNa potrzeby tego tematu zaczne od spamu:
1. Czy wiesz do czego to jest i czy tego potrzebujesz ?
na pewno przeczytales ze:
Dlaczego ten dokument?
Uaktualniłem mój iPhone 5s do iOS 10 i nie mogłem już pobierać z niego zdjęć. Było to dla mnie nie do przyjęcia, więc pracowałem nad odzyskaniem moich zdjęć. Ten dokument to moja historia (w Ubuntu 16.04).
Rozwiązaniem jest skompilowanie libimobiledevice i użycie ze źródła.
Publiczność
Dla kogo przeznaczony jest ten przewodnik ?
Kompilowanie oprogramowania jest tym, co uważam za zaawansowaną umiejętność Linuksa. Jeśli nie jesteś zainteresowany manipulowaniem przy systemie operacyjnym, ten przewodnik może nie być dla Ciebie. Jest wiele pojęć, których nie wyjaśniam lub nie objaśniam zwięźle, aby te instrukcje były krótkie (w porównaniu do wyjaśnienia wszystkiego).
Chociaż starałem się myśleć o początkujących podczas tworzenia tego przewodnika; ten przewodnik nie jest przeznaczony dla osób o słabym sercu. Jeśli wcześniej nie skompilowałeś oprogramowania, zalecam ćwiczenie wewnątrz VirtualBox, zanim spróbujesz tego w swoim prawdziwym systemie. Postępuj zgodnie z tym przewodnikiem na własne ryzyko, ponieważ nie mogę udzielać żadnych gwarancji w oparciu o nieznany indywidualny poziom umiejętności.
https://gist.github.com/samrocketman/70dff6ebb18004fc37dc5e33c259a0fc2. Odpowiedz na twoje pytanie:
Ja posiadam dystrybucje oparta na rpm ( choc to nie jest zbyt istotne )
Budowanie pakietu rpm ( przykladowo )
wyglada mniej wiecej tak ze uruchamiasz polecenie ktore czyta plik spec
-przykladowy plik rpm.spec
https://github.com/brnt/openresty-rpm-spec/blob/master/openresty.speci je wykonuje je w celu zbudowania pakietu rpm ( jak jakis skrypt )
w tym pliku spec masz np.
./configure --with-ipv6 --with-pcre-jit --with-http_geoip_module ...
Normalnie w plikach zamiast tego stosuje sie makra
przykladowo moge zobaczyc co robi makro
%configure w moim systemie
( polecenie rpm dziala tylko w dystrybucjach opartych o rpm )
$ rpm --eval=%configure
CFLAGS="${CFLAGS:--O2 -pipe -Wformat -Wp,-D_FORTIFY_SOURCE=2 -fstack-protector --param=ssp-buffer-size=4 -fomit-frame-pointer -march=i586 -mtune=generic -fasynchronous-unwind-tables}" ; export CFLAGS ;
CXXFLAGS="${CXXFLAGS:--O2 -pipe -Wformat -Wp,-D_FORTIFY_SOURCE=2 -fstack-protector --param=ssp-buffer-size=4 -fomit-frame-pointer -march=i586 -mtune=generic -fasynchronous-unwind-tables}" ; export CXXFLAGS ;
FFLAGS="${FFLAGS:--O2 -pipe -Wformat -Wp,-D_FORTIFY_SOURCE=2 -fstack-protector --param=ssp-buffer-size=4 -fomit-frame-pointer -march=i586 -mtune=generic -fasynchronous-unwind-tables}" ; export FFLAGS ;
LDFLAGS="$LDFLAGS -Wl,--as-needed -Wl,--no-undefined -Wl,-z,relro -Wl,-O1 -Wl,--build-id"; export LDFLAGS ;
CONFIGURE_TOP="${CONFIGURE_TOP:-.}";
/usr/lib/rpm/rambo/force-as-needed-for-shared-lib-in-libtool ;
/usr/lib/rpm/rambo/drop-ld-no-undefined-for-shared-lib-modules-in-libtool ;
/usr/lib/rpm/rambo/fix-libtool-ltmain-from-overlinking ;
/usr/lib/rpm/rambo/fix-libtool-from-moving-options-after-libs $CONFIGURE_TOP ;
/usr/lib/rpm/rambo/fix-dlsearch-path-in-libtool-for-multilib $CONFIGURE_TOP lib ;
(cd $CONFIGURE_TOP; [ ! -f configure.in -a ! -f configure.ac ] || libtoolize --copy --force);
[ -f $CONFIGURE_TOP/configure.in -o -f $CONFIGURE_TOP/configure.ac ] &&
CONFIGURE_XPATH="--x-includes=/usr/include --x-libraries=/usr/lib"
$CONFIGURE_TOP/configure i586-mandriva-linux-gnu \
--program-prefix= \
--prefix=/usr \
--exec-prefix=/usr \
--bindir=/usr/bin \
--sbindir=/usr/sbin \
--sysconfdir=/etc \
--datadir=/usr/share \
--includedir=/usr/include \
--libdir=/usr/lib \
--libexecdir=/usr/lib \
--localstatedir=/var \
--sharedstatedir=/usr/com \
--mandir=/usr/share/man \
--infodir=/usr/share/info \
$CONFIGURE_XPATH
To sa ustawienia jak ma byc pakiet ( przygotowany / kompilowany ), gdzie zainstalowany.
( przyjrzyj sie zwlaszcza sciezkom, nazwy zmiennych sa podobne )
Duzymi literami sa zazwyczaj wypisane zmienne srodowiskowe.
Przykladowo zmienna srodowiskowa PATH moge sprawdzic tak
$ echo $PATH
/bin:/usr/bin:/sbin:/usr/sbin:/usr/games:/usr/lib/qt4/bin:/usr/lib/qt5/bin:/home/x/bin:/usr/lib/qt5/bin
Powinienes takze wiedziec gdzie system powinien umieszczac jaki plik
http://refspecs.linuxfoundation.org/FHS_3.0/fhs/index.htmlAle po co te makra ?
Taki spec by zajmowal duzo miejsca, a z makrami plik rpm.spec jest duzo mniejszy.
Taki przyklad:
Zamiast pisac
moge napisac
Gdybys chcial poczytac o rpm to:
http://ftp.rpm.org/max-rpm/https://wiki.fedora.pl/wiki/RpmbuildCiekawa strona wraz z lista makr byla i znikla wraz z bankructwem i upadkiem Mandrivy Linux

Strona chyba nie byla na serwerze Mandrivy, ale ktos chyba jej uzywal.
Strona byla fajna po pokazywala roznice w makrach miedzy trzema najwiekszymi dystrybucjami rpm.
Po zatym nie musialem sprawdzac w terminalu, co dane makro robi, a chodzi glownie o sciezki.
Czyli ze jak ?
Czyli ten gosciu o ktorego pisales ustawil sobie zmienne gdzie ma zainstalowac sie jego program.PS: Mam nadzieje ze choc odrobine to co napisalem ma sens i nie pisalem nie potrzebnie.
EdytowaneJak szukac zmiennych środowiskowych potrzebnych do zmiany instalacji danego pliku ?
- Wszystko zalezy jakiego narzedzia uzywasz do budowania / kompilowania programu
./configure --help
make --help
qmake --help
cmake --help
...
Wiecej o zmiennych srodowiskowych
http://pl.docs.pld-linux.org/konfiguracja_zmienne_srodowiskowe.htmlEdytowanetaki przykladowy fragment z pliku kadu.spec ( z OpenSuse ) pokazujacy uzyte zmienne / opcje do kompilacji przy pomocy narzedzia cmake.
cmake \
%if %{_lib} == "lib64"
-DLIB_SUFFIX=64 \
%endif
-DCMAKE_BUILD_TYPE=RelWithDebInfo \
-DCMAKE_INSTALL_PREFIX=%{_prefix} \
-DWITH_ENCHANT=ON
Jeszcze cosJak rozumieć potrzebę wyznaczenia ww ścieżek?
W tekscie ktory wkleiles pisze
Ważne! Zdefiniowanie PATH i LD_LIBRARY_PATH jest wazne, ponieważ jest to środowisko uruchomieniowe libimobiledevice
... do naprawy montowania urządzeń iOS 10.
https://translate.google.pl/?hl=plOd siebie dodam ze definiowanie PATH jest troche niebezpieczne.
PATH to zmienna gdzie system szuka binarek.
Czyli zamiast uruchamiac w terminalu synaptic w ten sposob
moge poprostu uruchomic wten sposob
Nadpisanie PATH moze wiec spowodowac ze niektore programy z menu i niektore skrypty w systemie przestana dzialac.
Edytowanebardziej konkretnie o zmiennej srodowiskowej PATH
https://www.cyberciti.biz/faq/unix-linux-adding-path/Ta zmienna jest juz ustalana przy starcie systemu.
Edytujac plik .bashrc w katalogu uzytkownika mozesz dla tego uzytkownika ( i tylko dla niego ) dodac kolejne sciezki gdzie system ma szukac binarek.
Np.
export PATH="${HOME}/usr/bin:${PATH}"
Zostala utworzona zmienna
PATH = nowa sciezka ${HOME}/usr/bin + stare / poprzednie ustawione sciezki $PATHDzieki temu system wie ze binarki moze takze znalesc w katalogu domowym ${HOME}/usr/bin/
EdytowaneNa samym poczatku sie pomylilem,
To co podal autor, nie chodzi o miejsce instalacji, ale zeby system odpowiednio te pliki znalazl.
Normalnie tego nie trzeba robic. On to zrobil bo zainstalowal program w katalogu domowym.
Bez tego, jego system nie znajdzie np. programu bez podania sciezki.
Widze to po podanym
${HOME} w jego sciezkach.
Miejsce docelowe instalacji mogl zmienic zmieniajac opcje np. prefix
Masz taka sama opcje w makro %configure.
i tak jak wspomnialem, te zmienne znajdziesz np, w ./configure --help
Natomiast zmienne ujete wyzej w .bashrc ,
pokazuja systemowi gdzie ma szukac dany plik.
PKG_CONFIG_PATH = miejsca w ktorym sa pliki konfiguracyjne
CPATH = miejsca w ktorym sa naglowki ( pliki *.h ) potrzebne do kompilacji programow
MANPATH = miejsca w ktorym sa manual-e
PATH = miejsca w ktorym sa binarki
LD_LIBRARY_PATH = miejsca w ktorym sa biblioteki