最近更新于 2022-04-05 12:38

可以在 Ubuntu 中为 OpenWrt 编译可执行文件,动态库等,即自己写代码编译。

我使用的 Ubuntu 20.04,克隆的 OpenWrt 源码版本是 21.098 的。在编译OpenWrt固件的的时候,首先就会编译工具链,然后才能见到下面的编译器。

编译器路径 openwrt/staging_dir/toolchain-xxxxxxxx/bin

我这个是编译 斐讯K2固件(MediaTek Ralink MIPS || MT7620 based boards || Phicomm PSG1218 Ax) 的时候,构建出的编译器。如果是其它平台,编译器名字和路径会不一样。

gcc:mipsel-openwrt-linux-musl-gcc

g++:mipsel-openwrt-linux-musl-g++

在 cmake 中可以指定编译器路径

set(CMAKE_C_COMPILER "gcc路径")
set(CMAKE_CXX_COMPILER "g++路径“)

CMakeLists.txt 模板

cmake_minimum_required(VERSION 3.1)

project(openwrt_demo C)
set(CMAKE_C_COMPILER "$ENV{HOME}/openwrt/staging_dir/toolchain-mipsel_24kc_gcc-8.4.0_musl/bin/mipsel-openwrt-linux-musl-gcc")
include_directories(include)
set(EXECUTABLE_OUTPUT_PATH ${PROJECT_SOURCE_DIR}/bin)
aux_source_directory(src src)

add_compile_options(-std=c17 -Wall -Werror -Wextra -pedantic -Wimplicit-fallthrough -Wsequence-point -Wswitch-default -Wswitch-unreachable -Wswitch-enum -Wstringop-truncation -Wbool-compare -Wtautological-compare -Wfloat-equal -Wshadow=global -Wpointer-arith -Wpointer-compare -Wcast-align -Wcast-qual -Wwrite-strings -Wdangling-else -Wlogical-op -Wconversion -Wno-pedantic-ms-format)

add_executable(demo ${src})