LPS:Linux/Oracle instalace na Debian12
PREREKVIZITY
apt-get install x11-utils
apt-get install libaio1
apt-get install libaio-dev
nastavit ORACLE_HOME a vygenerovat
$ORACLE_HOME/bin$ ./genclntsh
$ORACLE_HOME/bin$ ./genclntst
do /usr/lib64 nakopírovat knihovny
libc_nonshared.a
libpthread.a
libpthread_nonshared.a
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ětldconfig
, ikdyž to na mnoha místech radí
Další pomocníci
strings --print-file-name * |grep naeetau
ldd
KONKRÉTNÍ UPRAVENÉ SOUBORY
v orald nechat jen
exec gcc -no-pie "$@"
exit
$ORACLE_HOME/plsql/lib/ins_plsql.mk
$(WRAP_LINKLINE) -lclntst19 -lresolv
$ORACLE_HOME/rdbms/lib/ins_rdbms.mk
$(ORION_LINKLINE) -lclntst19 -lclntshcore -lhasgen19 -locr19 -lnnz19 -laio
$(ORAPWD_LINKLINE) -lclntst19 -ldl -lasmclntsh19 -lcell19 -lsvml
$(TKPROF_LINKLINE) -lclntst19 -lresolv
$(SYSRESVER_LINKLINE) -lm
$(PLSHPROF_LINKLINE) -lclntst19 -lresolv
$(EXTPROC_LINKLINE) -lclntst19 -ldl -lm -lrt
$(HSDEPXA_LINKLINE) -lclntst19 -ldl -lm -lrt
$(HSOTS_LINKLINE) -lclntst19 -ldl -lm -lrt
$(AMDU_LINKLINE) -lclntst19 -ldl -lpthread
$(KFNDG_LINKLINE) -lclntst19 -ldl -lpthread
$(KFNDG_LINKLINE) -lclntst19 -ldl -lpthread
$ORACLE_HOME/sqlplus/lib/ins_plsql.mk
$(SQLPLUS_LINKLINE) -lclntst19
$ORACLE_HOME/network/lib/ins_net_server.mk
$(TNSLSNR_LINKLINE) -lclntst19
$(LSNRCTL_LINKLINE) -lclntst19 -lresolv -ldl -lpthread -lrt
$ORACLE_HOME/rdbms/lib/env_rdbms.mk
ORACLE_LINKLINE=$(ORACLE_LINKER) $(PL_FLAGS) -Wl,--no-as-needed $(ORAMAI) $(SSORED) $(TTCSOI) \
ORION_LINKLINE=$(LINK) $(OPT) -Wl,--no-as-needed $(ORIONMAI) $(LLIBORION) $(LLIBCLNTSH) \
ORAPWD_LINKLINE=$(LINK) $(OPT) -Wl,--no-as-needed $(PWDMAI) $(PWDCLSR) $(SSDBED) $(ASMCLNTSH_LIBS) $(HAS_SKGXNLIBS) $(LLIBHASGEN) $(LLIBO
KFNDG_LINKLINE=$(LINK) $(S0MAIN) -Wl,--no-as-needed $(SSKFNDGED) $(SKFNDGPT) $(KFNDGOBJ) \
AMDU_LINKLINE=$(LINK) $(S0MAIN) -Wl,--no-as-needed $(SSKFMUED) $(SKFMUPT) $(LLIBCLNTSH) \