Kirjoittaja Aihe: [ratkaistu] Qt (4 tai 5) ja Qwt6 toimimaan Ubuntu 14.04:ssä  (Luettu 3760 kertaa)

teele

  • Käyttäjä
  • Viestejä: 852
    • Profiili
Laitoin uutena asennuksena Ubuntu 14.04:ssä

Koodia: [Valitse]
sudo apt-get install qt4-dev-tools
sudo apt-get install libqwt-dev


mutta virheeksi tulee

Koodia: [Valitse]
In file included from qwtkoe04.cpp:7:0:
qwtkoe04.h:5:29: fatal error: QApplication: Tiedostoa tai hakemistoa ei ole
 #include <QApplication>

Vasta jälkeen päin huomasin, että edellä olevat apt-get -asennukset olin ajanut siitä hakemistosta, jossa on kokeiluohjelmanikin, mutta ei kai se vaikuta siihen, miten Ubuntu asentaa Qt:n ja Qwt:n?

Joku perusasia on väärin asennuksessani, koska QApplication -tiedostoa ei löydy.

.pro -tiedosto on tällainen (lisäilin siihen sitten kokeiluissa CONFIG:n ja widgetit, LIBSit ja INCLUDEPATH ovat lisäyksiä ennen toimineesta .pro -tiedostosta)

Koodia: [Valitse]
######################################################################
# Automatically generated by qmake (3.0) ma maaliskuuta 23 16:07:02 2015
######################################################################

TEMPLATE = app
TARGET = qwtkoe04
INCLUDEPATH += .

# Input
HEADERS += qwtkoe04.h
SOURCES += qwtkoe04.cpp

# lisäsin nämä 2 riviä, mutta ei auta
CONFIG += qwt
Qt += widgets


# nämä kaksi riviä on lisättävä käsin, ainakin ennen toimi näillä
CONFIG += qwt
INCLUDEPATH += /usr/include/qwt
LIBS += -lqwt


Miten saisin qt:n ja qwt:n taas toimimaan?



« Viimeksi muokattu: 05.04.15 - klo:14.30 kirjoittanut teele »

nm

  • Käyttäjä
  • Viestejä: 16428
    • Profiili
Vs: Qt (4 tai 5) ja Qwt6 toimimaan Ubuntu 14.04:ssä
« Vastaus #1 : 24.03.15 - klo:19.02 »
# lisäsin nämä 2 riviä, mutta ei auta
CONFIG += qwt
Qt += widgets

Tuossa pitäisi olla QT += widgets

teele

  • Käyttäjä
  • Viestejä: 852
    • Profiili
Vs: Qt (4 tai 5) ja Qwt6 toimimaan Ubuntu 14.04:ssä
« Vastaus #2 : 25.03.15 - klo:22.37 »
Kiitos oikaisusta, nyt on siis palattu lähtöruutuun eli siihen tilanteeseen, joka oli ennen kuin aloin uudelleen asentamaan qt:tä ja qwt:tä. Siinä jossain vaiheessa sitten QT ja Qt menivät sekaisin.

Alun perin ongelma oli se, että saan koeohjelman käännettyä koneella, jossa on Ubuntu 12.04 ja ohjelma toimii myös siinä 14.04 koneessa, jossa kääntäminen menee muuten läpi ilman virheilmoituksia, mutta kun käännetyn ohjelman ajaa, tulee virheeksi muistialueen ylitys (luotiin core-tiedosto). Muistaakseni 12.04 -koneessa on samat paketit kuin 14.04 -koneessa.

Koska  12.04 - koneessa käännettynä ohjelma toimii kummassakin koneessa, kuvittelisin ohjelman sinällään olevan suurin piirtein oikein. Mutta miten pääsisi sen muistialueen ylityksen jäljille. Jotenkinhan se riippuu jostain eroista koneiden välillä.



nm

  • Käyttäjä
  • Viestejä: 16428
    • Profiili
Vs: Qt (4 tai 5) ja Qwt6 toimimaan Ubuntu 14.04:ssä
« Vastaus #3 : 26.03.15 - klo:01.46 »
Mutta miten pääsisi sen muistialueen ylityksen jäljille. Jotenkinhan se riippuu jostain eroista koneiden välillä.

Debuggerilla voi selvitellä, joskin hankalammissa tapauksissa backtracen tulkinta voi olla vaikeaa.

Voit myös yksinkertaisesti kommentoida koodia pois käytöstä ja takaisin käyttöön, kunnes ongelman aiheuttava kohta on haarukoitu. Onnistuu nopeimmin binäärihaun tapaan, eli esim. pääfunktiossa puolet koodista pois ja testaus. Jos ohjelma käynnistyy, vika oli kommentoidussa osassa. Jos ei toimi vieläkään, vika on siinä osassa, jota ei ole kommentoitu. Sitten tutkimista voi jatkaa samaan tapaan siinä osassa koodia, johon vika on paikannettu.

teele

  • Käyttäjä
  • Viestejä: 852
    • Profiili
Vs: Qt (4 tai 5) ja Qwt6 toimimaan Ubuntu 14.04:ssä
« Vastaus #4 : 26.03.15 - klo:18.56 »

Tässä olisi vähän lisähavaintoja. Yritin selvittää asiaa koodia poistamalla ohjelmasta rivejä.

Ohjelma on nyt aika lyhyt, ja se näyttä vain qwt:n kaavion ilman kuvaajaa. Käänsin sen 12.04 koneella, jossa on qt ja qwt viime keväältä.

Koodia: [Valitse]
#include <QApplication>
#include <qwt_plot.h>
#include <qwt_plot_curve.h>

int main(int argc, char *argv[])
{
      QApplication a(argc, argv);
      QwtPlot *myPlot = new QwtPlot;
      myPlot->show();
    return a.exec();
}

ja tässä vielä pro-tiedosto

Koodia: [Valitse]
######################################################################
# Automatically generated by qmake (3.0) ma maaliskuuta 23 13:10:22 2015
######################################################################

TEMPLATE = app
TARGET = qwtkoe01
INCLUDEPATH += .

# Input
SOURCES += qwtkoe01.cpp

QT += widgets


# nämä rivit on lisättävä käsin, ainakin ennen toimi näillä
CONFIG += qwt
INCLUDEPATH += /usr/include/qwt
LIBS += -lqwt
 

Virheinä tulee ohjelmaa ajettaessa nyt virheellien osoite
Koodia: [Valitse]
mini@mini:~/qt/harjoittelu2/qwtkoe01$ make
g++ -c -m64 -pipe -O2 -Wall -W -D_REENTRANT -fPIE -DQT_NO_DEBUG -DQT_WIDGETS_LIB -DQT_GUI_LIB -DQT_CORE_LIB -I/usr/lib/x86_64-linux-gnu/qt5/mkspecs/linux-g++-64 -I. -I. -I/usr/include/qwt -I/usr/include/qt5 -I/usr/include/qt5/QtWidgets -I/usr/include/qt5/QtGui -I/usr/include/qt5/QtCore -I. -o qwtkoe01.o qwtkoe01.cpp
g++ -m64 -Wl,-O1 -o qwtkoe01 qwtkoe01.o   -L/usr/X11R6/lib64 -lqwt -lQt5Widgets -L/usr/lib/x86_64-linux-gnu -lQt5Gui -lQt5Core -lGL -lpthread

mini@mini:~/qt/harjoittelu2/qwtkoe01$ ./qwtkoe01
*** Error in `./qwtkoe01': realloc(): invalid pointer: 0x00007ff0cf3c1840 ***
Keskeytetty (luotiin core-tiedosto)
 

Sellainen ero 12.04 - ja 14.04 - koneiden välillä ainakin on, että QT += widgets ei tunnistu 12.04 - koneessa, mutta siinä ohjelmat kääntyvät ja toimivat, kun widgetsin kommentoi pois. Käännetty ohjelma toimi sitten 14.04 - koneessakin.

Kyse on luultavastikin versioeroista, vaikka olin asentavinani kumpaankin koneeseen qwt:n ja qt:n samoilla komennoilla, mutta 12.04 - koneeseen siis viime keväänä, muistaakseni.

Nytkin yritin qt:n, qwt:n ja g++:n asentamista niin, että poistin kaikki löytämäni qt- tai qwt- aiheiset tiedostot koneelta ennen uutta asennusta päätteestä. Toivottavasti mitään vanhaa ei jäänyt sotkemaan, mutta sen olisi varmaan apt-get osannut kirjoittaa päälle.

Jos jollain kokeiluohjelmani toimii 14.04 versiossa, voin taas yrittää vaikka poistaa kaikki qt- ja qwt-aiheiset tiedostot ja yrittää asennusta apt-getillä vielä uudestaan.

nm

  • Käyttäjä
  • Viestejä: 16428
    • Profiili
Vs: Qt (4 tai 5) ja Qwt6 toimimaan Ubuntu 14.04:ssä
« Vastaus #5 : 26.03.15 - klo:19.17 »
mini@mini:~/qt/harjoittelu2/qwtkoe01$ make
g++ -c -m64 -pipe -O2 -Wall -W -D_REENTRANT -fPIE -DQT_NO_DEBUG -DQT_WIDGETS_LIB -DQT_GUI_LIB -DQT_CORE_LIB -I/usr/lib/x86_64-linux-gnu/qt5/mkspecs/linux-g++-64 -I. -I. -I/usr/include/qwt -I/usr/include/qt5 -I/usr/include/qt5/QtWidgets -I/usr/include/qt5/QtGui -I/usr/include/qt5/QtCore -I. -o qwtkoe01.o qwtkoe01.cpp
g++ -m64 -Wl,-O1 -o qwtkoe01 qwtkoe01.o   -L/usr/X11R6/lib64 -lqwt -lQt5Widgets -L/usr/lib/x86_64-linux-gnu -lQt5Gui -lQt5Core -lGL -lpthread

Sinulla on asennettuna Qt 5 -kehitysympäristö ja käytät sen qmakea. Qwt toimii vain Qt 4:n kanssa. Asenna Qt 4 -kehitysympäristö (ellei ole jo asennettuna) ja aja qmake näin:

Koodia: [Valitse]
qmake -qt4
Voit myös poistaa Qt 5:n dev-paketit, jos et niitä tarvitse. Silloin komento qmake ajaa suoraan Qt 4:n qmaken, eikä lisäparametria tarvita.

(Käytännössä /usr/bin/qmake on symbolinen linkki qtchooser-ohjelmaan, jonka avulla voi valita, minkä Qt-version työkaluja käytetään. qmake -qt4 vastaa komentoa qtchooser -run-tool=qmake -qt=4)


Kannattaa myös lisätä pro-tiedostoon tarkistus ja virheilmoitus:

Koodia: [Valitse]
greaterThan(QT_MAJOR_VERSION, 4): error("Requires Qt 4. On Ubuntu, run qmake with parameter -qt4")
« Viimeksi muokattu: 26.03.15 - klo:19.25 kirjoittanut nm »

teele

  • Käyttäjä
  • Viestejä: 852
    • Profiili

Ratkaisu näyttää olevan


Koodia: [Valitse]
qmake -qt4
joka tekee 4-versiolle sopivan makefilen.

Kiitos neuvosta  :)