[Unix LF] Android.mk行尾导致的编译问题

本文记录了解决SE4850传感器库编译问题的过程,作者在遇到“noworktodo”错误后,通过对比文件在Windows和Linux下的差异,发现行尾格式不一致导致的问题,并分享了使用Notepad++调整行尾格式为Unix类型以解决问题的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

0. 背景

本来以为今天是平凡(上班又迟到5分钟,又要被扣钱)愉快(领导又在催我干活)的一天;

在这里插入图片描述

我被要求调试一个扫码头,叫SE4850,从公司代码库找到了代码。

在这里插入图片描述

基本操作啊,想着上午先把这个sensor的库搞起来;

在这里插入图片描述
然后mmm编译,提示no work to do,

在这里插入图片描述

1. What the fuck!

这尼玛啥意思??? 啥叫no work to do?

在这里插入图片描述

然后在驱动里面随便加了点东西,再编译试试;

在这里插入图片描述

What? 这特么都不报错,编译器兼容性到这地步了,还是编译器累了要休息了?

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

中间经过了很多骚操作,比如检查device-vendor.mk(其实与此无关),比如用camera 前面的mk文件编译mmm vendor/qcom/proprietary/mm-camera/mm-camera2/media-control,全编,等都木得用;

在这里插入图片描述

我不信邪,照着别的sensor改了一波,发现可以编译生成so库,但是之前我改的还是不行;

之后经过一系列头脑风暴…我特么都气的气血上涌了…-_-||

最终问题变成以下这样:
有两份文件,文件大小,文件名字,文件里面的内容全一模一样,但是一份可以编译生成so库,一份不可以;

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

卧槽这是为啥啊…难道我有毒,所以我写的代码也有毒?

在这里插入图片描述

2. Solution

去问了下同事,他个说,让我在linux下面对比看一下,有些东西在windows下面看不出来,但是在linux下面可以……

在这里插入图片描述
然后vim 看了这两个文件,能看出花来,都特么一模一样的,

在这里插入图片描述

但是我退出的时候,灵机一动,ls –l看了下这两个文件:

在这里插入图片描述

两个一模一样的文件,居然大小不一样.一个691字节,一个718字节(有问题的那个)

在这里插入图片描述

边上大佬说,用Notepad++看,这个看这个文件的行尾(格式),好像可以改;

在这里插入图片描述

注意看右下角的红框,这玩意是个啥,用NotePad++,点击这个图标,字符就出来了;

在这里插入图片描述

以下是没问题的行尾:

在这里插入图片描述

以下是有问题的行尾:

在这里插入图片描述

所以这个是代码无法编译OK的根本原因!!!!

这玩意咋改:百度链接如下
https://jingyan.baidu.com/article/ca2d939df77099aa6d31ce4b.html

此问题是这样造成的,我在windows下面新建了,这个android.mk文件,改了内容之后拷贝到服务器上,但是由于我的Notepad++默认的行尾是windows类型的,导致其无法编译。

在这里插入图片描述

在这里插入图片描述

把Notepad++的设置设置成Unix的行尾,再新建一个Android.mk文件,然后替换;
Mmm编译一波
mmm vendor/qcom/proprietary/mm-camera/mm-camera2/media-controller/modules/sensors/sensor/libs/se4850_mono/

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

OK,库文件成功编译出来了,Notepad++设置行尾默认Unix可以避免此问题。

本文结束,希望对大家有帮助!

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值