在travis CI上运行Makefile时未找到获取gcc命令

在travis CI上运行Makefile时未找到获取gcc命令,gcc,travis-ci,Gcc,Travis Ci,我在github上有一个C项目,我试图在Travis CI中构建代码,但我遇到了以下错误: 使用worker:worker-linux-9-2.bb.travis ci.org:travis-linux-2 $export CC=gcc git.1 $git clone--depth=50--branch=someDevsgit://github.com/luizfilipe/ffb-cglib.git luizfilipe/ffb cglib 正在克隆到“luizfilipe/ffb

我在github上有一个C项目,我试图在Travis CI中构建代码,但我遇到了以下错误:

使用worker:worker-linux-9-2.bb.travis ci.org:travis-linux-2
$export CC=gcc
git.1
$git clone--depth=50--branch=someDevsgit://github.com/luizfilipe/ffb-cglib.git     luizfilipe/ffb cglib
正在克隆到“luizfilipe/ffb cglib”。。。
远程:计数对象:114,完成。
远程:压缩对象:100%(93/93),完成。
远程:总计114(增量27),重复使用80(增量12)
接收对象:100%(114/114),2.53 MiB | 0字节/秒,完成。
解析三角洲:100%(27/27),完成。
正在检查连接。。。完成。
$cd luizfilipe/ffb cglib
git.3
$git结帐-qf f76cd622418a75003d1aa6326c38039c1f556ee8
$gcc—版本
gcc(Ubuntu/Linaro 4.6.3-1ubuntu5)4.6.3
版权所有(C)2011免费软件基金会。
这是自由软件;有关复制条件,请参见源。没有
担保甚至不是为了适销性或适合某一特定目的。
$make
gcc-c-pendantic-examples/environment/main.c-I/usr/bin/Mesa-5.0/include-g
make:gcc:未找到命令
make:**[main.o]错误127
命令“make”以2退出。
完成。您的生成以1退出。
阅读此错误时,我注意到未找到
gcc
,但.travis.yml如下所示:

language: c
compiler:
   - gcc
script: make
Makefile的配置如下所示:

# Variables
MESA = /usr/bin/Mesa-5.0
PATH = examples/environment/main
EXAMPLE_ENVIRONMENT = examples/environment/main.c
INCPATH = -I$(MESA)/include
LIBPATH = -L$(MESA)/lib
LIBS        = -lglut -lGLU -lGL -lm
CFLAGS  = $(INCPATH) -g
LFLAGS  = $(LIBPATH) $(LIBS)

# Main targets
all: main.o
    $(CC) -o $(PATH) main.o $(LFLAGS)

# Source targets
main.o: $(EXAMPLE_ENVIRONMENT)
    $(CC) -c -pendantic $(EXAMPLE_ENVIRONMENT) $(CFLAGS)
有什么想法吗


更新:我刚切断了叮当声,把Makefile放得更不可知了,但我还是遇到了同样的问题。

问题是你硬编码了你的编译器,然后让travis根据两个编译器构建。这意味着travis将尝试使用gcc构建代码,然后再使用clang构建代码。您有两个选项:从
.travis.yml
中删除作为编译器的clang,或将makefile更改为编译器无关。要更改makefile,只需将所有gcc实例替换为
$(CC)

另外,
$PATH
包含查找可执行文件的位置。如果覆盖它,则无法找到任何内容。因此,您需要将$PATH重命名为类似example\u PATH的名称 乙二醇

您还需要在
.travis.yml
文件中添加一个before_install部分来安装Mesa,因为travis图像非常小


问题是,您需要硬编码编译器,然后让travis根据两个编译器进行构建

作为一个这样做的项目的示例,并更改了Travis CI设置以解决该问题,请参见Git 2.21(2019年2月),其中Travis CI脚本已被更正,以使用我们选择的编译器构建Git

参见,,(2019年1月17日)作者。
(于2019年2月7日合并)

travis ci
:使用正确的编译器构建 我们的“
Makefile
”将编译器硬编码为“
CC=CC
”。
CC
变量可以从命令行重写,即“make CC=gcc-X.Y”将使用特定的
gcc
版本生成,但不是从环境生成,即“CC=gcc-X.Y make”仍将使用平台上的任何“
CC
”生成

我们在特拉维斯CI上的建造工作受到严重影响

在构建矩阵中,我们有专门的构建作业来使用GCC和Clang构建Git 从一开始就在Linux和macOS上((添加 Travis CI支持,2015-11-27,Git v2.7.0-rc0))。
唉,这从来没有像人们想象的那样起作用,因为Travis CI将这些构建作业的编译器指定为“
export CC=gcc
”和“
export CC=clang
”(这对于 使用“
/configure&&make
”)生成的项目。
因此,我们的“
linux clang
”构建作业始终使用
GCC,
,因为在Travis CI的linux映像中,“
cc
”指向那里,而“
osx GCC
”构建作业 始终使用叮当声。
此外,(travis ci:在linux gcc作业上运行gcc-8,2018-05-19,Git v2.18.0-rc0)添加了一个“
export CC=gcc-8
”,试图使用更现代的编译器进行编译,但没有效果

基于
$CC
环境变量,使用
CC
设置
MAKEFLAGS
,以便“
make
” 将运行“正确”的编译器。
Travis CI上的Xcode 10.1 macOS映像已经包含
gcc@8
来自自制的软件包,但我们必须先“brew链接”,才能使用它


您是否正在尝试根据gcc进行构建?如果没有,您可以从编译器配置中删除gcc,这样它就不会根据gcc和clangIt在GitHub上的一个C项目进行构建,我想将它构建到Travis CIi中。我遇到了同样的问题:您更改了什么,新的错误消息是什么?
# Variables
MESA = /usr/bin/Mesa-5.0
example_path = examples/environment/
EXAMPLE_ENVIRONMENT = examples/environment/main.c
INCPATH = -I$(MESA)/include
LIBPATH = -L$(MESA)/lib
LIBS        = -lglut -lGLU -lGL -lm
CFLAGS  = $(INCPATH) -g
LFLAGS  = $(LIBPATH) $(LIBS)

# Main targets
all: main.o
    $(CC) -o $(example_path)/main.o $(LFLAGS)

# Source targets
main.o: $(EXAMPLE_ENVIRONMENT)
    $(CC) -c -pendantic $(EXAMPLE_ENVIRONMENT) $(CFLAGS)