T113 在ubuntu22.04适配buildroot编译环境

解决过程

automake版本

先把上面的补丁按照路径都放在路径上,这里首先会遇到一个问题,说automake-1.16版本太老,但使用上面的笔记编译后,再软链接就会说版本不匹配:

然后看到如下文章:

   2020-12-17 错误记录:automake 1.15.1-version mismatch_error:version mismatch.this is automake 1.15-优快云博客   

然后在out/t113/evb1_auto/buildroot/buildroot/build/gstreamer1-1.14.4/configure中,找到如下:

看到是有这两个选项的,那就在调用这个脚本的时候添加上,

是在out/t113/evb1_auto/buildroot/buildroot/build/gstreamer1-1.14.4/autogen.sh调用的,添加这两个选项:

...
CONFIGURE_DEF_OPT='--enable-maintainer-mode --enable-gtk-doc'

if test "x$package" = "xgstreamer"; then
  CONFIGURE_DEF_OPT="$CONFIGURE_DEF_OPT --enable-failing-tests --enable-poisoning"
elif test "x$package" = "xgst-plugins-bad"; then
  CONFIGURE_DEF_OPT="$CONFIGURE_DEF_OPT --with-player-tests"
fi
CONFIGURE_DEF_OPT="$CONFIGURE_DEF_OPT --with-aclocal --with-automake" #添加两个选项
...

然后因为这是在out目录下,下次编译就会重新解压gstreamer1-1.14.4源码,修改就没了,需要制作一个补丁,让编译前自动打补丁,制作补丁步骤如下:

先不要修改源码,将gstreamer1-1.14.4源码目录重命名成gstreamer1-1.14.4.old,然后拷贝一份在同级目录下

rsync -aPHq gstreamer1-1.14.4.old/ gstreamer1-1.14.4

然后来到此目录下:

cd out/t113/evb1_auto/buildroot/buildroot/build/gstreamer1-1.14.4

然后根据以上方法修改gstreamer1-1.14.4中的内容,这份源码作为修改后。

回到上一级目录:

cd ..

使用diff指令生成补丁,数字先随便填,后面文字写修改说明:

diff -arNu gstreamer1-1.14.4.old gstreamer1-1.14.4 > ../../../../../../buildroot/buildroot-201902/package/gstreamer1/gstreamer1/0005-resolve_automake_version_issues.patch

检查生成出来的补丁有没有多余内容:

然后看看哪个目录下有哪些补丁:

把补丁数字改成最后一个数字:

回到SDK根目录,删除out目录gstreamer1-1.14.4和gstreamer1-1.14.4.old:

rm -rf out/t113/evb1_auto/buildroot/buildroot/build/gstreamer1-1.14.4
rm -rf out/t113/evb1_auto/buildroot/buildroot/build/gstreamer1-1.14.4.old

继续编译文件系统:

./build.sh buildroot_rootfs

然后发现上面这个补丁打了还是报一样的错,证明不是在这里修改,无奈之下我直接修改源码gstreamer1-1.14.4源码目录下的configure文件,在文件中开头加入三行指令,就能编译过了,且无需修改系统上的任何文件:

aclocal
automake
autoreconf

自适应打补丁

因为要兼容其他ubuntu版本的编译,不能直接将补丁打好,这会导致其他版本的ubuntu环境无法编译。

我想到的方法是,在buildroot中创建一个目录:buildroot/select_package,将用到的补丁,按照buildroot/buildroot-201902/package/中的结构,拷贝过来:

然后在build/mkcmd.sh中的build_buildroot_rootfs()函数开头添加ubuntu22.04的判断:

function build_buildroot_rootfs()
{
mk_info "build buildroot ..."

# 判断当前环境是否为ubuntu22.04
if grep -qi "ubuntu" /etc/os-release && grep -qi "22.04" /etc/os-release; then
echo "Ubuntu 22.04 LTS detected."
cp -R $LICHEE_TOP_DIR/buildroot/select_package/* $LICHEE_TOP_DIR/buildroot/buildroot-201902/package/
fi
...

当为ubuntu22.04时,将select_package内的脚本拷贝至buildroot-201902/package/。

然后需要在buildroot-201902/package下编写.gitignore,忽略这些补丁:

bison/0004-dtc-parser.tab_add_extern_YYLTYPE_yylloc.patch

cmake/0003-host.patch

fakeroot/0003-libfakeroot.c-define-_stat_ver-if-not-already-define.patch

gstreamer1/gst1-plugins-bad/0003-make-fix.patch

gstreamer1/gst1-plugins-base/0001-make-fix.patch

gstreamer1/gstreamer1/0002-gstreamer-make43-wo-automake.patch

gstreamer1/gstreamer1/0003-resolve_automake_version_issues.patch

libgpg-error/0001-strerror-sys-c-error.patch

libgpg-error/0002-gawk_does_not_require_escape_characters.patch

m4/0003-m4.patch

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值