====== TORA 1.3.20 übersetzen auf (Open)SuSE 10.0 x86_64 ====== ===== Vorbereitungen ===== * Herunterladen des Tarballs von sourceforge * ggf. erforderliche ''devel''-Pakete nachinstallieren (spätestens beim ''configure'' stellt sich raus was fehlt) ===== der erste Schritt: configure ===== Nicht wie im INSTALL-Doc angegeben ''configure'' aufrufen (das ist nämlich gar nicht da), sondern ''autogen.sh'', was das ''configure'' erstellt. Nun kann man ''configure'' erfolgreich aufrufen: export LDFLAGS=-L/usr/lib/qt3/lib64 && ./configure -prefix=/usr -without-rpath -disable-new-check -without-kde -with-qt-includes=/usr/lib/qt3/include -with-qt-libs=/usr/lib/qt3/lib64 -with-qtdir=/usr/lib/qt3 -with-libdir=/usr/lib/qt3/lib64 Bitte beachten, dass vor den Parametern ein einfaches und kein doppeltes Minuszeichen steht! Ohne das ''export LDFLAGS=-L/usr/lib/qt3/lib64 &&'' wird ''/usr/lib/qt3/lib64'' nicht in die Befehlszeile aufgenommen, und dadurch erhält man dauernd configure: error: Qt () (library qt-mt) not found. Please check your installation! For more details about this problem, look at the end of config.log.Make sure that you have compiled Qt with thread support! obwohl ''ldconfig'' bestätigt, dass die Bibliotheken da sind... ===== der zweite Schritt: make ===== So, danach kommt das make: # make /usr/bin/moc -o qtlegacy/qtmultilineedit.moc qtlegacy/qtmultilineedit.h /usr/bin/moc -o qtlegacy/qttableview.moc qtlegacy/qttableview.h /usr/bin/moc -o toabout.moc toabout.h /usr/bin/uic -o toaboutui.h toaboutui.ui uic: File generated with too old version of Qt Designer File 'toaboutui.ui' is not valid make: *** [toaboutui.h] Fehler 1 Dank der Newsgruppe alt.linux.suse habe ich die Lösung hierfür bekommen: Mit installiertem ''qt3-devel'' tausche man im ''Makefile'' die Einträge zu ''MOC'' und ''UIC'' von ''/usr/bin'' zu ''/usr/lib/qt3/bin'', und ''make'' läuft erstmal. Nächster Fehler: if /bin/sh ./libtool --tag=CXX --mode=compile g++ -DHAVE_CONFIG_H -I. -I. -I. -I/usr/lib/qt3/include -DDEFAULT_PLUGIN_DIR=\"/usr/lib64\" -DTOVERSION=\"1.3.19\" -I/opt/oracle/product/10.2.0/db_1/rdbms/demo -I/opt/oracle/product/10.2.0/db_1/plsql/public -I/opt/oracle/product/10.2.0/db_1/rdbms/public -DOTL_ORA10G -DOTL_ORA_TIMESTAMP -DOTL_ANSI_CPP -DOTL_FUNC_THROW_SPEC_ON -DOTL_EXCEPTION_ENABLE_ERROR_OFFSET -DQT_THREAD_SUPPORT -g -O2 -D_REENTRANT -MT toalert.lo -MD -MP -MF ".deps/toalert.Tpo" -c -o toalert.lo toalert.cpp; \ then mv -f ".deps/toalert.Tpo" ".deps/toalert.Plo"; else rm -f ".deps/toalert.Tpo"; exit 1; fi : command not found: ./libtool: line 379: syntax error near unexpected token 'elif' '/libtool: line 379: 'elif test "X$1" = X--fallback-echo; then make[1]: *** [toalert.lo] Error 1 make[1]: Leaving directory '/usr/src/packages/tora-1.3.20' make: *** [all] Error 2 Das ließ sich mit ''dos2unix libtool'' und ''chmod a+x libtool'' beseitigen. Nächster Fehler: if /bin/sh ./libtool --tag=CXX --mode=compile g++ -DHAVE_CONFIG_H -I. -I. -I. -I/usr/lib/qt3/include -DDEFAULT_PLUGIN_DIR=\"/usr/lib64\" -DTOVERSION=\"1.3.19\" -I/opt/oracle/product/10.2.0/db_1/rdbms/demo -I/opt/oracle/product/10.2.0/db_1/plsql/public -I/opt/oracle/product/10.2.0/db_1/rdbms/public -DOTL_ORA10G -DOTL_ORA_TIMESTAMP -DOTL_ANSI_CPP -DOTL_FUNC_THROW_SPEC_ON -DOTL_EXCEPTION_ENABLE_ERROR_OFFSET -DQT_THREAD_SUPPORT -g -O2 -D_REENTRANT -MT toalert.lo -MD -MP -MF ".deps/toalert.Tpo" -c -o toalert.lo toalert.cpp; \ then mv -f ".deps/toalert.Tpo" ".deps/toalert.Plo"; else rm -f ".deps/toalert.Tpo"; exit 1; fi libtool: unrecognized option '--tag=CXX' Try 'libtool --help' for more information. make[1]: *** [toalert.lo] Error 1 make[1]: Leaving directory '/usr/src/packages/tora-1.3.20' make: *** [all] Error 2 Wird gelöst, indem im ''Makefile'' die Zeile ''LIBTOOL = $(SHELL) $(top_builddir)/libtool'' gegen ''LIBTOOL = $(SHELL) /usr/bin/libtool'' getauscht wird. Der nächste Fehler ist In file included from toalert.cpp:74: toalert.moc:12:2: error: #error "The header file 'toalert.h' doesn't include ." mit den entsprechenden Folgefehlern. Durch ein ''dos2unix toalert.h'' wird die Meldung beseitigt. Weiter gehts: /bin/sh "/usr/bin/libtool" --tag=CXX --mode=link g++ -DQT_THREAD_SUPPORT -g -O2 -D_REENTRANT -lpcre -L/usr/X11R6/lib64 -L/usr/lib -lqt-mt -ljpeg -lSM -lICE -lXext -lX11 -lSM -lICE -lqscintilla -lstdc++ -lpthread -L/opt/oracle/product/10.2.0/db_1/lib -L/opt/oracle/product/10.2.0/db_1/lib32 -L/usr/lib/qt3/lib64 -o libtoalert.la -rpath /usr/lib64 -avoid-version -rpath /usr/lib64 -module -shared toalert.lo -lpcre g++ -shared -nostdlib /usr/lib64/gcc/x86_64-suse-linux/4.0.2/../../../../lib64/crti.o /usr/lib64/gcc/x86_64-suse-linux/4.0.2/crtbeginS.o .libs/toalert.o -Wl,--rpath -Wl,/usr/lib/qt3/lib64 -Wl,--rpath -Wl,/usr/lib/qt3/lib64 -L/usr/X11R6/lib64 -L/usr/lib /usr/lib/qt3/lib64/libqt-mt.so -L/usr/lib64 -L/usr/lib64/ -L/usr/X11R6/lib64/ /usr/lib64/libjpeg.so -lXext -lX11 -lSM -lICE -lqscintilla -lpthread -L/opt/oracle/product/10.2.0/db_1/lib -L/opt/oracle/product/10.2.0/db_1/lib32 -L/usr/lib/qt3/lib64 /usr/lib64/libpcre.so -L/usr/lib64/gcc/x86_64-suse-linux/4.0.2 -L/usr/lib64/gcc/x86_64-suse-linux/4.0.2/../../../../x86_64-suse-linux/lib -L/usr/lib64/gcc/x86_64-suse-linux/4.0.2/../../../../lib64 -L/usr/lib64/gcc/x86_64-suse-linux/4.0.2/../../.. -L/lib/../lib64 -L/usr/lib/../lib64 /usr/lib/libstdc++.so -lm -lc -lgcc_s /usr/lib64/gcc/x86_64-suse-linux/4.0.2/crtendS.o /usr/lib64/gcc/x86_64-suse-linux/4.0.2/../../../../lib64/crtn.o -Wl,-soname -Wl,libtoalert.so -o .libs/libtoalert.so /usr/lib/libstdc++.so: could not read symbols: File in wrong format collect2: ld returned 1 exit status make[1]: *** [libtoalert.la] Error 1 make[1]: Leaving directory '/usr/src/packages/tora-1.3.20' make: *** [all] Error 2 Darüber kommt man hinweg, indem im ''Makefile'' bei ''QT_LDFLAGS'' und ''all_libraries'' der Eintrag ''-L/usr/lib'' gegen ''-L/usr/lib64'' getauscht wird. Dabei kann man gleich ''qt_libraries'' von ''/usr/lib'' auf ''/usr/lib/qt3/lib'' ändern. Der nächste Fehler - toanalyze.moc:12:2: error: #error "The header file 'toanalyze.h' doesn't include ." lässt sich mal wieder mit einem ''dos2unix toanalyze.h'' beseitigen. Dann folgt das Gleiche mit ''tobackup.h'', ''tobrowser.h'', ''tobrowserconstraint.h'' usw. - ich habe dann alle .h-Files mit dos2unix behandelt. Der nächste Fehler if /bin/sh "/usr/bin/libtool" --tag=CXX --mode=compile g++ -DHAVE_CONFIG_H -I. -I. -I. -I/usr/lib/qt3/include -DDEFAULT_PLUGIN_DIR=\"/usr/lib64\" -DTOVERSION=\"1.3.19\" -I/opt/oracle/product/10.2.0/db_1/rdbms/demo -I/opt/oracle/product/10.2.0/db_1/plsql/public -I/opt/oracle/product/10.2.0/db_1/rdbms/public -DOTL_ORA10G -DOTL_ORA_TIMESTAMP -DOTL_ANSI_CPP -DOTL_FUNC_THROW_SPEC_ON -DOTL_EXCEPTION_ENABLE_ERROR_OFFSET -DQT_THREAD_SUPPORT -g -O2 -D_REENTRANT -MT tobrowser.lo -MD -MP -MF ".deps/tobrowser.Tpo" -c -o tobrowser.lo tobrowser.cpp; \ then mv -f ".deps/tobrowser.Tpo" ".deps/tobrowser.Plo"; else rm -f ".deps/tobrowser.Tpo"; exit 1; fi g++ -DHAVE_CONFIG_H -I. -I. -I. -I/usr/lib/qt3/include -DDEFAULT_PLUGIN_DIR=\"/usr/lib64\" -DTOVERSION=\"1.3.19\" -I/opt/oracle/product/10.2.0/db_1/rdbms/demo -I/opt/oracle/product/10.2.0/db_1/plsql/public -I/opt/oracle/product/10.2.0/db_1/rdbms/public -DOTL_ORA10G -DOTL_ORA_TIMESTAMP -DOTL_ANSI_CPP -DOTL_FUNC_THROW_SPEC_ON -DOTL_EXCEPTION_ENABLE_ERROR_OFFSET -DQT_THREAD_SUPPORT -g -O2 -D_REENTRANT -MT tobrowser.lo -MD -MP -MF .deps/tobrowser.Tpo -c tobrowser.cpp -fPIC -DPIC -o .libs/tobrowser.o tobrowserconstraint.h:49: error: expected class-name before ‘,’ token tobrowser.cpp:431: error: expected class-name before ‘{’ token tobrowser.cpp: In member function ‘void toBrowserFilterSetup::setup(bool)’: tobrowser.cpp:435: error: no matching function for call to ‘toHelp::connectDialog(toBrowserFilterSetup* const)’ tohelp.h:255: note: candidates are: static void toHelp::connectDialog(QDialog*) tobrowser.cpp:438: error: ‘OnlyOwnSchema’ was not declared in this scope tobrowser.cpp:439: error: ‘Tablespaces’ was not declared in this scope tobrowser.cpp:443: error: cannot convert ‘toBrowserFilterSetup* const’ to ‘QObject*’ for argument ‘1’ to ‘toConnection& toCurrentConnection(QObject*)’ tobrowser.cpp:453: error: ‘TablespaceType’ was not declared in this scope tobrowser.cpp: In constructor ‘toBrowserFilterSetup::toBrowserFilterSetup(bool, QWidget*)’: tobrowser.cpp:457: error: class ‘toBrowserFilterSetup’ does not have any field named ‘toBrowserFilterUI’ tobrowser.cpp: In constructor ‘toBrowserFilterSetup::toBrowserFilterSetup(bool, toBrowserFilter&, QWidget*)’: tobrowser.cpp:462: error: class ‘toBrowserFilterSetup’ does not have any field named ‘toBrowserFilterUI’ tobrowser.cpp:466: error: ‘Buttons’ was not declared in this scope tobrowser.cpp:467: error: ‘TablespaceType’ was not declared in this scope tobrowser.cpp:472: error: ‘Tablespaces’ was not declared in this scope tobrowser.cpp:480: error: ‘String’ was not declared in this scope tobrowser.cpp:481: error: ‘Invert’ was not declared in this scope tobrowser.cpp:482: error: ‘IgnoreCase’ was not declared in this scope tobrowser.cpp:483: error: ‘OnlyOwnSchema’ was not declared in this scope tobrowser.cpp: In member function ‘toBrowserFilter* toBrowserFilterSetup::getSetting()’: tobrowser.cpp:488: error: ‘Tablespaces’ was not declared in this scope tobrowser.cpp:491: error: ‘Buttons’ was not declared in this scope tobrowser.cpp:492: error: ‘IgnoreCase’ was not declared in this scope tobrowser.cpp:493: error: ‘Invert’ was not declared in this scope tobrowser.cpp:494: error: ‘String’ was not declared in this scope tobrowser.cpp:495: error: ‘TablespaceType’ was not declared in this scope tobrowser.cpp:497: error: ‘OnlyOwnSchema’ was not declared in this scope tobrowser.cpp: In member function ‘void toBrowser::defineFilter()’: tobrowser.cpp:1921: error: ‘class toBrowserFilterSetup’ has no member named ‘exec’ tobrowser.cpp:1927: error: ‘class toBrowserFilterSetup’ has no member named ‘exec’ tobrowser.cpp: In member function ‘void toBrowseTemplate::defineFilter()’: tobrowser.cpp:2405: error: ‘class toBrowserFilterSetup’ has no member named ‘exec’ tobrowser.cpp:2414: error: ‘class toBrowserFilterSetup’ has no member named ‘exec’ make[1]: *** [tobrowser.lo] Error 1 make[1]: Leaving directory `/usr/src/packages/tora-1.3.20' make: *** [all] Error 2 lässt mich wieder alt aussehen... ===== die Lösung ===== Da hatte ich dann die Faxen dicke, habe die 32bit-Version installiert, die Bibliotheken versymlinkt bzw. (Oracle) von einem 32bit-System einkopiert, und gut ist. 1.3.21 läuft damit auch...