LibreOffice diegimas i embedded sistema

T
Techtronic
Mindaugas N.
  • 17 Kov '15

Prireike instaliuoti LibreOffice i sistema kuri neturi tokiu kaip printeriu, scaneriu... Tai kaip ir tradicinis installas naudojant terminala, bet noriu parodyti kaip paleisti ja neturint reikalingu biblioteku.

Atsisiunciam LibreOffice:

mkdir -p ~/tmp
cd ~/tmp
wget http://download.documentfoundation.org/libreoffice/testing/4.4.2/rpm/x86/LibreOffice_4.4.2.1_Linux_x86_rpm.tar.gz
tar xfv LibreOffice_4.4.2.1_Linux_x86_rpm.tar.gz

Ispakuojame archyva:

tar xfv LibreOffice_4.4.2.1_Linux_x86_rpm.tar.gz
cd LibreOffice_4.4.2.1_Linux_x86_rpm/RPMS/
for file in *.rpm; 7z x $file
for file in *.cpio; cpio -idv < $file
rm *.rpm *.cpio

Ir "instaliuojame" i /opt (ten kur ir vieta tokioms programoms):

sudo mv opt/libreoffice4.4 /opt

Turetu veikti viskas puikiai jeigu yra reikalingos bibliotekos, paleidimas:

LD_LIBRARY_PATH="/opt/libreoffice4.4/ure/lib/:/lib:/usr/lib" /opt/libreoffice4.4/program/soffice

Patikriname ar reikalingas bibliotekas turime:

ldd /opt/libreoffice4.4/program/soffice.bin | grep 'found'

Pas mane raso, kad nerasta 'libcups.so.2', taigi toliau sufalsifikuosime sia biblioteka (shared library). Sukuriam faila fake.c ir jame:

void cupsAddOption() {}
void cupsEncryption() {}
void cupsFreeDests() {}
void cupsFreeOptions() {}
void cupsGetDests() {}
void cupsGetOption() {}
void cupsGetPPD() {}
void cupsMarkOptions() {}
void cupsPrintFile() {}
void cupsServer() {}
void cupsSetDests() {}
void cupsSetPasswordCB() {}
void cupsSetUser() {}
void cupsUser() {}
void ippPort() {}
void httpConnectEncrypt() {}

Surenkam shared library su komanda:

gcc -Wall -fPIC -c fake.c && gcc -shared -Wl,-soname,libcups.so.2 -o libcups.so.2 fake.o

Gausim faila libcups.so.2 kuri perkelkim i /opt/libreoffice4.4/ure/lib/. Tikrinam ar veikia dabar:

LD_LIBRARY_PATH="/opt/libreoffice4.4/ure/lib/:/lib:/usr/lib" /opt/libreoffice4.4/program/soffice

G
  • 17 Kov '15

Vau! Daug geros infos

Kaip sužinai, kokias funkcijas reikia apibrėžti fake.c?

T
Techtronic
Mindaugas N.
  • 17 Kov '15

@Ghost rašė:
Vau! Daug geros infos

Kaip sužinai, kokias funkcijas reikia apibrėžti fake.c?

Naudojant nm:

nm /opt/libreoffice4.4/program/libvcllo.so --undefined-only