Ändern Sie den Namen eines Objekts innerhalb eines Archivs

322
mike ray

Mein Unternehmen verfügt über Software, die eine Drittanbieter-Bibliothek verwendet, um mit einer Oracle-Datenbank zu interagieren. Es wurde schon lange nicht mehr getestet, und jetzt, da wir uns vergewissern müssen, dass es funktioniert, können wir die Drittanbieter-Bibliothek nicht dazu bringen, in unserer AIX-Umgebung eine Verbindung zu Oracle herzustellen, aber es funktioniert in Windows und Linux.

Unsere Software ist 64-Bit, der Drittanbieter ist 64-Bit und der Oracle-Client ist auch 64-Bit.

Ich habe den 3rd-Party-Code, aber nur für Debugging-Zwecke, nicht für die Produktion / Veröffentlichung.

Beim Aufruf von dlopen zum Laden des Hauptoracle-Archivs erhalte ich diesen Fehler: 0509-022 Das Modul /home/OracleTest/libclntsh.a(shr_64.o) kann nicht geladen werden. 0509-152 Member shr_64.o wurde nicht im Archiv gefunden

Alles, was ich im Internet gefunden habe, besagt, dass (shr_64.o) für 64-Bit-Objekte und (shr.o) für 32-Bit gilt.

Beim Überprüfen des Archivs sehe ich jedoch, dass das 64-Bit-Archiv ein shr.o anstelle eines shr_64.o hat

bash-4.3 $ ar -X64 -t -v libclntsh.a rwxr-xr-x 94110/42424 61808612 30. Oktober, 17:32 Uhr 2014 shr.o

Der Fremdanbietercode ist in shr_64.o für 64 Bit fest codiert. Wenn ich ihn in shr.o ändere, funktioniert der Code wie erwartet.

Da ich den Drittanbietercode nicht ändern kann, suche ich nach einer Möglichkeit, das Objekt in meinem Archiv so zu aktualisieren, dass es den Namen shr_64.o anstelle von shr.o erhält

1

0 Antworten auf die Frage