LPS:Linux/Oracle instalace na Debian12

Z HelpDesk

PREREKVIZITY

apt-get install x11-utils

nastavit ORACLE_HOME a vygenerovat

$ORACLE_HOME/bin$ ./genclntsh

$ORACLE_HOME/bin$ ./genclntst

Jak vyřešit 'undefined reference to'

Jestli se jedná o systémovou nebo oracle knihovnu se nedá rozhodnout, je třeba hledat. Snažší je to najít v oraclu, pak v systému.

Použij starou knihovnu

Oracle používá zastaralou knihovnu libc_nonshared.a z balíku libc6-dev, maximálně ovšem ve verzi 2.31, ve verzi 2.36 již chybí některé věci, které nelze dohledat, typicky:

undefined reference to `stat'

Oracle knihovna

Linker vypisuje třeba:

/usr/bin/ld: kpusp.c:(text.unlikely+0x7021): undefined reference to `sltsmnta'

Zkusime najít, kde je:

$ cd /home/oracle/sw/product/19.3.0.0/lib
$ nm -o *.a 2>/dev/null |grep ' sltsmnta$' |grep -v U
libclntst19.a:core19_sltsm.o:0000000000000130 T sltsmnta
libcore19.a:sltsm.o:0000000000000130 T sltsmnta

Teď stačí linkeru přidat -lclntst19 (-l nahrazuje lib ve jménu souboru) a nechat znovu instalator opakovat akci.

Pokud se to nenajde, je možné prohledat všechny adresáře:

$ find . -name '*.a' -type f -print -exec nm -o {} \; |grep ' sltsmnta$'

Systémová knihovna

Linker vypisuje typicky takovou hlášku:

/usr/bin/ld: /home/oracle/sw/product/19.3.0.0/lib//libnnzst19.a(ccme_ck_rand_load_fileS1.o): in function `r_ck_random_load_file':
ck_rand_load_file.c:(.text+0xd4): undefined reference to `stat'

Nejsnazší je řetězec zadat do google, pokud nic nenajde, pak hledat v /usr/lib/x86_64-linux-gnu/.

Poznámky

  • nemá smysl upravovat /etc/ld.so.conf.d/ a pouštět ldconfig, ikdyž to na mnoha místech radí

Další pomocníci

  • strings --print-file-name * |grep naeetau
  • ldd

KONKRÉTNÍ UPRAVENÉ SOUBORY

$ORACLE_HOME/plsql/lib/ins_plsql.mk - $(WRAP_LINKLINE) -lclntst19 -lresolv