hello
i was compiled qt with the method of nick guthrie with this ./configure (i use the video vga with gnome-core)
./configure -v -opensource -confirm-license -prefix /usr/local/qt485 -embedded arm -xplatform qws/linux-arm-g++ -no-mmx -no-3dnow -no-sse -no-sse2 -no-glib -no-cups -no-largefile -no-accessibility -no-openssl -no-gtkstyle -qt-mouse-pc -qt-mouse-linuxtp -qt-mouse-linuxinput -plugin-mouse-linuxtp -plugin-mouse-pc -fast -little-endian -host-big-endian -no-pch -no-sql-ibase -no-sql-odbc -no-sql-psql -no-webkit -no-qt3support -nomake examples -nomake demos -nomake docs -nomake translations -qt-mouse-tslib
my files
//*********************************************************************
// Fichier : gpio.cpp
// Classe : gpio
//*********************************************************************
#include "gpio.h"
#include "ui_gpio.h"
gpio::gpio( QWidget *parent) :
QMainWindow(parent),
ui(new Ui::gpio)
{
ui->setupUi(this);
}
gpio::~gpio()
{
}
void gpio::on_Inverser_clicked()
{
}
/********************************************************************************
** Form generated from reading UI file 'gpioqq3747.ui'
**
** Created: Sun May 11 15:04:32 2014
** by: Qt User Interface Compiler version 4.8.1
**
** WARNING! All changes made in this file will be lost when recompiling UI file!
********************************************************************************/
#ifndef GPIOQQ3747_H
#define GPIOQQ3747_H
#include <QtCore/QVariant>
#include <QtGui/QAction>
#include <QtGui/QApplication>
#include <QtGui/QButtonGroup>
#include <QtGui/QHeaderView>
#include <QtGui/QLineEdit>
#include <QtGui/QMainWindow>
#include <QtGui/QMenuBar>
#include <QtGui/QPushButton>
#include <QtGui/QStatusBar>
#include <QtGui/QWidget>
QT_BEGIN_NAMESPACE
class Ui_gpio
{
public:
QWidget *centralwidget;
QPushButton *Inverser;
QPushButton *CommandeUART;
QLineEdit *Message;
QMenuBar *menubar;
QStatusBar *statusbar;
void setupUi(QMainWindow *gpio)
{
if (gpio->objectName().isEmpty())
gpio->setObjectName(QString::fromUtf8("gpio"));
gpio->resize(540, 329);
centralwidget = new QWidget(gpio);
centralwidget->setObjectName(QString::fromUtf8("centralwidget"));
Inverser = new QPushButton(centralwidget);
Inverser->setObjectName(QString::fromUtf8("Inverser"));
Inverser->setGeometry(QRect(110, 60, 98, 27));
CommandeUART = new QPushButton(centralwidget);
CommandeUART->setObjectName(QString::fromUtf8("CommandeUART"));
CommandeUART->setGeometry(QRect(260, 60, 98, 27));
Message = new QLineEdit(centralwidget);
Message->setObjectName(QString::fromUtf8("Message"));
Message->setGeometry(QRect(120, 140, 271, 27));
gpio->setCentralWidget(centralwidget);
menubar = new QMenuBar(gpio);
menubar->setObjectName(QString::fromUtf8("menubar"));
menubar->setGeometry(QRect(0, 0, 540, 25));
gpio->setMenuBar(menubar);
statusbar = new QStatusBar(gpio);
statusbar->setObjectName(QString::fromUtf8("statusbar"));
gpio->setStatusBar(statusbar);
retranslateUi(gpio);
QMetaObject::connectSlotsByName(gpio);
} // setupUi
void retranslateUi(QMainWindow *gpio)
{
gpio->setWindowTitle(QApplication::translate("gpio", "MainWindow", 0, QApplication::UnicodeUTF8));
Inverser->setText(QApplication::translate("gpio", "Inverser_Led", 0, QApplication::UnicodeUTF8));
CommandeUART->setText(QApplication::translate("gpio", "Envoi_UART", 0, QApplication::UnicodeUTF8));
} // retranslateUi
};
namespace Ui {
class gpio: public Ui_gpio {};
} // namespace Ui
QT_END_NAMESPACE
//*********************************************************************
// Fichier : gpio.h
// Classe : gpio
//*********************************************************************
#ifndef GPIO_H
#define GPIO_H
#include <QMainWindow>
#include "ui_gpio.h"
#include <QApplication>
namespace Ui {
class gpio;
}
class gpio : public QMainWindow
{
Q_OBJECT
public:
gpio( QWidget *parent=0);
~gpio();
public slots:
void on_Inverser_clicked();
//void on_CommadeUART_clicked();
private:
Ui::gpio *ui;
};
#endif // GPIO_H
#include <QtGui/QApplication>
//#include <QWidget>
#include "gpio.h"
int main(int argc, char* argv[])
{
QApplication app(argc, argv);
gpio w;
// le widget sera visible
w.show();
return app.exec();
}
j'utilise le Makefile suivant:
##############################################################################
# Makefile pour generer :
# Projet :
# Date :
# Commande : make
#############################################################################
# Commandes Qt
QTDIR = /usr/local/qt485
MOC = $(QTDIR)/bin/moc
UIC = $(QTDIR)/bin/uic
RCC = $(QTDIR)/bin/rcc
# Qt libs
QTLIBS = $(QTDIR)/lib
# Dossier pour les fichiers sources
SRCDIR = Classes
# Dossier pour les compilations
BUILDDIR = build
# Dossier pour les fichiers objets (.o)
OBJDIR = $(BUILDDIR)/.obj
# Dossier pour les exécutables de test unitaire
UNITTESTDIR = $(BUILDDIR)/UnitTest
UNITTESTBIN = $(UNITTESTDIR)/bin
# Dossier pour les exécutable des releases
RELEASEDIR = $(BUILDDIR)/Release
RELEASEBIN = $(RELEASEDIR)/bin
# Dossier de la documentation
DOCDIR = $(BUILDDIR)/html
# Dossier des moc (Qt)
MOCDIR = $(BUILDDIR)/.moc
# Dossier des ihm (Qt)
UIDIR = $(BUILDDIR)/.ui
# Dossier des ressources ihm (Qt)
RESOURCESDIR = Resources
# Options de compilation à ajouter à CFLAGS si nécessaire
SVNDEF = -D_SVN_=\"$(shell svnversion -n .)\"
DAYOFWEEKDEF = -D_DAYOFWEEK_=\"$(shell date +%a)\"
DAYDEF = -D_DAY_=\"$(shell date +%d)\"
MONTHDEF = -D_MONTH_=\"$(shell date +%m)\"
YEARDEF = -D_YEAR_=\"$(shell date +%y)\"
HOURDEF = -D_HOUR_=\"$(shell date +%H)\"
MINDEF = -D_MIN_=\"$(shell date +%M)\"
DEBUG_ON = -g
WARNING_ON = -Wall
CFLAGS = $(DEBUG_ON) $(WARNING_ON)
# Options de recherches des includes
INCLUDES = -I /usr/local/include \
-I $(QTDIR)/include \
-I $(QTDIR)/include/QtCore \
-I $(QTDIR)/include/QtGui
# Définitions à la compilation (ex -DDEBUG = #define DEBUG)
DEFINES =
# Options de linkage si necessaire (ex -lm)
LIBSTEST = -lcppunit -ldl $(QTLIBS)/libQtCore.so $(QTLIBS)/libQtGui.so
LIBS = $(QTLIBS)/libQtCore.so $(QTLIBS)/libQtGui.so
# Commande de compilation C++
CC = g++ $(CFLAGS) $(INCLUDES) $(DEFINES)
# Commande de compilation C
C = gcc $(CFLAGS) $(INCLUDES) $(DEFINES)
# Liste fichiers source
SRC = $(wildcard $(SRCDIR)/*.m)
HDR = $(wildcard $(SRCDIR)/*.h)
# On place ici les objets (.o) a linker dans les applications finales
# Classes MetaObject moc (Qt)
# MOC_SRC = $(MOCDIR)/moc_MyClasseQOBJECT.cpp
MOC_SRC = $(MOCDIR)/moc_gpio.cpp
# Fichiers de déclaration des classes IHM générées à partir de QtDesigner (Qt)
#UI_HEADERS = $(SRCDIR)/ui_MyView.h
UI_HEADERS = $(SRCDIR)/ui_gpio.h
# Fichier ressources (Qt)
# QRC = $(UIDIR)/qrc_imageslib.cpp
QRC =
# Objets IHM (Qt)
#UI_OBJECTS = $(OBJDIR)/qrc_imageslib.o \
# $(OBJDIR)/gpio.o
UI_OBJECTS = $(OBJDIR)/moc_gpio.o
# Classes auxiliaires
AUX_OBJECTS = $(OBJDIR)/gpio.o
# Classe de tesst unitaires
UNITTEST_OBJECTS =
RELEASE_OBJECTS = $(OBJDIR)/main.o
OBJECTS = $(AUX_OBJECTS) $(UNITTEST_OBJECTS) $(RELEASE_OBJECTS)
# On place ici les exécutables à générer (testsunitaires et release)
UNITTEST =
RELEASE = $(RELEASEBIN)/gpio
# On rajoute ici ce qui doit être généré
all : $(BUILDDIR) $(MOC_SRC) $(OBJECTS) $(RELEASE) $(UNITTEST)
# Cibles pour le nettoyage de la compilation
cleanall : clean
clean :
@rm -f $(OBJDIR)/* $(DOCDIR)/*
# Cible pour l'enchaînement des tests unitaires (à venir)
tests:
# Cible pour l'analyse du code source (à venir)
analyze :
# Cible pour la génération de la documentation du code
doc:
doxygen ./Doxyfile
# Production des moc_xxx.o (Qt)
$(OBJDIR)/%.o : $(MOCDIR)/%.cpp
$(CC) -c $< -o $@
# Production des qrcxxx.cpp (Qt)
$(UIDIR)/qrc_%.cpp : $(RESOURCESDIR)/%.qrc
$(RCC) -o $@ $<
# Production des ui_xxx.h (Qt)
$(SRCDIR)/ui_%.h : $(RESOURCESDIR)/%.ui
$(UIC) -o $@ $<
# Production des .o ihm (sans .h : ex qrc)
$(OBJDIR)/%.o : $(UIDIR)/%.cpp
$(CC) -c $< -o $@
# Production des .o ihm (Qt)
$(OBJDIR)/%.o : $(UIDIR)/%.cpp $(UIDIR)/%.h $(SRCDIR)/ui_%.h
$(CC) -c $< -o $@
# Production des .o ihm (Qt)
$(OBJDIR)/%.o : $(UIDIR)/%.cpp $(UIDIR)/%.h
$(CC) -c $< -o $@
# Production des moc_*.cpp (Qt)
$(MOCDIR)/moc_%.cpp : $(SRCDIR)/%.h
$(MOC) -o $(MOCDIR)/moc_$*.cpp $(SRCDIR)/$*.h
# Production des moc_*.cpp ihm (Qt)
$(MOCDIR)/moc_%.cpp : $(UIDIR)/%.h
$(MOC) -o $(MOCDIR)/moc_$*.cpp $<
# Production des .o (c++)
$(OBJDIR)/%.o : $(SRCDIR)/%.cpp $(SRCDIR)/%.h
$(CC) -c $< -o $@
# Production des .o si pas de .h (c++)
$(OBJDIR)/%.o : $(SRCDIR)/%.cpp
$(CC) -c $< -o $@
# Production des tests unitaires
$(UNITTESTBIN)/ExempleClasseAuxiliaireTesteur : $(AUX_OBJECTS) $(OBJDIR)/ExempleClasseAuxiliaireTesteur.o
$(CC) $^ $(LIBSTEST) -o $@
# Production de la release
$(RELEASEBIN)/gpio : $(AUX_OBJECTS) $(UI_OBJECTS) $(OBJDIR)/main.o
$(CC) $^ $(LIBS) -o $@
# Création de l'arborescence pour le build
$(BUILDDIR):
mkdir $@ && \
mkdir $@/.obj && \
mkdir $@/.moc && \
mkdir $@/.ui && \
mkdir $@/html && \
mkdir $@/UnitTest && \
mkdir $@/UnitTest/bin && \
mkdir $@/Release && \
mkdir $@/Release/bin && \
mkdir $@/Release/configuration && \
mkdir $@/Release/logs
the compile and the link are ok
but with i launch the application ./gpio i find this error
./gpio: symbol lookup error: ./gpio: undefined symbol: _ZN7QWidget8qwsEventEP8QWSEvent
best regards and thank you for your response
Michel Arnaud