Oracle
 sql >> Baza danych >  >> RDS >> Oracle

Próbuję zbudować statyczny plik wykonywalny CGO z bibliotekami Oracle na Linux/Ubuntu

  • Użyj narzędzia $ORACLE_HOME/bin/relink, aby wygenerować bibliotekę o nazwie libclntst.a st oznacza bibliotekę statyczną. Klient Oracle nie jest zwykle dostarczany z tym plikiem.
  • Spróbuj połączyć swoją aplikację z tą biblioteką. Najprawdopodobniej brakuje wielu symboli.
  • Użyj narzędzia nm, aby znaleźć źródło brakujących symboli.
  • W przypadku 11gR2 ta komenda zadziałała dla mnie:

    /usr/bin/c++ -Wall -ggdb3 -fPIC \
     CMakeFiles/opassgen.dir/opassgen.cpp.o \
     CMakeFiles/opassgen.dir/dbutils.cpp.o \
     CMakeFiles/opassgen.dir/common.cpp.o  \
     CMakeFiles/opassgen.dir/crypto.cpp.o  \
     n.o  -o opassgen                      \
     -rdynamic -static-libgcc -L. -Wl,-Bstatic -lstdc++ -Wl,-Bdynamic \
     /home/oracle/ivan/openssl-1.0.1t/libcrypto.a  \
     /oracle/u01/db/11.2.0.4/lib/libclntst11.a     \
     /oracle/u01/db/11.2.0.4/lib/libippdcmerged.a  \
     /oracle/u01/db/11.2.0.4/lib/libippsmerged.a   \
     -Wl,--whole-archive libtrotl.a -Wl,--no-whole-archive \
     -lpthread -ldl
    

Łączenie statyczne wymaga ręcznego rozwiązania wszystkich zależności. W tym przykładzie libclntst11.a zależy od symboli z libippdcmerged.a i libippsmerged.a.

W starszej wersji Oracle cała baza danych była kompilowana i linkowana za pomocą kompilatora ICC firmy Intel. Tak więc przy statycznym łączeniu biblioteki klienta Oracle trzeba było również dodać kilka statycznych bibliotek ze środowiska wykonawczego ICC.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Nieunikalny alias tabeli Oracle SQL w jednym Select

  2. Oracle SQL jak usunąć czas z daty

  3. Jak wyeksportować dane pola clob w Oracle sql developer

  4. Zmaterializowane widoki Oracle z kluczem podstawowym

  5. Dowiedz się, którzy pracownicy byli nieobecni przez 3 kolejne dni