Kompilace skončí chybou

Ceeper

Kompilace skončí chybou
« kdy: 07. 11. 2012, 17:51:54 »
Zdravim,
potřeboval bych trochu odborných rad ohledně Linuxu...

Dostalo se ke mě zadání ve znění "vytvoř lokalizaci pro ten a ten program". Říkám si fajn, není problém. Zdroják mam stažený, jenom přeložim, zkompiluju a jsem za vodou.
Problém nastal hned při kompilaci a to je důvod, proč píšu.

Při zadání příkazu ./configure se zdá, že vše proběhne bez problému. Ale po spuštění make vše skončí chybou (viz log níž). Můžete mi někdo zkusit poradit, co by mohlo být špatně?

Používám Ubuntu 12.04 LTS a dodávám, že jsem Linuxový začátečník.

Kód: [Vybrat]
if test ! -L c-client ; then ln -s imap/c-client c-client ; fi
touch imap/ip6
cd imap && /usr/bin/make ldb EXTRACFLAGS=" -I/usr/include  -g -O2" EXTRALDFLAGS=" -L/usr/lib   -lgssapi_krb5 -lssl -lldap  -ltinfo -llber -lssl"  EXTRASPECIALS="SSLDIR=/usr SSLCERTS=/etc/ssl/certs EXTRAAUTHENTICATORS=gss "
make[1]: Entering directory `/home/ceeper/Plocha/re-alpine-2.02/imap'
make build EXTRACFLAGS='-I/usr/include  -g -O2' EXTRALDFLAGS='-L/usr/lib   -lgssapi_krb5 -lssl -lldap  -ltinfo -llber -lssl' EXTRADRIVERS='mbox' EXTRAAUTHENTICATORS='' PASSWDTYPE=std SSLTYPE=nopwd IP=4 EXTRASPECIALS='SSLDIR=/usr SSLCERTS=/etc/ssl/certs EXTRAAUTHENTICATORS=gss ' BUILDTYPE=lnp IP=6 \
SPECIALS="SSLINCLUDE=/usr/include/openssl SSLLIB=/usr/lib SSLCERTS=/etc/ssl/certs SSLKEYS=/etc/ssl/private GSSINCLUDE=/usr/include GSSLIB=/usr/lib MAILSPOOL=/var/mail"
make[2]: Entering directory `/home/ceeper/Plocha/re-alpine-2.02/imap'
Rebuilding c-client for lnp...
cd c-client;make all CC=`cat CCTYPE` \
CFLAGS="`cat CFLAGS`" `cat SPECIALS`
make[3]: Entering directory `/home/ceeper/Plocha/re-alpine-2.02/imap/c-client'
make[3]: Nothing to be done for `all'.
make[3]: Leaving directory `/home/ceeper/Plocha/re-alpine-2.02/imap/c-client'
sh -c 'rm -rf rebuild || true'
Building bundled tools...
cd mtest;make
make[3]: Entering directory `/home/ceeper/Plocha/re-alpine-2.02/imap/mtest'
make[3]: Nothing to be done for `all'.
make[3]: Leaving directory `/home/ceeper/Plocha/re-alpine-2.02/imap/mtest'
cd ipopd;make
make[3]: Entering directory `/home/ceeper/Plocha/re-alpine-2.02/imap/ipopd'
make[3]: Nothing to be done for `ipopd'.
make[3]: Leaving directory `/home/ceeper/Plocha/re-alpine-2.02/imap/ipopd'
cd imapd;make
make[3]: Entering directory `/home/ceeper/Plocha/re-alpine-2.02/imap/imapd'
make[3]: Nothing to be done for `all'.
make[3]: Leaving directory `/home/ceeper/Plocha/re-alpine-2.02/imap/imapd'
cd mailutil;make
make[3]: Entering directory `/home/ceeper/Plocha/re-alpine-2.02/imap/mailutil'
make[3]: `mailutil' is up to date.
make[3]: Leaving directory `/home/ceeper/Plocha/re-alpine-2.02/imap/mailutil'
cd mlock;make || true
make[3]: Entering directory `/home/ceeper/Plocha/re-alpine-2.02/imap/mlock'
make[3]: Nothing to be done for `all'.
make[3]: Leaving directory `/home/ceeper/Plocha/re-alpine-2.02/imap/mlock'
cd dmail;make || true
make[3]: Entering directory `/home/ceeper/Plocha/re-alpine-2.02/imap/dmail'
make[3]: `dmail' is up to date.
make[3]: Leaving directory `/home/ceeper/Plocha/re-alpine-2.02/imap/dmail'
cd tmail;make || true
make[3]: Entering directory `/home/ceeper/Plocha/re-alpine-2.02/imap/tmail'
make[3]: `tmail' is up to date.
make[3]: Leaving directory `/home/ceeper/Plocha/re-alpine-2.02/imap/tmail'
make[2]: Leaving directory `/home/ceeper/Plocha/re-alpine-2.02/imap'
make[1]: Leaving directory `/home/ceeper/Plocha/re-alpine-2.02/imap'
/usr/bin/make  all-recursive
make[1]: Entering directory `/home/ceeper/Plocha/re-alpine-2.02'
Making all in m4
make[2]: Entering directory `/home/ceeper/Plocha/re-alpine-2.02/m4'
make[2]: Nothing to be done for `all'.
make[2]: Leaving directory `/home/ceeper/Plocha/re-alpine-2.02/m4'
Making all in po
make[2]: Entering directory `/home/ceeper/Plocha/re-alpine-2.02/po'
make[2]: Nothing to be done for `all'.
make[2]: Leaving directory `/home/ceeper/Plocha/re-alpine-2.02/po'
Making all in pith
make[2]: Entering directory `/home/ceeper/Plocha/re-alpine-2.02/pith'
/usr/bin/make  all-recursive
make[3]: Entering directory `/home/ceeper/Plocha/re-alpine-2.02/pith'
Making all in osdep
make[4]: Entering directory `/home/ceeper/Plocha/re-alpine-2.02/pith/osdep'
make[4]: Nothing to be done for `all'.
make[4]: Leaving directory `/home/ceeper/Plocha/re-alpine-2.02/pith/osdep'
Making all in charconv
make[4]: Entering directory `/home/ceeper/Plocha/re-alpine-2.02/pith/charconv'
make[4]: Nothing to be done for `all'.
make[4]: Leaving directory `/home/ceeper/Plocha/re-alpine-2.02/pith/charconv'
make[4]: Entering directory `/home/ceeper/Plocha/re-alpine-2.02/pith'
make[4]: Nothing to be done for `all-am'.
make[4]: Leaving directory `/home/ceeper/Plocha/re-alpine-2.02/pith'
make[3]: Leaving directory `/home/ceeper/Plocha/re-alpine-2.02/pith'
make[2]: Leaving directory `/home/ceeper/Plocha/re-alpine-2.02/pith'
Making all in pico
make[2]: Entering directory `/home/ceeper/Plocha/re-alpine-2.02/pico'
Making all in osdep
make[3]: Entering directory `/home/ceeper/Plocha/re-alpine-2.02/pico/osdep'
make[3]: Nothing to be done for `all'.
make[3]: Leaving directory `/home/ceeper/Plocha/re-alpine-2.02/pico/osdep'
make[3]: Entering directory `/home/ceeper/Plocha/re-alpine-2.02/pico'
make[3]: Nothing to be done for `all-am'.
make[3]: Leaving directory `/home/ceeper/Plocha/re-alpine-2.02/pico'
make[2]: Leaving directory `/home/ceeper/Plocha/re-alpine-2.02/pico'
Making all in alpine
make[2]: Entering directory `/home/ceeper/Plocha/re-alpine-2.02/alpine'
/usr/bin/make  all-recursive
make[3]: Entering directory `/home/ceeper/Plocha/re-alpine-2.02/alpine'
Making all in osdep
make[4]: Entering directory `/home/ceeper/Plocha/re-alpine-2.02/alpine/osdep'
make[4]: Nothing to be done for `all'.
make[4]: Leaving directory `/home/ceeper/Plocha/re-alpine-2.02/alpine/osdep'
make[4]: Entering directory `/home/ceeper/Plocha/re-alpine-2.02/alpine'
/bin/bash ../libtool --tag=CC   --mode=link gcc -std=gnu99 -g -pthread -g -O2 `cat ../c-client/LDFLAGS` -L/usr/lib  -o alpine addrbook.o adrbkcmd.o after.o alpine.o arg.o busy.o colorconf.o confscroll.o context.o dispfilt.o flagmaint.o folder.o help.o imap.o init.o kblock.o keymenu.o ldapconf.o listsel.o mailcmd.o mailindx.o mailpart.o mailview.o newuser.o pattern.o pipe.o print.o radio.o remote.o reply.o roleconf.o send.o setup.o signal.o status.o takeaddr.o titlebar.o smime.o newmail.o date.o ../pico/libpico.a ../pico/osdep/libpicoosd.a ../pith/libpith.a ../pith/osdep/libpithosd.a ../pith/charconv/libpithcc.a osdep/libpineosd.a ../c-client/c-client.a  -lgssapi_krb5 -lssl -lldap  -ltinfo -llber -lssl
libtool: link: gcc -std=gnu99 -g -pthread -g -O2 -o alpine addrbook.o adrbkcmd.o after.o alpine.o arg.o busy.o colorconf.o confscroll.o context.o dispfilt.o flagmaint.o folder.o help.o imap.o init.o kblock.o keymenu.o ldapconf.o listsel.o mailcmd.o mailindx.o mailpart.o mailview.o newuser.o pattern.o pipe.o print.o radio.o remote.o reply.o roleconf.o send.o setup.o signal.o status.o takeaddr.o titlebar.o smime.o newmail.o date.o  -lpam -ldl -L/usr/lib -lkrb5 -lcom_err -lcrypto ../pico/libpico.a ../pico/osdep/libpicoosd.a ../pith/libpith.a ../pith/osdep/libpithosd.a ../pith/charconv/libpithcc.a osdep/libpineosd.a ../c-client/c-client.a -lgssapi_krb5 -lldap -ltinfo -llber -lssl -pthread
/usr/bin/ld: ../c-client/c-client.a(osdep.o): undefined reference to symbol 'krb5_kt_start_seq_get@@krb5_3_MIT'
/usr/bin/ld: note: 'krb5_kt_start_seq_get@@krb5_3_MIT' is defined in DSO /usr/lib/gcc/i686-linux-gnu/4.6/../../../i386-linux-gnu/libkrb5.so so try adding it to the linker command line
/usr/lib/gcc/i686-linux-gnu/4.6/../../../i386-linux-gnu/libkrb5.so: could not read symbols: Invalid operation
collect2: ld returned 1 exit status
make[4]: *** [alpine] Error 1
make[4]: Leaving directory `/home/ceeper/Plocha/re-alpine-2.02/alpine'
make[3]: *** [all-recursive] Error 1
make[3]: Leaving directory `/home/ceeper/Plocha/re-alpine-2.02/alpine'
make[2]: *** [all] Error 2
make[2]: Leaving directory `/home/ceeper/Plocha/re-alpine-2.02/alpine'
make[1]: *** [all-recursive] Error 1
make[1]: Leaving directory `/home/ceeper/Plocha/re-alpine-2.02'
make: *** [all] Error 2

« Poslední změna: 07. 11. 2012, 20:18:39 od Petr Krčmář »


Re:Problem s kompilaci
« Odpověď #1 kdy: 07. 11. 2012, 18:24:10 »
Kód: [Vybrat]
/usr/bin/ld: ../c-client/c-client.a(osdep.o): undefined reference to symbol 'krb5_kt_start_seq_get@@krb5_3_MIT'
/usr/bin/ld: note: 'krb5_kt_start_seq_get@@krb5_3_MIT' is defined in DSO /usr/lib/gcc/i686-linux-gnu/4.6/../../../i386-linux-gnu/libkrb5.so so try adding it to the linker command line
Překladač byl tak hodný, že ti ještě poradil :)

Stačí na ten řádek, pod kterým je tahle chyba, přidat -lkrb5

Ceeper

Re:Problem s kompilaci
« Odpověď #2 kdy: 07. 11. 2012, 19:38:02 »
Díky za radu, ale stejně si jaksi nejsem schopen pomoct  :-[

Kompilátor mě odkazuje na soubor c-client.a případně osdep.o, ale ani jeden z nich nejde otevřít v textovém editoru a Ubuntu nenajde žádný možný dostupný program.

Re:Problem s kompilaci
« Odpověď #3 kdy: 07. 11. 2012, 19:54:07 »
Kompilátor mě odkazuje na soubor c-client.a případně osdep.o, ale ani jeden z nich nejde otevřít v textovém editoru a Ubuntu nenajde žádný možný dostupný program.
Ne, tu volbu je potreba dostat do Makefile. Ten je obvykle nejak vygenerovany a to generovani neni uplna sranda, to uz by ses v tom asi trochu ztratil.

Nicmene jako obvykle, nez napises dotaz, zkus se poradit se stryckem Googlem -> http://goo.gl/Y15bN
- hned v prvnim odkazu mas reseni primo z bugs.debian.org

Ceeper

Re:Kompilace skončí chybou
« Odpověď #4 kdy: 08. 11. 2012, 00:07:35 »
Tuhle stránku jsem samozřejmě našel, ale z popisu moc moudrý nejsem.

"The fix is to pass -lkrb5 to the *right* of c-client.a, so the optimizer doesn't strip it out."
Nápravou je vložit -lkrb5 napravo od c-client.a, po té jej optimizer nerozdělí.

Co si pod tímhle představit?

Co se editace MakeFile týče, zas takový problém by to být neměl. Nějaké zkušenosti s programováním mám, takže jestli tušíš kam s definicí té knihovny, mohlo by stačit to popsat


Re:Kompilace skončí chybou
« Odpověď #5 kdy: 08. 11. 2012, 06:45:06 »
Co se editace MakeFile týče, zas takový problém by to být neměl. Nějaké zkušenosti s programováním mám, takže jestli tušíš kam s definicí té knihovny, mohlo by stačit to popsat
Na té stránce máš patch.

Ceeper

Re:Kompilace skončí chybou
« Odpověď #6 kdy: 08. 11. 2012, 21:52:27 »
Pravda, koukal jsem na texty okolo, ale přímo obsah patche jsem nestudoval... Moje chyba.

Píše se tam, že ho mam vložit do všech knihoven, nakonec. Jenomže už se nezmiňuje, kde ty knihovny najdu. Ber to jako poslední dotaz  ;)

Re:Kompilace skončí chybou
« Odpověď #7 kdy: 08. 11. 2012, 22:16:59 »
Je to patch pro debianní balíček (takže je to vlastně patch na patch, to je trochu matoucí):
Kód: [Vybrat]
alpine-2.02/debian/patches/10_alpine_1.10_patches.patch

Patch mění jediný řádek v souboru configure.ac:
Kód: [Vybrat]
+++ alpine-2.00/configure.ac
++LIBS = @LIBS@ -lpam -lkrb5 -lcrypto
Záleží, jak to překládáš. Jestli přímo ze zdroje, musíš upravit configure.ac tak, aby na tomhle řádku bylo za "@LIBS@" přidáno "-lpam -lkrb5 -lcrypto". Jestli to překládáš z nějakého debianního zdrojového balíčku, tak to poradit neumím, nevím, jak se to na debianu správně dělá.