【发布时间】:2019-09-13 13:18:47
【问题描述】:
我知道这个问题已经被问过了,但是我遇到了一个我在其他地方没有见过的问题。
我正在尝试通过 JenkinsFile 在 Jenkins 上自动构建 QT 程序。 所以我想在命令行中构建这个程序。
在 Qt Creator 上,一切正常,生成了我的 makefile 并编译了程序。
但是当我在终端(cmd 和 cygwin)上手动键入在 Qt 中执行的确切命令时,编译失败。
错误通常是ld: cannot find -lXXXXXX
我的猜测是这是一个环境问题,所以我尝试在$PATH、$LIBRARY_PATH 和$LD_LIBRARY_PATH 变量中添加一些库路径,但这并不能解决问题。错误就变成了Undefined reference to ___XXXXXX
我希望能在这个问题上提供一些帮助!
谢谢。
编辑
构建(从)机器是Windows 7。这是Qt中编译阶段的屏幕截图(工作正常)。我尝试在终端中输入的命令与屏幕截图上的蓝线完全相同。 (抱歉有些行是用法语写的)
【问题讨论】:
-
在Jenkins系统上,你是否安装了所有需要的库的开发包?以及它们的正确版本?它们是安装在标准系统位置(例如
/usr/lib/或类似位置)还是自定义位置?对于自定义位置,您是否在构建系统中添加了标志以查找库? -
实际上,我没有检查 Jenkins 上的所有配置是否正确。但我的问题并不特定于詹金斯。也许我在第一篇文章中并不是很清楚......我的 Jenkins 工作多次失败,所以我决定直接在终端的从机上编译我的程序(不使用 Jenkins)。这是我遇到这个问题的地方。所以我不认为它与 Jenkins 配置有关(也许我稍后会检查它,但现在我只想在我的构建机器上编译我的程序)!希望这更清楚
-
当我说“Jenkins 系统”时,我的意思是“你运行 Jenkins 的 机器”,我并不是要暗示使用 Jenkins 本身。无论如何,我之前评论中的问题仍然存在,因为一旦您可以从命令行正确构建,您也应该能够使用自动化系统(如 Jenkins)来构建。
-
哦,好吧,我误会了……为了回答您的问题,我猜想安装了所需库的正确版本,因为 Qt 上没有编译问题。我想如果他们不在那里,它也会在 Qt 上失败,不是吗? “添加标志”是什么意思?感谢您的帮助
标签: qt jenkins cmd makefile path