Inhaltsverzeichnis
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 beimconfigure
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 <QObject>."
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 <QObject>."
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…