avr-gcc 8.1.0 使用 `as` 而不是 `avr-as`
avr-gcc 8.1.0 uses `as` instead of `avr-as`
我想为新项目使用最新版本的 avr-gcc (8.1.0),ubuntu 的包管理器中没有。所以我使用这个站点的构建脚本自己编译了它:https://gist.github.com/zkemble/edec6914ba719bf339b1b85c1fa792dc
(我在 Ubuntu 16.04 下工作,所以我设置 BUILD_WIN32=0
和 BUILD_WIN64=0
只构建 linux-版本)
编译成功后,我尝试通过手动复制输出文件和目录来使其可用,如下所示:(当命名相同时替换先前存在的文件)
./linux/bin/*
到 /usr/bin/
./linux/lib/gcc/avr/8.10
到 usr/lib/gcc/avr/
./linux/share/man/*
到 /usr/share/man/
./linux/libexec
到 /usr/
./libc/avr/*
到 /usr/lib/avr/
./libc/avr/include/*
到 /usr/lib/gcc/include/
这是一种反复试验,也许有些路径是错误的,但与旧 gcc 安装的旧文件相比似乎是合理的。 avr-g++ -v
给我正确的版本 "gcc version 8.1.0 (GCC)".
(我使用 eclipse oxygen 作为 IDE,所以下面的命令是自动生成的,请原谅臃肿的命令)- 使用
编译我的项目时
avr-g++ -v -I"/media/Data/Eigene_Dateien/Valentins_Dateien/Projekte/Software/ATmighty/src/ATmighty"
-Wall -g2 -gstabs -Os -ffunction-sections -fdata-sections -fno-exceptions
-std=c++11 -mmcu=atmega2560 -DF_CPU=16000000UL -MMD -MP -MF"main.d" -MT"main.o"
-c -o "main.o" "/media/Data/Eigene_Dateien/Valentins_Dateien/Projekte/Software/ATmighty/src/QuickTests/main.cpp"
我收到以下错误:as: Unknown option: »-mmcu=avr6«
。 (请参阅下面的完整详细输出)。
新的 avr-g++
编译器似乎没有使用正确的 avr-as
文件,而是使用主机默认的 as
汇编程序。但是 avr-as
位于 \usr\bin\
,与 as
所在的文件夹相同。
如何设置 avr-g++ 8.1.0 工具链才能正常工作?我实际上想尝试一些新的 avr-g++ 功能,官方存储库中的默认版本真的很旧(一些 4.x 版本)
完整的 avr-g++ 输出:
Using built-in specs.
Reading specs from /usr/bin/../lib/gcc/avr/8.1.0/device-specs/specs-atmega2560
COLLECT_GCC=avr-g++
Target: avr
Configured with: ../configure --prefix=/home/valentin/Schreibtisch/avr-gcc-8.x/linux --target=avr --enable-languages=c,c++ --disable-nls --disable-libssp --disable-libada --with-dwarf2 --disable-shared --enable-static
Thread model: single
gcc version 8.1.0 (GCC)
COLLECT_GCC_OPTIONS='-I' '/media/Data/Eigene_Dateien/Valentins_Dateien/Projekte/Software/ATmighty/src/ATmighty' '-Wall' '-g2' '-gstabs' '-Os' '-ffunction-sections' '-fdata-sections' '-fno-exceptions' '-std=c++11' '-D' 'F_CPU=16000000UL' '-MMD' '-MP' '-MF' 'main.d' '-MT' 'main.o' '-c' '-o' 'main.o' '-v' '-specs=device-specs/specs-atmega2560' '-mmcu=avr6'
/usr/bin/../libexec/gcc/avr/8.1.0/cc1plus -quiet -v -I /media/Data/Eigene_Dateien/Valentins_Dateien/Projekte/Software/ATmighty/src/ATmighty -imultilib avr6 -iprefix /usr/bin/../lib/gcc/avr/8.1.0/ -MMD main.d -MF main.d -MP -MT main.o -iplugindir=/usr/bin/../lib/gcc/avr/8.1.0/plugin -D__AVR_ATmega2560__ -D__AVR_DEVICE_NAME__=atmega2560 -D F_CPU=16000000UL /media/Data/Eigene_Dateien/Valentins_Dateien/Projekte/Software/ATmighty/src/QuickTests/main.cpp -iplugindir=/usr/bin/../lib/gcc/avr/8.1.0/plugin -mn-flash=4 -mno-skip-bug -quiet -dumpbase main.cpp -mmcu=avr6 -auxbase-strip main.o -g2 -gstabs -Os -Wall -std=c++11 -version -ffunction-sections -fdata-sections -fno-exceptions -mn-flash=4 -mno-skip-bug -fno-rtti -fno-enforce-eh-specs -fno-exceptions -o /tmp/ccLavHFh.s
GNU C++11 (GCC) version 8.1.0 (avr)
compiled by GNU C version 5.4.0 20160609, GMP version 6.1.0, MPFR version 3.1.4, MPC version 1.0.3, isl version isl-0.18-GMP
GGC heuristics: --param ggc-min-expand=100 --param ggc-min-heapsize=131072
Versions of loaded plugins:
avr-flash-vtbl: Unknown version.
ignoring nonexistent directory "/usr/bin/../lib/gcc/avr/8.1.0/../../../../avr/include/c++/8.1.0"
ignoring nonexistent directory "/usr/bin/../lib/gcc/avr/8.1.0/../../../../avr/include/c++/8.1.0/avr/avr6"
ignoring nonexistent directory "/usr/bin/../lib/gcc/avr/8.1.0/../../../../avr/include/c++/8.1.0/backward"
ignoring nonexistent directory "/usr/bin/../lib/gcc/avr/8.1.0/../../../../avr/sys-include"
ignoring nonexistent directory "/usr/bin/../lib/gcc/avr/8.1.0/../../../../avr/include"
ignoring nonexistent directory "/usr/bin/../lib/gcc/../../lib/gcc/avr/8.1.0/../../../../avr/include/c++/8.1.0"
ignoring nonexistent directory "/usr/bin/../lib/gcc/../../lib/gcc/avr/8.1.0/../../../../avr/include/c++/8.1.0/avr/avr6"
ignoring nonexistent directory "/usr/bin/../lib/gcc/../../lib/gcc/avr/8.1.0/../../../../avr/include/c++/8.1.0/backward"
ignoring duplicate directory "/usr/bin/../lib/gcc/../../lib/gcc/avr/8.1.0/include"
ignoring duplicate directory "/usr/bin/../lib/gcc/../../lib/gcc/avr/8.1.0/include-fixed"
ignoring nonexistent directory "/usr/bin/../lib/gcc/../../lib/gcc/avr/8.1.0/../../../../avr/sys-include"
ignoring nonexistent directory "/usr/bin/../lib/gcc/../../lib/gcc/avr/8.1.0/../../../../avr/include"
#include "..." search starts here:
#include <...> search starts here:
/media/Data/Eigene_Dateien/Valentins_Dateien/Projekte/Software/ATmighty/src/ATmighty
/usr/bin/../lib/gcc/avr/8.1.0/include
/usr/bin/../lib/gcc/avr/8.1.0/include-fixed
End of search list.
GNU C++11 (GCC) version 8.1.0 (avr)
compiled by GNU C version 5.4.0 20160609, GMP version 6.1.0, MPFR version 3.1.4, MPC version 1.0.3, isl version isl-0.18-GMP
GGC heuristics: --param ggc-min-expand=100 --param ggc-min-heapsize=131072
Versions of loaded plugins:
avr-flash-vtbl: Unknown version.
Compiler executable checksum: 7b8fe0c14755945b805e4422187df660
COLLECT_GCC_OPTIONS='-I' '/media/Data/Eigene_Dateien/Valentins_Dateien/Projekte/Software/ATmighty/src/ATmighty' '-Wall' '-g2' '-gstabs' '-Os' '-ffunction-sections' '-fdata-sections' '-fno-exceptions' '-std=c++11' '-D' 'F_CPU=16000000UL' '-MMD' '-MP' '-MF' 'main.d' '-MT' 'main.o' '-c' '-o' 'main.o' '-v' '-specs=device-specs/specs-atmega2560' '-mmcu=avr6'
as -mmcu=avr6 -mgcc-isr -mno-skip-bug -o main.o /tmp/ccLavHFh.s
as: Unbekannte Option »-mmcu=avr6«
勇敢点,你可能刚刚粉碎了你的安装。
如果您不是 101% 确定自己在做什么,例如,在您的 $HOME 中的某处使用 --prefix。
切勿将文件复制到现有安装中。除了你喜欢乱七八糟。
总是(总是如此)在外部配置源代码树(不支持在源代码树中配置)。
解决您的问题:配置 GCC 时 --target=avr,avr-as 和 avr-ld 必须在 PATH 中(也许还有其他 Binutils,如 avr-ranlib 等)或者,当您也在构建 avr-Binutils 时,您可以:配置-构建-安装 avr-Binutils,然后使用与 Binutils 相同的 --prefix 配置 GCC。如果 configure 没有找到目标 as,它只是使用 as。您可以从 configure 的内容(位于前 100 行的某处)以及相应的 config.log.
中看到这一点
我想为新项目使用最新版本的 avr-gcc (8.1.0),ubuntu 的包管理器中没有。所以我使用这个站点的构建脚本自己编译了它:https://gist.github.com/zkemble/edec6914ba719bf339b1b85c1fa792dc
(我在 Ubuntu 16.04 下工作,所以我设置 BUILD_WIN32=0
和 BUILD_WIN64=0
只构建 linux-版本)
编译成功后,我尝试通过手动复制输出文件和目录来使其可用,如下所示:(当命名相同时替换先前存在的文件)
./linux/bin/*
到/usr/bin/
./linux/lib/gcc/avr/8.10
到usr/lib/gcc/avr/
./linux/share/man/*
到/usr/share/man/
./linux/libexec
到/usr/
./libc/avr/*
到/usr/lib/avr/
./libc/avr/include/*
到/usr/lib/gcc/include/
这是一种反复试验,也许有些路径是错误的,但与旧 gcc 安装的旧文件相比似乎是合理的。 avr-g++ -v
给我正确的版本 "gcc version 8.1.0 (GCC)".
(我使用 eclipse oxygen 作为 IDE,所以下面的命令是自动生成的,请原谅臃肿的命令)- 使用
编译我的项目时 avr-g++ -v -I"/media/Data/Eigene_Dateien/Valentins_Dateien/Projekte/Software/ATmighty/src/ATmighty"
-Wall -g2 -gstabs -Os -ffunction-sections -fdata-sections -fno-exceptions
-std=c++11 -mmcu=atmega2560 -DF_CPU=16000000UL -MMD -MP -MF"main.d" -MT"main.o"
-c -o "main.o" "/media/Data/Eigene_Dateien/Valentins_Dateien/Projekte/Software/ATmighty/src/QuickTests/main.cpp"
我收到以下错误:as: Unknown option: »-mmcu=avr6«
。 (请参阅下面的完整详细输出)。
新的 avr-g++
编译器似乎没有使用正确的 avr-as
文件,而是使用主机默认的 as
汇编程序。但是 avr-as
位于 \usr\bin\
,与 as
所在的文件夹相同。
如何设置 avr-g++ 8.1.0 工具链才能正常工作?我实际上想尝试一些新的 avr-g++ 功能,官方存储库中的默认版本真的很旧(一些 4.x 版本)
完整的 avr-g++ 输出:
Using built-in specs.
Reading specs from /usr/bin/../lib/gcc/avr/8.1.0/device-specs/specs-atmega2560
COLLECT_GCC=avr-g++
Target: avr
Configured with: ../configure --prefix=/home/valentin/Schreibtisch/avr-gcc-8.x/linux --target=avr --enable-languages=c,c++ --disable-nls --disable-libssp --disable-libada --with-dwarf2 --disable-shared --enable-static
Thread model: single
gcc version 8.1.0 (GCC)
COLLECT_GCC_OPTIONS='-I' '/media/Data/Eigene_Dateien/Valentins_Dateien/Projekte/Software/ATmighty/src/ATmighty' '-Wall' '-g2' '-gstabs' '-Os' '-ffunction-sections' '-fdata-sections' '-fno-exceptions' '-std=c++11' '-D' 'F_CPU=16000000UL' '-MMD' '-MP' '-MF' 'main.d' '-MT' 'main.o' '-c' '-o' 'main.o' '-v' '-specs=device-specs/specs-atmega2560' '-mmcu=avr6'
/usr/bin/../libexec/gcc/avr/8.1.0/cc1plus -quiet -v -I /media/Data/Eigene_Dateien/Valentins_Dateien/Projekte/Software/ATmighty/src/ATmighty -imultilib avr6 -iprefix /usr/bin/../lib/gcc/avr/8.1.0/ -MMD main.d -MF main.d -MP -MT main.o -iplugindir=/usr/bin/../lib/gcc/avr/8.1.0/plugin -D__AVR_ATmega2560__ -D__AVR_DEVICE_NAME__=atmega2560 -D F_CPU=16000000UL /media/Data/Eigene_Dateien/Valentins_Dateien/Projekte/Software/ATmighty/src/QuickTests/main.cpp -iplugindir=/usr/bin/../lib/gcc/avr/8.1.0/plugin -mn-flash=4 -mno-skip-bug -quiet -dumpbase main.cpp -mmcu=avr6 -auxbase-strip main.o -g2 -gstabs -Os -Wall -std=c++11 -version -ffunction-sections -fdata-sections -fno-exceptions -mn-flash=4 -mno-skip-bug -fno-rtti -fno-enforce-eh-specs -fno-exceptions -o /tmp/ccLavHFh.s
GNU C++11 (GCC) version 8.1.0 (avr)
compiled by GNU C version 5.4.0 20160609, GMP version 6.1.0, MPFR version 3.1.4, MPC version 1.0.3, isl version isl-0.18-GMP
GGC heuristics: --param ggc-min-expand=100 --param ggc-min-heapsize=131072
Versions of loaded plugins:
avr-flash-vtbl: Unknown version.
ignoring nonexistent directory "/usr/bin/../lib/gcc/avr/8.1.0/../../../../avr/include/c++/8.1.0"
ignoring nonexistent directory "/usr/bin/../lib/gcc/avr/8.1.0/../../../../avr/include/c++/8.1.0/avr/avr6"
ignoring nonexistent directory "/usr/bin/../lib/gcc/avr/8.1.0/../../../../avr/include/c++/8.1.0/backward"
ignoring nonexistent directory "/usr/bin/../lib/gcc/avr/8.1.0/../../../../avr/sys-include"
ignoring nonexistent directory "/usr/bin/../lib/gcc/avr/8.1.0/../../../../avr/include"
ignoring nonexistent directory "/usr/bin/../lib/gcc/../../lib/gcc/avr/8.1.0/../../../../avr/include/c++/8.1.0"
ignoring nonexistent directory "/usr/bin/../lib/gcc/../../lib/gcc/avr/8.1.0/../../../../avr/include/c++/8.1.0/avr/avr6"
ignoring nonexistent directory "/usr/bin/../lib/gcc/../../lib/gcc/avr/8.1.0/../../../../avr/include/c++/8.1.0/backward"
ignoring duplicate directory "/usr/bin/../lib/gcc/../../lib/gcc/avr/8.1.0/include"
ignoring duplicate directory "/usr/bin/../lib/gcc/../../lib/gcc/avr/8.1.0/include-fixed"
ignoring nonexistent directory "/usr/bin/../lib/gcc/../../lib/gcc/avr/8.1.0/../../../../avr/sys-include"
ignoring nonexistent directory "/usr/bin/../lib/gcc/../../lib/gcc/avr/8.1.0/../../../../avr/include"
#include "..." search starts here:
#include <...> search starts here:
/media/Data/Eigene_Dateien/Valentins_Dateien/Projekte/Software/ATmighty/src/ATmighty
/usr/bin/../lib/gcc/avr/8.1.0/include
/usr/bin/../lib/gcc/avr/8.1.0/include-fixed
End of search list.
GNU C++11 (GCC) version 8.1.0 (avr)
compiled by GNU C version 5.4.0 20160609, GMP version 6.1.0, MPFR version 3.1.4, MPC version 1.0.3, isl version isl-0.18-GMP
GGC heuristics: --param ggc-min-expand=100 --param ggc-min-heapsize=131072
Versions of loaded plugins:
avr-flash-vtbl: Unknown version.
Compiler executable checksum: 7b8fe0c14755945b805e4422187df660
COLLECT_GCC_OPTIONS='-I' '/media/Data/Eigene_Dateien/Valentins_Dateien/Projekte/Software/ATmighty/src/ATmighty' '-Wall' '-g2' '-gstabs' '-Os' '-ffunction-sections' '-fdata-sections' '-fno-exceptions' '-std=c++11' '-D' 'F_CPU=16000000UL' '-MMD' '-MP' '-MF' 'main.d' '-MT' 'main.o' '-c' '-o' 'main.o' '-v' '-specs=device-specs/specs-atmega2560' '-mmcu=avr6'
as -mmcu=avr6 -mgcc-isr -mno-skip-bug -o main.o /tmp/ccLavHFh.s
as: Unbekannte Option »-mmcu=avr6«
勇敢点,你可能刚刚粉碎了你的安装。
如果您不是 101% 确定自己在做什么,例如,在您的 $HOME 中的某处使用 --prefix。
切勿将文件复制到现有安装中。除了你喜欢乱七八糟。
总是(总是如此)在外部配置源代码树(不支持在源代码树中配置)。
解决您的问题:配置 GCC 时 --target=avr,avr-as 和 avr-ld 必须在 PATH 中(也许还有其他 Binutils,如 avr-ranlib 等)或者,当您也在构建 avr-Binutils 时,您可以:配置-构建-安装 avr-Binutils,然后使用与 Binutils 相同的 --prefix 配置 GCC。如果 configure 没有找到目标 as,它只是使用 as。您可以从 configure 的内容(位于前 100 行的某处)以及相应的 config.log.
中看到这一点