无法识别的选项--gc-keep-exported on arm ld
unrecognized option --gc-keep-exported on arm ld
现在,我正在尝试集成一个 GitHub 操作来检查拉取请求中的某些代码是否正确编译(VEX Robotics 适用于任何感兴趣的人)。但是,当它到达 运行 make
命令时,我得到这个错误:
Building Project
make: Entering directory '/github/workspace/V5'
Adding timestamp [OK]
Creating cold package with libpros,okapilib [ERRORS]
/usr/lib/gcc/arm-none-eabi/6.3.1/../../../arm-none-eabi/bin/ld: unrecognized option '--gc-keep-exported'
/usr/lib/gcc/arm-none-eabi/6.3.1/../../../arm-none-eabi/bin/ld: use the --help option for usage information
collect2: error: ld returned 1 exit status
make: *** [bin/cold.package.elf] Error 1
common.mk:200: recipe for target 'bin/cold.package.elf' failed
我很困惑为什么会这样? --gc-keep-exported
is a real option,这段代码在我的本地机器上编译完美。我已经尝试更改 ubuntu 版本并更新 VEX SDK 以查看是否有帮助,但我不断遇到相同的错误。我该怎么办?
代码:
Dockerfile
:
FROM ubuntu:18.04
RUN apt-get update
# Install GCC & Clang
RUN apt-get install build-essential -y
RUN apt-get install clang -y
# Install needed ARM deps
RUN apt-get install gcc-arm-none-eabi -y
RUN apt-get install binutils-arm-none-eabi -y
# Install 7z & cURL
RUN apt-get install p7zip-full -y
RUN apt-get install curl -y
COPY entrypoint.sh /entrypoint.sh
RUN chmod +x /entrypoint.sh
ENTRYPOINT ["/entrypoint.sh"]
entrypoint.sh
:
echo "Downloading VEX SDK"
# Get VEX SDK and put it in ~/sdk
curl -L https://content.vexrobotics.com/vexcode/v5code/VEXcodeProV5_2_0_1.dmg -o _vexcode_.dmg
7z x _vexcode_.dmg || :
7z x Payload~ ./VEXcode\ Pro\ V5.app/Contents/Resources/sdk -osdk_temp || :
mkdir ~/sdk
mv sdk_temp/VEXcode\ Pro\ V5.app/Contents/Resources/sdk/* ~/sdk
rm -fR _vex*_ _vex*_.dmg sdk_temp/ Payload~
ls ~/sdk # ls just for testing
echo "Building Project"
# Now make the makefile in the set path
make --directory=
发生这种情况的原因是因为我使用了旧版本的 gcc-arm-none-eabi
。 apt 上的版本非常过时(v6.3.1
vs v10.2.1
)。
我可以通过下载他们 site 上可用的 tarball 并使用直接路径编译我的代码来使用新版本。
更新的Ubuntu版本有更新的GCC版本,你可以浏览下一个,或者偷懒和我一起恶作剧:
FROM ubuntu:latest
现在,我正在尝试集成一个 GitHub 操作来检查拉取请求中的某些代码是否正确编译(VEX Robotics 适用于任何感兴趣的人)。但是,当它到达 运行 make
命令时,我得到这个错误:
Building Project
make: Entering directory '/github/workspace/V5'
Adding timestamp [OK]
Creating cold package with libpros,okapilib [ERRORS]
/usr/lib/gcc/arm-none-eabi/6.3.1/../../../arm-none-eabi/bin/ld: unrecognized option '--gc-keep-exported'
/usr/lib/gcc/arm-none-eabi/6.3.1/../../../arm-none-eabi/bin/ld: use the --help option for usage information
collect2: error: ld returned 1 exit status
make: *** [bin/cold.package.elf] Error 1
common.mk:200: recipe for target 'bin/cold.package.elf' failed
我很困惑为什么会这样? --gc-keep-exported
is a real option,这段代码在我的本地机器上编译完美。我已经尝试更改 ubuntu 版本并更新 VEX SDK 以查看是否有帮助,但我不断遇到相同的错误。我该怎么办?
代码:
Dockerfile
:
FROM ubuntu:18.04
RUN apt-get update
# Install GCC & Clang
RUN apt-get install build-essential -y
RUN apt-get install clang -y
# Install needed ARM deps
RUN apt-get install gcc-arm-none-eabi -y
RUN apt-get install binutils-arm-none-eabi -y
# Install 7z & cURL
RUN apt-get install p7zip-full -y
RUN apt-get install curl -y
COPY entrypoint.sh /entrypoint.sh
RUN chmod +x /entrypoint.sh
ENTRYPOINT ["/entrypoint.sh"]
entrypoint.sh
:
echo "Downloading VEX SDK"
# Get VEX SDK and put it in ~/sdk
curl -L https://content.vexrobotics.com/vexcode/v5code/VEXcodeProV5_2_0_1.dmg -o _vexcode_.dmg
7z x _vexcode_.dmg || :
7z x Payload~ ./VEXcode\ Pro\ V5.app/Contents/Resources/sdk -osdk_temp || :
mkdir ~/sdk
mv sdk_temp/VEXcode\ Pro\ V5.app/Contents/Resources/sdk/* ~/sdk
rm -fR _vex*_ _vex*_.dmg sdk_temp/ Payload~
ls ~/sdk # ls just for testing
echo "Building Project"
# Now make the makefile in the set path
make --directory=
发生这种情况的原因是因为我使用了旧版本的 gcc-arm-none-eabi
。 apt 上的版本非常过时(v6.3.1
vs v10.2.1
)。
我可以通过下载他们 site 上可用的 tarball 并使用直接路径编译我的代码来使用新版本。
更新的Ubuntu版本有更新的GCC版本,你可以浏览下一个,或者偷懒和我一起恶作剧:
FROM ubuntu:latest