我想在Preise1-Ubuntu中安装qtserialport。我用git获得了源目录。接下来,我下载lib-qt4-dev和qmake。我做了qmake。效果很好。但是,make失败并有以下错误:
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虽然make失败,但我现在可以将qtserialport头包含到我的项目中。关于故障,我检查了main.cpp,它包括serialPortSrcInfo.so,这个.so文件已经在qmake被调用时生成了。我怎样才能解决这个问题?
发布于 2013-06-10 09:21:49
AFAIK是基于Qt5+的。我在我的项目(领航员)中使用Qtserial。我的QTSDK 5+是本地安装的(不是通过apt)。这是说明。
~/yourqtprojectfolder/pilotnavigator/qtplayground-qtserialport~/yourqtprojectfolder/pilotnavigator/qtplayground-qtserialport-build找出qmake住在哪里。它位于您的Qt5文件夹中,可能是~/Qt5x.x.x/5.x.x/gcc_64/bin
打开Linux终端\
cd到qt游乐场-qtserialport build文件夹。示例cd ~/yourqtprojectfolder/pilotnavigator/qtplayground-qtserialport-build
运行qmake。示例:
~/Qt5x.x.x/5.x.x/gcc_64/bin/qmake ~/yourqtprojectfolder/pilotnavigator/qtplayground-qtserialport/qtserialport.pro
make(如果您收到有关缺少文件libudev.h的错误,则需要安装libudev-dev库,例如sudo apt-get install libudev-dev)
sudo make installhttps://askubuntu.com/questions/284952
复制相似问题