4

新更新

我想我现在应该编辑标题。

为了确保我有一个干净的环境,我

  1. 从 qt-prject 下载 qt5.1.1 src 代码。
  2. 导出 QNX_TARGET、QNX_HOST,并将 QNX_HOST 添加到 PATH。
  3. 然后运行脚本 ./configure -opensource -confirm-license -xplatform qnx-armv7le-qcc -v

所以在这里, -opensource -confirm-license 只是避免问答 -v 是显示完整的消息。

很多错误信息。

Creating qmake...
make: Nothing to be done for `first'.
Running configuration tests...
Determining architecture... ()
qcc -Vgcc_ntoarmv7le -c -Wno-psabi -lang-c++ -g -Wall -W -fPIE -DQT_NO_CLIPBOARD -I../../mkspecs/qnx-armv7le-qcc -I. -I/opt/qnx650/target/qnx6/usr/include -I/opt/qnx650/target/qnx6/usr/include/freetype2 -o arch.o arch.cpp
Unable to determine architecture!

Could not determine the target architecture!
Turn on verbose messaging (-v) to see the final report.
Determining architecture... ()
g++ -c -pipe -g -Wall -W -fPIE  -I../../mkspecs/linux-g++ -I. -o arch.o arch.cpp
g++  -o arch arch.o    { test -n "" && DESTDIR="" || DESTDIR=.; } && test $(gdb --version | sed -e 's,[^0-9]\+\([0-9]\)\.\([0-9]\).*,\1\2,;q') -gt 72 && gdb --nx --batch --quiet -ex 'set confirm off' -ex "save gdb-index $DESTDIR" -ex quit 'arch' && test -f arch.gdb-index && objcopy --add-section '.gdb_index=arch.gdb-index' --set-section-flags '.gdb_index=readonly' 'arch' 'arch' && rm -f arch.gdb-index || true
Found architecture in binary
CFG_HOST_ARCH="x86_64"
CFG_HOST_CPUFEATURES=" mmx sse sse2"
System architecture: 'unknown'
Host architecture: 'x86_64'
C++11 auto-detection... ()
qcc -Vgcc_ntoarmv7le -c -Wno-psabi -lang-c++ -O2 -Wc,-std=gnu++0x -Wall -W -fPIE-DQT_NO_CLIPBOARD -I../../../mkspecs/qnx-armv7le-qcc -I. -I/opt/qnx650/target/qnx6/usr/include -I/opt/qnx650/target/qnx6/usr/include/freetype2 -o c++11.o c++11.cpp
C++11 disabled.
floatmath auto-detection... ()
qcc -Vgcc_ntoarmv7le -c -Wno-psabi -lang-c++ -O2 -Wall -W -fPIE -DQT_NO_CLIPBOARD-I../../../mkspecs/qnx-armv7le-qcc -I. -I/opt/qnx650/target/qnx6/usr/include -I/opt/qnx650/target/qnx6/usr/include/freetype2 -o floatmath.o floatmath.cpp
qcc -Vgcc_ntoarmv7le -c -Wno-psabi -lang-c++ -O2 -Wall -W -fPIE -DQT_NO_CLIPBOARD -I../../../mkspecs/qnx-armv7le-qcc -I. -I/opt/qnx650/target/qnx6/usr/include -I/opt/qnx650/target/qnx6/usr/include/freetype2 -o freetype.o freetype.cpp
FreeType disabled.
STL auto-detection... ()
qcc -Vgcc_ntoarmv7le -c -Wno-psabi -lang-c++ -O2 -Wall -W -fPIE -DQT_NO_CLIPBOARD -I../../../mkspecs/qnx-armv7le-qcc -I. -I/opt/qnx650/target/qnx6/usr/include -I/opt/qnx650/target/qnx6/usr/include/freetype2 -o stltest.o stltest.cpp
STL disabled.
STL functionality check failed! Cannot build Qt with this STL library.
Turn on verbose messaging (-v) to /home/pasadeveloper/qt-everywhere-opensourcesrc-5.1.1/qtbase/configure to see the final report.

更新:我正在为 ARM 开发 QNX,目标是一个 arm 平台设备。事情越来越奇怪了。在 Env Var 中,我把

$QNX_CONFIGURATION=/etc/qnx
$QNX_JAVAHOME=/opt/qnx650/_jvm
$QNX_TARGET=/opt/qnx650/target/qnx6
$QNX_HOST=/opt/qnx650/host/linux/x86

但是当我执行qmake qmake.confmkspecs/qnx-armv7le-qcc 文件夹时,它会返回一条错误消息Project ERROR: QNX_TARGET environment variable not set

不知道现在发生了什么。


不只是 qmake qmake.conf 我尝试在另一台主机上构建 qt 5.1.2,ubuntu 12.04-64bit。也会收到相同的错误消息。 Project ERROR: QNX_TARGET environment variable not set


我在 linux (FYI Ubuntu 12.04 -64bits) 下从事 Qt 开发工作,但我需要将此程序编译为 QNX 的二进制文件。我安装了 QNX MOmentics IDE,它为我提供了 QNX-gcc。但我找不到 qmake-qnx。

在QT/gcc_64/mkspecs/qnx-armv7le-qcc下,有一个文件调用qmake.conf。我想这是我可以生成我的 qmake-qnx 的地方。在我运行 qmake -o Makefile qmake.conf 后,生成了一个 Makefile。

但是,当我运行 make 时,发生了错误。

qcc -Vgcc_ntoarmv7le -lang-c++ -Wl,-rpath-link,/opt/qnx650/target/qnx6/armle-v7/lib -Wl,-rpath-link,/opt/qnx650/target/qnx6/armle-v7/usr/lib -Wl,-O1 -Wl,-O1 -Wl,-rpath,/home/pasadeveloper/Qt5.1.0/5.1.0/gcc_64 -Wl,-rpath,/home/pasadeveloper/Qt5.1.0/5.1.0/gcc_64/lib -o qmake    -L/opt/qnx650/target/qnx6/armle-v7/lib -L/opt/qnx650/target/qnx6/armle-v7/usr/lib -lm -L/home/pasadeveloper/Qt5.1.0//5.1.0/gcc_64/lib -lQt5Gui -lQt5Core -lGL -lpthread 

cc: no files to process make: *** [qmake] Error 1 pasadeveloper@ubuntu:~/Qt5.1.0/5.1.0/gcc_64/mkspecs/qnx-armv7le-qcc$

4

2 回答 2

4

你不会像那样“生成”你的 qmake-qnx。您应该使用本机 qmake 为您的目标生成适当的 makefile 以帮助交叉编译。此外,qmake qmake.conf在相关的 mkspecs 文件夹中运行是错误的,因为这不是您可能认为的项目文件。

例如,在构建 Qt 本身时,您应该为目标使用正确的 mkspecs 文件,在这种情况下,如果它是为特定的 arm qnx 变体构建的,它就是您上面提到的那个,称为qnx-armv7le-qcc.

以下是下载相关 Qt 源代码(如 5.1.1)后需要运行的确切命令:

./configure -opensource -confirm-license -xplatform qnx-armv7le-qcc -v

对于这个 QNX 版本,底线是,如果您没有 SP1libscreen,它将无法工作。QPA 插件将链接到它。此库为较新 QNX 变体上的图形服务器提供 API。您需要与您的 QNX 代表交谈。

在这里您可以找到有关该主题的更多信息。

于 2013-09-06T23:09:00.230 回答
1

$QNX_TARGET=/opt/qnx650/target/qnx6

可能没有做你想做的事。在 shell 脚本中,定义变量时不要在变量前面加上“$”,只有在访问变量时才可以:

X=你好

回声 $X

于 2014-12-01T20:09:04.067 回答