无法使用 Travis-CI 运行可执行文件-不确定我做错了啥
Posted
技术标签:
【中文标题】无法使用 Travis-CI 运行可执行文件-不确定我做错了啥【英文标题】:Cannot run executable with Travis-CI - Not sure what I am doing wrong无法使用 Travis-CI 运行可执行文件-不确定我做错了什么 【发布时间】:2014-10-25 06:20:07 【问题描述】:我一直在试图弄清楚如何让 Travis-CI 构建一个仅限 QT5 的应用程序。
我必须是 Qt5,并且包含 QSerialPort 模块,因此没有可用的库存 Ubuntu 版本(缺少 QSerialPort)。我将 Qt 5.x 安装到 12.04 Ubuntu VM 上,将文件 tar'd 到我放置在另一个仓库中的东西中,但是当我下载并提取 Qt5 可执行文件(qmake + 源等)时,我无法运行它们,即使qmake 在 $PATH 中找到。
代码全部发布在https://github.com/npotts/QuteSerial。
.travis.yml
language: cpp
compiler:
- gcc
before_install:
- wget https://github.com/npotts/Qt5-Travis-CI/raw/master/Qt5.txz
- tar xfp Qt5.txz -C $HOME
install:
- sudo apt-get update -q
- sudo apt-get install build-essential
script:
- export PATH="$HOME/Qt5.3.2/bin:$PATH"
- which qmake
- uname -a
- qmake --version
- pwd
- ls *
- ls -alh $HOME/Qt5.3.2/*
- ../../Qt5.3.2/bin/qmake
- vendor/../../Qt5.3.2/bin/qmake
- make -j$(nproc)
构建错误: https://travis-ci.org/npotts/QuteSerial/builds/38996355
【问题讨论】:
二进制文件是为什么平台和架构编译的? 【参考方案1】:它并不漂亮,但这个 before_install
脚本是我用来从 Ubuntu 存储库在 Travis CI 上安装 Qt5 的。
apt-get
命令按原样使用很重要;依赖项没有正确解析,所以我手动修复它们。
before_install:
- sudo add-apt-repository "deb http://archive.ubuntu.com/ubuntu trusty universe"
- sudo add-apt-repository "deb http://archive.ubuntu.com/ubuntu trusty main"
- sudo apt-get install debian-keyring debian-archive-keyring
- sudo apt-key update
- sudo apt-get update
- sudo apt-get install qt5-default qt5-qmake qtbase5-dev-tools qtchooser qttools5-dev qtbase5-dev libgles2-mesa-dev libqt5gui5 libqt5serialport5-dev libqt5printsupport5 libqt5widgets5 libgles2-mesa libgl1-mesa-dev libgl1-mesa-glx libglapi-mesa libegl1-mesa-dev libpango-1.0-0
- sudo apt-get install zlib1g-dev libudev-dev
【讨论】:
这修复了它。它看起来确实有点 hackish,并且需要一段时间来安装所有的 deps,但它确实解决了最初的问题。感谢您的帮助。 是的,我希望他们尽快将 Travis 带到更新的 Ubuntu 上,让 Qt5 的体验更加愉快。 =P【参考方案2】:我检查了您正在下载的存档,其中的二进制文件似乎是为 32 位架构编译的。 Travis CI 环境是 64 位的,您需要提供为 64 位编译的二进制文件才能使其工作。
您看到的错误有点令人困惑,但当二进制文件的编译目标与其运行的架构不匹配时,这是一个常见的错误。
【讨论】:
谢谢。我想知道是否是这种情况,但我没有看到任何我习惯的标准错误。我将尝试通过 QT 修复它,然后尝试这个(更草率的)解决方案以上是关于无法使用 Travis-CI 运行可执行文件-不确定我做错了啥的主要内容,如果未能解决你的问题,请参考以下文章
如何在 Travis-CI 配置文件 (YAML) 中正确使用 curl?