一、 设置交叉编译工具链
交叉编译工具链用来在Ubuntu主机上编译应用程序,而这些应用程序是在ARM等其他平台上运行。
设置交叉编译工具主要是设置PATH, ARCH和CROSS_COMPILE三个环境变量,下面介绍具体设置方法。
在本文档中,源码、交叉编译工具链都是存放于/home/book目录下;如果你的目录不一样,请自行修改本节所讲述的命令。
设置这3个环境变量有多种方法,任意选择其中一种方法即可,建议使用“永久生效”的方法。录制视频时我会使用多种开发板,所以在视频里我总是使用“临时生效”的方法。
1.永久生效
如需永久修改,请修改用户配置文件。
注意:如果不会使用vim命令,可以使用图形化的编辑工具,执行:
gedit ~/.bashrc
vim ~/.bashrc
(1) IMX6ULL Pro版
在行尾添加或修改,加上下面几行(第3行第4行为一行命令):
export ARCH=arm
export CROSS_COMPILE=arm-buildroot-linux-gnueabihf-
export PATH=$PATH:/home/book/100ask_imx6ull-sdk/ToolChain/arm-buildroot-linux-gnueabihf_sdk-buildroot/bin
设置完毕后,要执行 source ~/.bashrc 命令使其生效,这条命令是加载这些设置的环境变量。
(2) IMX6ULL MINI EMMC版
在行尾添加或修改,加上下面几行(第3行第4行为一行命令):
export ARCH=arm
export CROSS_COMPILE=arm-buildroot-linux-gnueabihf-
export PATH=
P
A
T
H
:
/
h
o
m
e
/
b
o
o
k
/
100
a
s
k
i
m
x
6
u
l
l
m
i
n
i
−
s
d
k
/
T
o
o
l
C
h
a
i
n
/
a
r
m
−
b
u
i
l
d
r
o
o
t
−
l
i
n
u
x
−
g
n
u
e
a
b
i
h
f
s
d
k
−
b
u
i
l
d
r
o
o
t
/
b
i
n
设置完毕后,要执行
s
o
u
r
c
e
/
.
b
a
s
h
r
c
命令使其生效,并通过
a
r
m
−
b
u
i
l
d
r
o
o
t
−
l
i
n
u
x
−
g
n
u
e
a
b
i
h
f
−
g
c
c
−
v
命令来验证是否配置成功。
b
o
o
k
@
100
a
s
k
:
PATH:/home/book/100ask_imx6ull_mini-sdk/ToolChain/arm-buildroot-linux-gnueabihf_sdk-buildroot/bin 设置完毕后,要执行 source ~/.bashrc 命令使其生效,并通过arm-buildroot-linux-gnueabihf-gcc -v 命令来验证是否配置成功。 book@100ask:~
PATH:/home/book/100askimx6ullmini−sdk/ToolChain/arm−buildroot−linux−gnueabihfsdk−buildroot/bin设置完毕后,要执行source /.bashrc命令使其生效,并通过arm−buildroot−linux−gnueabihf−gcc−v命令来验证是否配置成功。book@100ask: source ~/.bashrc
book@100ask:~$ arm-buildroot-linux-gnueabihf-gcc -v
以上操作是设置IMX6ULL Pro版工具链的过程,mini的操作与它类似。
2.临时生效
也可以手工执行“export”命令设置环境变量,该设置只对当前终端有效(另开一个终端需要再次设置)。
(1) IMX6ULL Pro版
执行以下3个命令,第3个命令很长,需要包含第四行全部复制:
book@100ask:~$ export ARCH=arm
book@100ask:~$ export CROSS_COMPILE=arm-buildroot-linux-gnueabihf-
book@100ask:~$ export PATH=$PATH:/home/book/100ask_imx6ull-sdk/ToolChain/arm-buildroot-linux-gnueabihf_sdk-buildroot/bin
(2) IMX6ULL MINI EMMC版
执行以下3个命令,第3个命令很长,需要包含第四行全部复制:
book@100ask:~$ export ARCH=arm
book@100ask:~$ export CROSS_COMPILE=arm-buildroot-linux-gnueabihf-
book@100ask:~$ export PATH=$PATH:/home/book/100ask_imx6ull_mini-sdk/ToolChain/arm-buildroot-linux-gnueabihf_sdk-buildroot/bin
3.手动指定
先设置PATH环境变量,然后在make编译时指定ARCH架构 CROSS_COMPILE交叉编译工具链(执行make命令时指定的参数,只对当前命令有效;下次执行make时仍需要再次指定那些参数)。
(1) IMX6ULL Pro版
示例如下,第1条命令很长,这里使用小字体方便大家复制:
book@100ask:~$ export PATH=
P
A
T
H
:
/
h
o
m
e
/
b
o
o
k
/
100
a
s
k
i
m
x
6
u
l
l
−
s
d
k
/
T
o
o
l
C
h
a
i
n
/
a
r
m
−
b
u
i
l
d
r
o
o
t
−
l
i
n
u
x
−
g
n
u
e
a
b
i
h
f
s
d
k
−
b
u
i
l
d
r
o
o
t
/
b
i
n
b
o
o
k
@
100
a
s
k
:
PATH:/home/book/100ask_imx6ull-sdk/ToolChain/arm-buildroot-linux-gnueabihf_sdk-buildroot/bin book@100ask:~
PATH:/home/book/100askimx6ull−sdk/ToolChain/arm−buildroot−linux−gnueabihfsdk−buildroot/binbook@100ask: make ARCH=arm CROSS_COMPILE=arm-buildroot-linux-gnueabihf-
book@100ask:~$ export PATH= P A T H : / h o m e / b o o k / 100 a s k i m x 6 u l l − s d k / T o o l C h a i n / g c c − l i n a r o − 6.2.1 − 2016.11 − x 8 6 6 4 a r m − l i n u x − g n u e a b i h f / b i n b o o k @ 100 a s k : PATH:/home/book/100ask_imx6ull-sdk/ToolChain/gcc-linaro-6.2.1-2016.11-x86_64_arm-linux-gnueabihf/bin book@100ask:~ PATH:/home/book/100askimx6ull−sdk/ToolChain/gcc−linaro−6.2.1−2016.11−x8664arm−linux−gnueabihf/binbook@100ask: make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf-
(1) IMX6ULL MINI EMMC版
示例如下,第1条命令很长,这里使用小字体方便大家复制:
book@100ask:~$ export PATH=
P
A
T
H
:
/
h
o
m
e
/
b
o
o
k
/
100
a
s
k
i
m
x
6
u
l
l
m
i
n
i
−
s
d
k
/
T
o
o
l
C
h
a
i
n
/
a
r
m
−
b
u
i
l
d
r
o
o
t
−
l
i
n
u
x
−
g
n
u
e
a
b
i
h
f
s
d
k
−
b
u
i
l
d
r
o
o
t
/
b
i
n
b
o
o
k
@
100
a
s
k
:
PATH:/home/book/100ask_imx6ull_mini-sdk/ToolChain/arm-buildroot-linux-gnueabihf_sdk-buildroot/bin book@100ask:~
PATH:/home/book/100askimx6ullmini−sdk/ToolChain/arm−buildroot−linux−gnueabihfsdk−buildroot/binbook@100ask: make ARCH=arm CROSS_COMPILE=arm-buildroot-linux-gnueabihf-
二、测试交叉编译工具链
1.测试环境变量:
book@100ask:~$ echo
A
R
C
H
a
r
m
b
o
o
k
@
100
a
s
k
:
ARCH arm book@100ask:~
ARCHarmbook@100ask: echo $CROSS_COMPILE
arm-buildroot-linux-gnueabihf-
2.测试交叉编译器:
执行以下命令,结果见后图:
book@100ask:~$ arm-buildroot-linux-gnueabihf-gcc -v