[Unix LF] 冷门知识-Android.mk行尾导致的编译问题

0. 背景

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

[Unix LF] 冷门知识-Android.mk行尾导致的编译问题

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

[Unix LF] 冷门知识-Android.mk行尾导致的编译问题

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

[Unix LF] 冷门知识-Android.mk行尾导致的编译问题
然后mmm编译,提示no work to do,

[Unix LF] 冷门知识-Android.mk行尾导致的编译问题

1. What the fuck!

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

[Unix LF] 冷门知识-Android.mk行尾导致的编译问题

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

[Unix LF] 冷门知识-Android.mk行尾导致的编译问题

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

[Unix LF] 冷门知识-Android.mk行尾导致的编译问题
[Unix LF] 冷门知识-Android.mk行尾导致的编译问题

[Unix LF] 冷门知识-Android.mk行尾导致的编译问题

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

[Unix LF] 冷门知识-Android.mk行尾导致的编译问题

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

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

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

[Unix LF] 冷门知识-Android.mk行尾导致的编译问题

[Unix LF] 冷门知识-Android.mk行尾导致的编译问题

[Unix LF] 冷门知识-Android.mk行尾导致的编译问题

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

[Unix LF] 冷门知识-Android.mk行尾导致的编译问题

2. Solution

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

[Unix LF] 冷门知识-Android.mk行尾导致的编译问题
然后vim 看了这两个文件,能看出花来,都特么一模一样的,

[Unix LF] 冷门知识-Android.mk行尾导致的编译问题

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

[Unix LF] 冷门知识-Android.mk行尾导致的编译问题

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

[Unix LF] 冷门知识-Android.mk行尾导致的编译问题

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

[Unix LF] 冷门知识-Android.mk行尾导致的编译问题

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

[Unix LF] 冷门知识-Android.mk行尾导致的编译问题

以下是没问题的行尾:

[Unix LF] 冷门知识-Android.mk行尾导致的编译问题

以下是有问题的行尾:

[Unix LF] 冷门知识-Android.mk行尾导致的编译问题

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

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

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

[Unix LF] 冷门知识-Android.mk行尾导致的编译问题

[Unix LF] 冷门知识-Android.mk行尾导致的编译问题

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

[Unix LF] 冷门知识-Android.mk行尾导致的编译问题

[Unix LF] 冷门知识-Android.mk行尾导致的编译问题

[Unix LF] 冷门知识-Android.mk行尾导致的编译问题
[Unix LF] 冷门知识-Android.mk行尾导致的编译问题

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

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