3 votes

installer la bibliothèque qtSerialPort

Je veux installer qtserialport dans precise1-Ubuntu. J'ai obtenu le répertoire des sources en utilisant git. Ensuite, je télécharge lib-qt4-dev et qmake. J'ai lancé qmake. Il fonctionne bien. mais, make échoue avec l'erreur suivante :

    cd src/ && make -f Makefile 
make[1]: Entering directory `/home/saman/5.0.1/serialPortSrc/qtserialport/src'
cd serialport/ && make -f Makefile 
make[2]: Entering directory `/home/saman/5.0.1/serialPortSrc/qtserialport/src/serialport'
make[2]: Nothing to be done for `first'.
make[2]: Leaving directory `/home/saman/5.0.1/serialPortSrc/qtserialport/src/serialport'
make[1]: Leaving directory `/home/saman/5.0.1/serialPortSrc/qtserialport/src'
cd examples/ && make -f Makefile 
make[1]: Entering directory `/home/saman/5.0.1/serialPortSrc/qtserialport/examples'
cd cenumerator/ && make -f Makefile 
make[2]: Entering directory `/home/saman/5.0.1/serialPortSrc/qtserialport/examples/cenumerator'
g++ -Wl,-O1 -o cenumerator main.o    -L/usr/lib/i386-linux-gnu -lQtGui -lQtCore -lpthread 
main.o: In function `QList<QSerialPortInfo>::free(QListData::Data*) [clone .isra.1]':
main.cpp:(.text+0x47): undefined reference to `QSerialPortInfo::~QSerialPortInfo()'
main.o: In function `QList<QSerialPortInfo>::detach_helper(int)':
main.cpp:(.text._ZN5QListI15QSerialPortInfoE13detach_helperEi[QList<QSerialPortInfo>::detach_helper(int)]+0x68): undefined reference to `QSerialPortInfo::QSerialPortInfo(QSerialPortInfo const&)'
main.cpp:(.text._ZN5QListI15QSerialPortInfoE13detach_helperEi[QList<QSerialPortInfo>::detach_helper(int)]+0xc3): undefined reference to `QSerialPortInfo::~QSerialPortInfo()'
main.o: In function `main':
main.cpp:(.text.startup+0x5e): undefined reference to `QSerialPortInfo::availablePorts()'
main.cpp:(.text.startup+0x10f): undefined reference to `QSerialPortInfo::isBusy() const'
main.cpp:(.text.startup+0x16b): undefined reference to `QSerialPortInfo::hasProductIdentifier() const'
main.cpp:(.text.startup+0x1bb): undefined reference to `QSerialPortInfo::hasVendorIdentifier() const'
main.cpp:(.text.startup+0x212): undefined reference to `QSerialPortInfo::manufacturer() const'
main.cpp:(.text.startup+0x24a): undefined reference to `QSerialPortInfo::description() const'
main.cpp:(.text.startup+0x282): undefined reference to `QSerialPortInfo::systemLocation() const'
main.cpp:(.text.startup+0x2ba): undefined reference to `QSerialPortInfo::portName() const'
main.cpp:(.text.startup+0x644): undefined reference to `QSerialPortInfo::productIdentifier() const'
main.cpp:(.text.startup+0x674): undefined reference to `QSerialPortInfo::vendorIdentifier() const'
collect2: ld returned 1 exit status
make[2]: *** [cenumerator] Error 1
make[2]: Leaving directory `/home/saman/5.0.1/serialPortSrc/qtserialport/examples/cenumerator'
make[1]: *** [sub-cenumerator-make_default-ordered] Error 2
make[1]: Leaving directory `/home/saman/5.0.1/serialPortSrc/qtserialport/examples'
make: *** [sub-examples-make_default-ordered] Error 2

bien que make échoue, je peux maintenant inclure l'en-tête qtserialport à mon projet. et à propos de l'échec, j'ai vérifié main.cpp, il inclut serialPortSrcInfo.so, ce fichier .so a déjà été généré lorsque qmake a été appelé. comment puis-je résoudre le problème ?

1voto

user166014 Points 81

AFAIK il est basé sur Qt5+. J'utilise Qtserial dans mon projet (pilotnavigator). Mon QTSDK 5+ est installé localement (pas via apt). Voici les instructions.

  • Copiez le dossier qtplayground-qtserialport dans un dossier local (de préférence où se trouvent vos projets Qt). Exemple : ~/yourqtprojectfolder/pilotnavigator/qtplayground-qtserialport
  • Créer un dossier de construction au même niveau appelé qtplayground-qtserialport-build dans le dossier pilotnavigator. Exemple : ~/yourqtprojectfolder/pilotnavigator/qtplayground-qtserialport-build

Découvrez où vit qmake. Normalement il est situé dans votre dossier Qt5, probablement ~/Qt5x.x.x/5.x.x/gcc_64/bin

Ouvrir un terminal Linux

cd dans le dossier qtplayground-qtserialport-build. Exemple cd ~/yourqtprojectfolder/pilotnavigator/qtplayground-qtserialport-build

Exécuter qmake. Exemple :

~/Qt5x.x.x/5.x.x/gcc_64/bin/qmake ~/yourqtprojectfolder/pilotnavigator/qtplayground-qtserialport/qtserialport.pro
make

(Si vous obtenez une erreur concernant le fichier manquant libudev.h, vous devez installer la bibliothèque libudev-dev, par exemple. sudo apt-get install libudev-dev )

sudo make install

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X