eATM

openwrt交叉编译

下载openwrt sdk

https://mirror-03.infra.openwrt.org/releases/23.05.3/targets/x86/64/openwrt-sdk-23.05.3-x86-64_gcc-12.3.0_musl.Linux-x86_64.tar.xz

这一步本是下载toolchain的,但是这个仓库里面的toolchain的文件有点不对,

而sdk中带了toolchain的, staging_dir\toolchain-x86_64_gcc-12.3.0_musl

 

配置环境变量及3个简单函数用来-配置/编译/安装

设置环境变量信息: vi ~/.bashrc

toolchain_dir=/mnt/e/OpenLib/openwrt/23.05.3-musl.Linux-x86_64/sdk/staging_dir/toolchain-x86_64_gcc-12.3.0_musl
PATH=$toolchain_dir/bin:$PATH
export STAGING_DIR=$toolchain_dir

#代替用op_config命令代替 ./configure 来生成make配置文件
function op_config()
{
    ./configure --host=x86_64-openwrt-linux-musl
    #--host=x86_64-openwrt-linux-musl 意思为目标系统类型,可以在toolchain文件夹中看到名字
}

#代替make,禁用c/cxx警告
function op_make()
{
    #CFLAGS="-w" CXXFLAGS="-w"  让c c++警告所有警告
    make CFLAGS="-w" CXXFLAGS="-w"
}

#将生成的文件复制到源目录中的easy_op子文件夹中
#手工撸的话,可以将文件拿去op中跑了
function op_install()
{
    #安装到当前目录下的easy_op文件夹中
    make install DESTDIR=${PWD}/easy_op
}

export -f op_make
export -f op_config

让上面的配置即时生效: source ~/.bashrc

然后去源码文件夹下运行这3个命令了

op_config  op_make op_install

至此,编译出来的可执行程序能在所选的目标op中运行了.

 

使用openwrt sdk

ubuntu需先安装所需环境: apt install make gcc g++ unzip bzip2 libncurses5-dev

执行make menuconfig

然后不出意外就到这里来了:

 

编译的cups不能用-进不去后台

可能是cgi文件权限不对将/usr/lib/cups/cgi-bin文件夹以内部所有文件权限改为755

chmod 755 /usr/lib/cups/cgi-bin

cd /usr/lib/cups/cgi-bin/cgi-bin

chmod 755 *

 

 

参考感谢:https://www.yjblog.net/post/123.html

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注