维护多个版本的交叉编译工具链的最佳做法是什么
What is the best practice to maintain multiple versions of cross-compile toolchains
我 apt-get install gcc-arm-linux-gnueabi
为 arm 安装了交叉编译工具链。这为我安装了 4.7 版。后来我必须至少安装版本 5 才能编译特定版本的内核,所以我做了 apt-get install gcc-5-arm-linux-gnueabi
。要在每个包含的二进制文件的上述 2 个版本之间切换,我必须安装 update-alternatives
.
的设置
现在我再次面临必须安装工具链版本 7 的情况。我已经从 linaro 网站 (link) 下载了这个包,这是一个 tar 包。现在它有大约 20 个二进制文件,我相信它们都应该一起安装(即 -gcc、-g++、-as 等应该是这个包的默认值)。现在实在不想一个个一个个安装update-alternatives
了。我也没有将它们全部放在 /usr/bin
文件夹中并覆盖其他 2 个版本的二进制文件。
同时维护所有 3 个工具链环境的最佳做法是什么?
一般来说,您可以将工具链放在单独的目录中(例如 /usr/bin/{v4, v6, v7}。然后,您可以将 shell 的 $PATH
直接包含这些目录,或者(在 Linux 内核和许多其他项目的情况下),只需在构建时设置 CROSS_COMPILE
环境变量。
例如,要使用 v6 构建:
make CROSS_COMPILE=/usr/bin/v6/arm-gnueabi-
和 v7:
make CROSS_COMPILE=/usr/bin/v7/arm-gnuabi-
通常,人们不会在 /usr/bin
中创建子目录,因此您可能希望将工具链安装在 /opt/arm-toolchains/vN/
.
等位置
我 apt-get install gcc-arm-linux-gnueabi
为 arm 安装了交叉编译工具链。这为我安装了 4.7 版。后来我必须至少安装版本 5 才能编译特定版本的内核,所以我做了 apt-get install gcc-5-arm-linux-gnueabi
。要在每个包含的二进制文件的上述 2 个版本之间切换,我必须安装 update-alternatives
.
现在我再次面临必须安装工具链版本 7 的情况。我已经从 linaro 网站 (link) 下载了这个包,这是一个 tar 包。现在它有大约 20 个二进制文件,我相信它们都应该一起安装(即 -gcc、-g++、-as 等应该是这个包的默认值)。现在实在不想一个个一个个安装update-alternatives
了。我也没有将它们全部放在 /usr/bin
文件夹中并覆盖其他 2 个版本的二进制文件。
同时维护所有 3 个工具链环境的最佳做法是什么?
一般来说,您可以将工具链放在单独的目录中(例如 /usr/bin/{v4, v6, v7}。然后,您可以将 shell 的 $PATH
直接包含这些目录,或者(在 Linux 内核和许多其他项目的情况下),只需在构建时设置 CROSS_COMPILE
环境变量。
例如,要使用 v6 构建:
make CROSS_COMPILE=/usr/bin/v6/arm-gnueabi-
和 v7:
make CROSS_COMPILE=/usr/bin/v7/arm-gnuabi-
通常,人们不会在 /usr/bin
中创建子目录,因此您可能希望将工具链安装在 /opt/arm-toolchains/vN/
.