我正在查看可以运行的所有选项configure
Qt 提供的脚本。 (特别是 qt-everywhere-opensource-src-5.2.0)。
经过大量搜索后,我确定这些东西充其量记录很少,所以我希望我能得到一些帮助。当我查看描述时prefix
and sysroot
配置选项:
〜/qt-everywhere-opensource-src-5.2.0$ ./configure -help | grep “系统根目录”
-ext前缀<dir>
...当使用 -sysroot 时,将所有内容安装到<dir>
,
-系统根目录<dir>
...... 套<dir>
作为目标编译器和 qmake 的 sysroot 并设置 pkg-config 路径。
-no-gcc-sysroot ..... 当使用 -sysroot 时,它会禁止将 --sysroot 传递给编译器
〜/qt-everywhere-opensource-src-5.2.0$ ./configure -help | grep“前缀”
-字首<dir>
......这将安装相关的所有内容<dir>
-ext前缀<dir>
...当使用 -sysroot 时,将所有内容安装到<dir>
,
-hostprefix [dir] ..开发时需要的工具和库
所以我用过-prefix
之前,它确实按照描述的那样做了。它将一切都放在提供的位置<dir>
,然后当我使用构建我的应用程序时<prefix_dir>/bin/qmake
并将其安装在我的目标平台上,它想要找到所有共享对象库<prefix_dir>/lib
.
我的印象是如果我使用-sysroot
它将安装所有东西<sysroot_dir>
然后当我在目标平台上安装我的应用程序时,它将搜索/lib
。至少我希望这是真的。
现在如果我的假设是正确的...那么还有什么意义-extprefix
?他们是说如果我可以重定向到好的地方如果我同时使用-sysroot
and -extprefix
?
我想使用的原因是什么-no-gcc-sysroot
?如果我希望我的 Qt 库安装在“sysroot”,为什么我不想要gcc
使用/知道相同的系统根?
对其中一些选项的解释会很好,如果我能得到一些如何正确使用这些选项的实际例子就更好了。
这些是构建嵌入式平台时使用的选项。
是的,他们是一个皇家烂摊子。所以这只是部分答案:
-prefix
- 对于 Qt 的整个安装,尝试并经过验证的方法是使用 /usr/lib 而不是 /usr/local/lib 或类似的方法
- Qt 是为当前运行的平台构建的(典型的桌面平台)
-sysroot /路径
- 打算为未安装在 / 的系统构建 Qt
- 例如 -sysroot ~/mysystem 其中 ~/myssytem 包含
/lib /bin 等...
- 将 --sysroot 传递给其他工具,例如 gcc 和 pkg-config,因此它们将在 ~/mysystem/lib 而不是 /lib 中搜索依赖项
-ext 前缀 /b
- 使用 -sysroot /a 时,实际上并不写入 /a
- 将 qt 写入 /b 代替
- 这是为了针对只读系统根进行交叉编译
-no-gcc-sysroot
- 针对无法在 --sysroot 中找到自己的 crt 的编译器的非常具体的 hack
- 将 sysroot 传递给 pkgconfig 等,但不传递给 gcc
- 这样 gcc 将使用 -L/sysroot/lib/ 正确调用,但不会尝试在此处查找隐式路径(crt)。
-主机前缀/路径
- 当针对与我们当前运行的目标不同的目标进行编译时
- qmake 将是主机架构(例如 x86),而 qt 本身将是目标架构(比如说arm)
- 因此,将 qmake 放在 /path 中,而不是 -sysroot 指定的目标系统中。它对目标系统没有任何用处
为了增加混乱:
-R /path
- 设置链接器运行路径 - 例如 QtGui 找到 QtCore 的地方 - 独立于所有其他选项
在为目标而不是主机进行编译时要使用哪些标志取决于配置中的大量硬编码假设。
通常 -sysroot 加上 -prefix 应该适用于大多数用例。
即当你有:
$ ls ~/mytarget
lib bin share dev
你可以只使用 -sysroot ~/mytarget -prefix /
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)