Nowe posty

Autor Wątek: Problem z kompilowaniem Gnapi  (Przeczytany 2548 razy)

Offline

  • Users
  • Stały bywalec
  • ***
  • Wiadomości: 170
    • Zobacz profil
Problem z kompilowaniem Gnapi
« dnia: 2011-12-17, 23:10:37 »
Próbuję skompilować program gnapi do pobrania tutaj

Mój system operacyjny to OpenSuSE 12.1 64bit

W instrukcji instalacji tego programu czytamy:

Dependencies

Gnapi needs following *development* packages:
- gtk2.0,
- libnotify,
- libsoup2.4,
- libxml2,
- glib2.0,
- gconf2.0,
- gmodule2.0,
- libnautilus-extension,
- gnome-vfs,
- libavcodec, libavutil, libavformat (or ffmpeg or libav).

You need also:
- C compiler (gcc or clang),
- ld,
- strip,
- make,
- install,
- pkg-config.
These programs should be part of binutils and/or build-essentials packages.



 *** Compilation/Installation under Linux

Make sure you've installed all packages mentioned above!

After that type:

make
sudo make install

Compile with Clang (or other compiler):

make CC=clang

Install to other dir:

sudo make install DESTDIR=/home/me/programs/gnapi
Ja mam takie pakiety

gtk2.0
gienek@stacjonarny:~> rpm -qa | grep gtk2-devel
gtk2-devel-2.24.7-2.5.1.x86_64
gienek@stacjonarny:~>
libnotify
gienek@stacjonarny:~> rpm -qa |grep libnotify-devel
libnotify-devel-0.7.4-3.1.2.x86_64
gienek@stacjonarny:~>
libsoup2.4
gienek@stacjonarny:~> rpm -qa | grep libsoup-devel 
libsoup-devel-2.36.1-2.1.3.x86_64
gienek@stacjonarny:~>
libxml2
gienek@stacjonarny:~> rpm -qa | grep libxml2-devel
libxml2-devel-2.7.8+git20110708-3.1.2.x86_64
gienek@stacjonarny:~>
glib2.0
gienek@stacjonarny:~> rpm -qa | grep glib2-devel
glib2-devel-2.30.1-2.1.2.x86_64
glib2-devel-static-2.30.1-2.1.2.x86_64
gienek@stacjonarny:~>
gconf2.0
gienek@stacjonarny:~> rpm -qa | grep gconf2-devel
gconf2-devel-3.2.0-2.2.2.x86_64
gienek@stacjonarny:~>
gmodule2.0
gienek@stacjonarny:~> rpm -qa | grep gmodule
libgmodule-2_0-0-32bit-2.30.1-2.1.2.x86_64
libgmodule-2_0-0-2.30.1-2.1.2.x86_64
gienek@stacjonarny:~>
niestety nie mogę znaleźć pakietu gmodule-devel ale czy to nie jest to samo co glib2-devel?


libnautilus-extension
gienek@stacjonarny:~> rpm -qa | grep nautilus-devel
nautilus-devel-3.2.1-2.1.2.x86_64
gienek@stacjonarny:~>
gnome-vfs
gienek@stacjonarny:~> rpm -qa | grep gnome-vfs2-devel
gnome-vfs2-devel-2.24.4-7.1.2.x86_64
gienek@stacjonarny:~>
libavcodec, libavutil, libavformat (or ffmpeg or libav)
gienek@stacjonarny:~> rpm -qa | grep libffmpeg-devel
libffmpeg-devel-0.9-1.1.x86_64
gienek@stacjonarny:~>
libavcodec, libavutil, libavformat (or ffmpeg or libav)
gienek@stacjonarny:~> rpm -qa | grep libavahi-devel
libavahi-devel-0.6.30-10.1.3.x86_64
gienek@stacjonarny:~>
gcc
gienek@stacjonarny:~> rpm -qa | grep gcc
gcc46-fortran-4.6.2_20111026-1.1.4.x86_64
gcc46-4.6.2_20111026-1.1.4.x86_64
libgcc46-32bit-4.6.2_20111026-1.1.4.x86_64
gcc-objc-4.6-15.1.3.x86_64
gcc33-fortran-3.3.3-30.25.2.x86_64
gcc46-c++-4.6.2_20111026-1.1.4.x86_64
gcc-gij-4.6-15.1.3.x86_64
gcc-4.6-15.1.3.x86_64
gcc-obj-c++-4.6-15.1.3.x86_64
gcc46-objc-4.6.2_20111026-1.1.4.x86_64
gcc-fortran-4.6-15.1.3.x86_64
gcc-c++-4.6-15.1.3.x86_64
gcc46-obj-c++-4.6.2_20111026-1.1.4.x86_64
gcc33-3.3.3-30.25.2.x86_64
libgcc46-4.6.2_20111026-1.1.4.x86_64
gcc46-gij-4.6.2_20111026-1.1.2.x86_64
gcc33-c++-3.3.3-30.25.2.x86_64
gienek@stacjonarny:~>
clang
gienek@stacjonarny:~> rpm -qa | grep clang
llvm-clang-devel-3.0-1.5.1.x86_64
llvm-clang-3.0-1.5.1.x86_64
gienek@stacjonarny:~>
ld
nie mam pojęcia o co chodzi z tym ld. Jakieś sugestie?

strip
gienek@stacjonarny:~> rpm -qa | grep Strip
perl-HTML-Strip-1.06-4.5.x86_64
gienek@stacjonarny:~>
make
gienek@stacjonarny:~> rpm -qa | grep make
make-3.82-147.1.2.x86_64
gienek@stacjonarny:~>
install
gienek@stacjonarny:~> rpm -qa | grep install
install-initrd-branding-openSUSE-13.20-1.4.1.x86_64
checkinstall-1.6.2-14.1.2.x86_64
autoyast2-installation-2.21.4-2.1.2.noarch
libksuseinstall1-4.7.2-5.2.2.x86_64
yast2-installation-2.21.28-125.1.noarch
install-initrd-13.20-1.4.1.x86_64
gienek@stacjonarny:~>
pkg-config
gienek@stacjonarny:~> rpm -qa | grep pkg-config
pkg-config-0.25-7.1.5.x86_64
gienek@stacjonarny:~>
To wszystko co mam z tego co jest zapisane w pliku INSTALL. Jeśli powinienem coś doinstalować to proszę o podpowiedź.


Gdy wydaję polecenie make to pojawia mi się błąd

gienek@stacjonarny:~/Pulpit/gnapi-0.2.2> make -j5
cc -c ./src/gengine.c -o ./src/gengine.o -g -Wall -O2 -Wformat-security `pkg-config --cflags gtk+-2.0 gconf-2.0 gnome-vfs-2.0 libsoup-2.4 gmodule-2.0 libnautilus-extension`
cc -c ./src/plugins/napiprojekt/napi.c -o ./src/plugins/napiprojekt/napi.o -g -Wall -O2 -Wformat-security `pkg-config --cflags gtk+-2.0 gconf-2.0 gnome-vfs-2.0 libsoup-2.4 gmodule-2.0 libnautilus-extension` -fPIC
cc -c ./src/plugins/opensubtitles/os.c -o ./src/plugins/opensubtitles/os.o -g -Wall -O2 -Wformat-security `pkg-config --cflags gtk+-2.0 gconf-2.0 gnome-vfs-2.0 libsoup-2.4 gmodule-2.0 libnautilus-extension` -fPIC
cc -c ./src/plugins/nautilus/gnapi_nautilus.c -o ./src/plugins/nautilus/gnapi_nautilus.o -g -Wall -O2 -Wformat-security `pkg-config --cflags gtk+-2.0 gconf-2.0 gnome-vfs-2.0 libsoup-2.4 gmodule-2.0 libnautilus-extension` -fPIC
./src/plugins/nautilus/gnapi_nautilus.c: In function ‘get_file_items’:
./src/plugins/nautilus/gnapi_nautilus.c:51:17: warning: variable ‘gnapi’ set but not used [-Wunused-but-set-variable]
./src/gengine.c: In function ‘get_movie_info’:
./src/gengine.c:84:2: warning: ‘av_open_input_file’ is deprecated (declared at /usr/include/libavformat/avformat.h:1430) [-Wdeprecated-declarations]
./src/gengine.c:86:2: warning: ‘av_find_stream_info’ is deprecated (declared at /usr/include/libavformat/avformat.h:1476) [-Wdeprecated-declarations]
./src/gengine.c:96:2: warning: ‘avcodec_open’ is deprecated (declared at /usr/include/libavcodec/avcodec.h:4073) [-Wdeprecated-declarations]
./src/gengine.c:75:8: warning: variable ‘streams’ set but not used [-Wunused-but-set-variable]
cc ./src/plugins/nautilus/gnapi_nautilus.o -shared -Wl,-export-dynamic,-soname,libnautilus-gnapi.so.1 -o libnautilus-gnapi.so -g -Wall -O2 -Wformat-security `pkg-config --cflags gtk+-2.0 gconf-2.0 gnome-vfs-2.0 libsoup-2.4 gmodule-2.0 libnautilus-extension` -fPIC `pkg-config --libs libnautilus-extension gtk+-2.0` -fPIC
cc -c ./src/plugins/napiprojekt/repbad.c -o ./src/plugins/napiprojekt/repbad.o -g -Wall -O2 -Wformat-security `pkg-config --cflags gtk+-2.0 gconf-2.0 gnome-vfs-2.0 libsoup-2.4 gmodule-2.0 libnautilus-extension` -fPIC
cc -c ./src/plugins/opensubtitles/os_config.c -o ./src/plugins/opensubtitles/os_config.o -g -Wall -O2 -Wformat-security `pkg-config --cflags gtk+-2.0 gconf-2.0 gnome-vfs-2.0 libsoup-2.4 gmodule-2.0 libnautilus-extension` -fPIC
cc -c ./src/gplugins.c -o ./src/gplugins.o -g -Wall -O2 -Wformat-security `pkg-config --cflags gtk+-2.0 gconf-2.0 gnome-vfs-2.0 libsoup-2.4 gmodule-2.0 libnautilus-extension`
./src/gplugins.c: In function ‘upload_once_plugin’:
./src/gplugins.c:167:10: warning: variable ‘status’ set but not used [-Wunused-but-set-variable]
./src/gplugins.c: In function ‘upload_once’:
./src/gplugins.c:192:10: warning: variable ‘status’ set but not used [-Wunused-but-set-variable]
./src/gplugins.c: In function ‘report_bad’:
./src/gplugins.c:217:10: warning: variable ‘status’ set but not used [-Wunused-but-set-variable]
cc ./src/plugins/opensubtitles/os.o ./src/plugins/opensubtitles/os_config.o -shared -Wl,-soname,libopensub.so.1 -o libopensub.so -g -Wall -O2 -Wformat-security `pkg-config --cflags gtk+-2.0 gconf-2.0 gnome-vfs-2.0 libsoup-2.4 gmodule-2.0 libnautilus-extension` -fPIC `pkg-config --libs gtk+-2.0 libsoup-2.4` -fPIC
cc -c ./src/plugins/napiprojekt/sendsubs.c -o ./src/plugins/napiprojekt/sendsubs.o -g -Wall -O2 -Wformat-security `pkg-config --cflags gtk+-2.0 gconf-2.0 gnome-vfs-2.0 libsoup-2.4 gmodule-2.0 libnautilus-extension` -fPIC
cc -c ./src/interface.c -o ./src/interface.o -g -Wall -O2 -Wformat-security `pkg-config --cflags gtk+-2.0 gconf-2.0 gnome-vfs-2.0 libsoup-2.4 gmodule-2.0 libnautilus-extension`
cc -c ./src/plugins/napiprojekt/napi_config.c -o ./src/plugins/napiprojekt/napi_config.o -g -Wall -O2 -Wformat-security `pkg-config --cflags gtk+-2.0 gconf-2.0 gnome-vfs-2.0 libsoup-2.4 gmodule-2.0 libnautilus-extension` -fPIC
cc -c ./src/scan.c -o ./src/scan.o -g -Wall -O2 -Wformat-security `pkg-config --cflags gtk+-2.0 gconf-2.0 gnome-vfs-2.0 libsoup-2.4 gmodule-2.0 libnautilus-extension`
cc -c ./src/plugins/napiprojekt/napi_common.c -o ./src/plugins/napiprojekt/napi_common.o -g -Wall -O2 -Wformat-security `pkg-config --cflags gtk+-2.0 gconf-2.0 gnome-vfs-2.0 libsoup-2.4 gmodule-2.0 libnautilus-extension` -fPIC
cc -c ./src/gnapi.c -o ./src/gnapi.o -g -Wall -O2 -Wformat-security `pkg-config --cflags gtk+-2.0 gconf-2.0 gnome-vfs-2.0 libsoup-2.4 gmodule-2.0 libnautilus-extension`
cc ./src/plugins/napiprojekt/napi.o ./src/plugins/napiprojekt/repbad.o ./src/plugins/napiprojekt/sendsubs.o ./src/plugins/napiprojekt/napi_config.o \\
        ./src/plugins/napiprojekt/napi_common.o -shared -Wl,-soname,libnapi.so.1 -o libnapi.so -g -Wall -O2 -Wformat-security `pkg-config --cflags gtk+-2.0 gconf-2.0 gnome-vfs-2.0 libsoup-2.4 gmodule-2.0 libnautilus-extension` -fPIC `pkg-config --libs gtk+-2.0 gconf-2.0 libsoup-2.4`
cc -c ./src/http_post.c -o ./src/http_post.o -g -Wall -O2 -Wformat-security `pkg-config --cflags gtk+-2.0 gconf-2.0 gnome-vfs-2.0 libsoup-2.4 gmodule-2.0 libnautilus-extension`
cc ./src/gnapi.o ./src/gengine.o ./src/gplugins.o ./src/interface.o ./src/scan.o ./src/http_post.o -o gnapi -g -Wall -O2 -Wformat-security `pkg-config --cflags gtk+-2.0 gconf-2.0 gnome-vfs-2.0 libsoup-2.4 gmodule-2.0 libnautilus-extension` `pkg-config --libs gtk+-2.0 gconf-2.0 gnome-vfs-2.0 libsoup-2.4 gmodule-2.0` -lnotify -lavformat -Wl,-export-dynamic
/usr/lib64/gcc/x86_64-suse-linux/4.6/../../../../x86_64-suse-linux/bin/ld: ./src/gplugins.o: undefined reference to symbol 'dlsym@@GLIBC_2.2.5'
/usr/lib64/gcc/x86_64-suse-linux/4.6/../../../../x86_64-suse-linux/bin/ld: note: 'dlsym@@GLIBC_2.2.5' is defined in DSO /lib64/libdl.so.2 so try adding it to the linker command line
/lib64/libdl.so.2: could not read symbols: Invalid operation
collect2: ld returned 1 exit status
make: *** [gnapi] Błąd 1
gienek@stacjonarny:~/Pulpit/gnapi-0.2.2>
Nie bardzo wiem o co chodzi. Z góry dziękuję pomoc.

EDIT -18.12.2011 - ROZWIĄZANIE

W końcu udało mi się rozwiązać problem.

gnapi 0.2.2 jest wersją ciut przestarzałą jak na OpenSuSE 12.1 i zawiera dość stare zależności. Aby zainstalować Gnapi należy pobrać najnowsze źródła za pomocą svn. Aby to zrobić tworzymy jakiś katalog, wchodzimy do niego i wydajemy polecenie:

svn co https://gnapi.svn.sourceforge.net/svnroot/gnapi gnapi
i czekamy aż pobierze nam źródła.

Następnie wchodzimy do katalogu ze źródłami i wydajemy polecenie

./configure
Jeśli konfigurator zasygnalizuje nam, że czegoś brakuje to należy to doinstalować. Gdy konfiguracja zakończy się pomyślnie to wydajemy polecenie

make -jx
zamiast literki x wstawiamy (aby nie przesadzić) cyfrę o jeden większą niż ilość rdzeni w naszym procesorze. Na przykład jeśli posiadamy procesor czterordzeniowy to wydajemy polecenie make -j5. Skutecznie przyśpiesza to proces kompilacji.

Po prawidłowy skompilowaniu programu tworzymy pakiet rpm. W tym celu logujemy się jako root

su
hasło
Następnie będąc zalogowanym jako root wydajemy polecenie które tworzy pakiet rpm czyli

checkinstall
Podajemy wszystkie dane aby nasz pakiet rpm miał jakiś ludzką nazwę i opis. Podczas tworzenia pakietu program checkinstall wywali prawdopodobnie kilka błędów odnośnie braku katalogów. Musimy je utworzyć w systemie i cały proces tworzenia pakietu zacząć od nowa. Czyli od momentu wydania polecenia checkinstall.

Gdy już utworzymymy pakiet rpm to instalujemy go za pomocą polecenia rpm -i nazwa_pakietu. I to w zasadzie wszystko. Po uruchomieniu programu musimy go skonfigurować ale to już inna bajka. U mnie wygląda to tak

gienek@stacjonarny:~> rpm -qa | grep gnapi
gnapi-0.3.0-1.x86_64
gienek@stacjonarny:~>
gienek@stacjonarny:~> rpm  -ql gnapi-0.3.0-1.x86_64
/usr
/usr/doc
/usr/doc/gnapi
/usr/doc/gnapi/ABOUT-NLS
/usr/doc/gnapi/AUTHORS
/usr/doc/gnapi/COPYING
/usr/doc/gnapi/ChangeLog
/usr/doc/gnapi/INSTALL
/usr/doc/gnapi/NEWS
/usr/doc/gnapi/README
/usr/doc/gnapi/TODO
/usr/doc/gnapi/docs
/usr/doc/gnapi/docs/.svn
/usr/doc/gnapi/docs/.svn/all-wcprops
/usr/doc/gnapi/docs/.svn/entries
/usr/doc/gnapi/docs/.svn/prop-base
/usr/doc/gnapi/docs/.svn/prop-base/copyright.svn-base
/usr/doc/gnapi/docs/.svn/props
/usr/doc/gnapi/docs/.svn/text-base
/usr/doc/gnapi/docs/.svn/text-base/Makefile.am.svn-base
/usr/doc/gnapi/docs/.svn/text-base/Makefile.in.svn-base
/usr/doc/gnapi/docs/.svn/text-base/copyright.svn-base
/usr/doc/gnapi/docs/.svn/text-base/gnapi.1.svn-base
/usr/doc/gnapi/docs/.svn/tmp
/usr/doc/gnapi/docs/.svn/tmp/prop-base
/usr/doc/gnapi/docs/.svn/tmp/props
/usr/doc/gnapi/docs/.svn/tmp/text-base
/usr/doc/gnapi/docs/Makefile
/usr/doc/gnapi/docs/Makefile.am
/usr/doc/gnapi/docs/Makefile.in
/usr/doc/gnapi/docs/copyright
/usr/doc/gnapi/docs/gnapi.1
/usr/lib64
/usr/lib64/nautilus
/usr/lib64/nautilus/extensions-3.0
/usr/lib64/nautilus/extensions-3.0/libnautilus-gnapi.so
/usr/local
/usr/local/bin
/usr/local/bin/gnapi
/usr/local/lib64
/usr/local/lib64/gnapi
/usr/local/lib64/gnapi/plugins
/usr/local/lib64/gnapi/plugins/libnapi.so
/usr/local/lib64/gnapi/plugins/libnapisyinfo.so
/usr/local/lib64/gnapi/plugins/libopensub.so
/usr/local/share
/usr/local/share/Thunar
/usr/local/share/Thunar/sendto
/usr/local/share/Thunar/sendto/gnapi-kde.desktop
/usr/local/share/applications
/usr/local/share/applications/gnapi.desktop
/usr/local/share/apps
/usr/local/share/apps/dolphin
/usr/local/share/apps/dolphin/servicemenus
/usr/local/share/apps/dolphin/servicemenus/gnapi-kde.desktop
/usr/local/share/apps/konqueror
/usr/local/share/apps/konqueror/servicemenus
/usr/local/share/apps/konqueror/servicemenus/gnapi-kde.desktop
/usr/local/share/gnapi
/usr/local/share/gnapi.png
/usr/local/share/gnapi/info.glade
/usr/local/share/gnapi/napi_config.glade
/usr/local/share/gnapi/niwindow.glade
/usr/local/share/gnapi/os.png
/usr/local/share/gnapi/os_config.glade
/usr/local/share/gnapi/plugins.glade
/usr/local/share/gnapi/scan.glade
/usr/local/share/kde4
/usr/local/share/kde4/services
/usr/local/share/kde4/services/ServiceMenus
/usr/local/share/kde4/services/ServiceMenus/gnapi-kde4.desktop
/usr/local/share/man
/usr/local/share/man/man1
/usr/local/share/man/man1/gnapi.1.gz
/usr/local/share/pixmaps
/usr/local/share/pixmaps/gnapi
/usr/local/share/pixmaps/gnapi/downloading.png
/usr/local/share/pixmaps/gnapi/gnapi.png
/usr/local/share/pixmaps/gnapi/os.png
/usr/local/share/pixmaps/gnapi/v-15.png
/usr/local/share/pixmaps/gnapi/v-18.png
/usr/local/share/pixmaps/gnapi/v-bo.png
/usr/local/share/pixmaps/gnapi/v-warn.png
gienek@stacjonarny:~>
gienek@stacjonarny:~> rpm  -qi gnapi-0.3.0-1.x86_64
Name        : gnapi
Version     : 0.3.0
Release     : 1
Architecture: x86_64
Install Date: nie, 18 gru 2011, 12:20:56
Group       : Applications/System
Size        : 457438
License     : GPL
Signature   : (none)
Source RPM  : gnapi-0.3.0-1.src.rpm
Build Date  : nie, 18 gru 2011, 12:20:36
Build Host  : stacjonarny
Relocations : (not relocatable)
Packager    : checkinstall-1.6.2
Summary     : Pobieranie napisów z: NapiProjekt, OpenSubtitles.org, Napisy.info
Description :
Package created with checkinstall 1.6.2
Distribution: (none)
gienek@stacjonarny:~>
Konfiguracja



http://gnapi.sourceforge.net/news.html

I to już wszystko. Jak to działa tego nie wiem bo jeszcze nie przetestowałem ale program wygląda równie ciekawie a nawet bardziej ciekawie jak qnapi.