EntwareBuildCmake

为 Entware 编译 CMAKE

本文参考了 GitHub Issue 上的 @stefaang 的回答,首先表示感谢。

安装 Entware

Entware 是一个适用于嵌入式系统的软件包库,使用opkg进行包管理,已有超过2000个软件包,包含安装方法的使用说明都可以在官方wiki上找到。

Aarch64平台为例,可在/opt目录下执行以下命令自动配置:

1
wget -O - http://bin.entware.net/aarch64-k3.10/installer/generic.sh | sh

如何没有 wget 工具,也可在其他设备下载好对应脚本后上传至/opt目标并手动执行。

此时 Entware 环境中的命令均需使用/opt开头,为了方便使用,也可配置系统环境变量。

临时配置环境变量:

1
2
echo $PATH
export PATH=/opt/bin:/opt/sbin:$PATH

使用这种方法配置的环境变量在当前终端关闭后就会失效。

永久配置系统环境变量:
系统环境变量保存于/etc/profile中,修改第一段为:

1
2
3
4
export PATH=\
/opt/bin:\
/opt/sbin:\
...

执行 source /etc/profile 使配置生效。

为测试安装,可执行 opkg update 更新软件源,执行 opkg list 查看可使用的包。

配置编译环境

为了进行编译,需要首先安装gccmake:

1
opkg install gcc make

测试安装结果:

1
2
3
4
5
6
7
8
9
10
11
12
13
[root@phicomm-n1:~]# gcc --version
gcc (OpenWrt GCC 7.4.0) 7.4.0
Copyright (C) 2017 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

[root@phicomm-n1:~]# make --version
GNU Make 4.2.1
Built for aarch64-openwrt-linux-gnu
Copyright (C) 1988-2016 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.

为了完成编译,需要安装完整的头文件,armv7 的头文件库安装方法如下:

1
wget -qO- http://pkg.entware.net/binaries/armv7/include/include.tar.gz | tar xvz -C /opt/include

编译 CMAKE

在进行编译前,首先需要配置编译环境变量,可使用默认的脚本:

1
source /opt/bin/gcc_env.sh

然后到cmake官方源确定对应版本的源码包,下载并解包,以 v3.17.3 为例:

1
2
wget https://cmake.org/files/v3.17/cmake-3.17.3.tar.gz
tar zxvf cmake-3.17.3.tar.gz

接下来开始编译:

1
2
3
4
5
cd cmake-3.17.3
export CXXFLAGS="$CFLAGS $LDFLAGS"
./bootstrap
make j4
make install

其中make j4为通过多线程编译,可根据处理器条件进行修改。
多线程编译可以有效减少编译时间,但也会带来更高的 CPU 和内存占用。

如果全程没有报错,即完成 CMAKE 编译和安装,进行测试:

1
2
3
4
[root@phicomm-n1:~]# cmake --version
cmake version 3.17.3

CMake suite maintained and supported by Kitware (kitware.com/cmake).

CMAKE: 3.17.3
MAKE: 4.2.1
GCC: 7.4.0
Entware
Aarch64


  • 版权声明: 本博客所有文章除特别声明外,均采用 Apache License 2.0 许可协议。转载请注明出处!
  • © 2020 canglan
  • Powered by Hexo Theme Ayer
  • PV: UV:

请我喝杯咖啡吧~