我正在寻找所有可以为Qt提供的configure
脚本运行的选项(特别是Qt -everywhere-opensource-src-5.2.0)。
经过大量的搜索,我确定这些东西最好的记录很差,所以我希望我能得到一些帮助。当我查看prefix
和sysroot
配置选项的描述时:
~/qt-everywhere-opensource-src-5.2.0$ ./configure -help | grep "sysroot"
时所需的工具和库
-extprefix<dir>
…当使用-sysroot时,将所有内容安装到<dir>
,
-sysroot<dir>
......设置<dir>
为目标编译器和qmake的sysroot,并设置pkg-config路径。
-no-gcc-sysroot……当使用-sysroot时,它禁用向编译器传递——sysroot
~/qt-everywhere-opensource-src-5.2.0$ ./configure -help | grep "prefix"
-prefix<dir>
......这将安装与<dir>
相关的所有内容
-extprefix<dir>
…当使用-sysroot时,将所有内容安装到<dir>
,
-hostprefix [dir] ..开发
所以我以前使用过-prefix
,它完全按照描述的那样做。它将所有内容放在提供的<dir>
中,然后当我使用<prefix_dir>/bin/qmake
构建应用程序并将其安装在目标平台上时,它想要在<prefix_dir>/lib
中找到所有共享对象库。
我的印象是,如果我使用-sysroot
,它将在<sysroot_dir>
安装一切,然后当我在目标平台上安装我的应用程序时,它将在/lib
中搜索。至少我希望那是真的。
现在如果我的假设是正确的…那么-extprefix
的意义是什么?他们是说,如果我同时使用-sysroot
和-extprefix
,我可以重定向到好的地方吗?
我想要使用-no-gcc-sysroot
的原因是什么?如果我想我的Qt库安装在"sysroot"为什么我不希望gcc
使用/知道相同的sysroot?
对这些选项的一些解释会很好,如果我能得到一些如何正确使用这些选项的实际例子就更好了。
这些是在构建嵌入式平台时使用的选项。是的,他们是一团乱麻。所以这里只是部分答案:
前缀
- 在Qt 的整个安装过程中使用/usr/lib而不是/usr/local/lib或类似的方法。
- 当Qt为当前运行的平台构建时(典型的桌面)
-sysroot/道路/h3>- 打算为没有安装在/
的系统构建Qt- ,例如-sysroot ~/mysystem,其中~/myssystem包含/lib/bin etc.
- 将把——sysroot传递给其他工具,如gcc和pkg-config,因此它们将在~/mysystem/lib而不是/lib
中搜索它们的依赖项。
-extprefix/b
- 当使用-sysroot/a时,不要实际写入/a
- 将qt写入/b而不是
- 用于对只读的sysroot进行交叉编译
-no-gcc-sysroot
- 对于无法在编译器中找到自己的crt的编译器非常特殊的hack——sysroot
- 将sysroot传递给pkgconfig和其他人,但不传递给gcc
- 这样gcc将被正确地用-L/sysroot/lib/调用,但不会试图在这里找到隐式路径(crt)。
< -hostprefix/道路/h3>- 当编译的目标与当前运行的目标不同时
- qmake将是主机架构(例如x86), qt本身将是目标架构(例如arm)
所以把qmake放在/path中,而不是用-sysroot指定的目标系统。它在目标系统上没有任何用处
- 当编译的目标与当前运行的目标不同时
- qmake将是主机架构(例如x86), qt本身将是目标架构(例如arm) 所以把qmake放在/path中,而不是用-sysroot指定的目标系统。它在目标系统上没有任何用处
更混乱的是:
< - r/道路/h3>- 设置链接器的运行路径——例如,QtGui找到QtCore的路径——独立于所有其他选项
当你为目标而不是你的主机编译时,你想要使用哪个标志,这取决于configure中大量硬编码的假设。
通常-sysroot + -prefix应该适用于大多数用例。
。当你有:
$ ls ~/mytarget
lib bin share dev
你可以使用-sysroot ~/mytarget -prefix/
一个实际的例子是为树莓派交叉编译Qt,然后创建一个"姐妹"工具包添加到Qt Creator。
安装好Pi的根文件系统后,在Pi上安装Qt:
./configure -opengl es2 -device linux-rasp-pi-g++ -device-option CROSS_COMPILE=$RPI_TOOLCHAIN -sysroot $RPI_SYSROOT -opensource -confirm-license -optimized-qmake -reduce-exports -release -make libs -prefix /usr/local/qt-5.5.1-pi -skip qtwebkit
下面的命令使用Pi的根文件系统在桌面上安装二进制文件。
./configure -opengl es2 -device linux-rasp-pi-g++ -device-option CROSS_COMPILE=$RPI_TOOLCHAIN -sysroot $RPI_SYSROOT -opensource -confirm-license -optimized-qmake -reduce-exports -release -make libs -extprefix /usr/local/qt-5.5.1-pi -skip qtwebkit
注意,唯一的区别是使用-extprefix而不是-prefix来指示安装位置。
注意: 您可以通过在同一行指定prefix和extprefix同时在主机和目标上安装Qt
现在你可以通过指定你的qmake路径,设备,编译器,调试器和系统根添加这个工具包到你的Qt Creator。因此,您可以在桌面上创建一个qt项目,然后根据您选择的工具包在桌面或pi上构建和运行。