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

用Clion开发Android AOSP native代码(完整操作步骤) 准备一个用Android.bp编译的工程。也可以用已有工程。使用简单的demo程序,相当于生成一个空的模板工程,可以从头开发程序。先已有一个可以用Android.bp正常编译的工程。打开环境变量开关。在aosp中编译工程,生成CMakeLists.txt文件。导入CLion中使用。 阅读详情

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可以避免此问题。

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

Vulkan着色器编译性能优化:Shaderc编译加速五大实战策略 在图形渲染管线中,着色器编译是将高级着色语言(如GLSL)转换为底层中间表示(如SPIR-V)的关键步骤,其性能直接影响开发迭代效率和运行时体验。编译过程涉及词法分析、语法解析、语义检查及多阶段优化,传统串行编译方式在面对大规模着色器时易成为性能瓶颈。通过引入预编译与缓存机制,可将编译工作前置,避免运行时开销;结合并行编译与依赖分析,能充分利用多核硬件加速构建流程。这些优化技术尤其在高性能渲染、游戏开发及移动图形应用中价值显著,能有效缩短CI/CD流水线时间、提升开发热重载速度。本文聚焦Vulkan生态主流 阅读详情

相关推荐

在Clion开发工具上使用NDK编译可以在安卓上执行的程序

在ndk r19版本以前,要在CLion上编译ndk只能采用独立工具链的方式,创建独立工具链供CLion调用。不过r19之后,ndk的默认工具链都是独立工具链了,不需要再创建了。 本文记录在Clion开发工具上使用NDK编译可以在安卓上执行程序的配置步骤。

qq_33163046的博客 5077

使用ninja命令提高单模块编译效率

转载:https://www.cnblogs.com/szsky/articles/10812959.html 文章格式也很好: 简练列了Android 编译用到的ninja背景,从4点分析生成ninja前动作的影响编译时间的点:文件大、生成时间长、多种情况会要求重新生成ninja、条件多。后面就是准备ninja编译的环境,和使用指南。 从Android 7.0开始,默认使用ninja进行编译。 从Android 8.0后,默认启用Soong、Android.bp。 在开发过程中,以前最经常使用的mm、.

weixin_42129235的博客 4613

android-cmake-project:使用CLion编辑android源代码并自动解析Android.mk-android source code

android-cmake-project 我们可以通过该项目读取和修改android native C / C ++代码。 我们可以编译自己的Android C / C ++代码以在Android设备上运行。 当然,感谢CLion团队,所有这些都是基于CLion的。 自动找到模块的路径。 自动解析模块的android.mk或android.bp文件。 自动解决模块依赖性。 自动添加模块及其从属模块的C / C ++源文件。 因此,您可以使用CLion的自动跳转功能。 这对我们阅读代码有很大帮助。 我配置了too​​lchian来编译我们自己的C / C ++程序并依赖Android的本机库。 对于Android.mk: 仅支持makefile的简单内置函数 对于Android.bp: 不支持某些bp文件样式。 以后可以用soong来解决这些问题。 测试环境 Andr

make px4fmu-v2_default报错:ninja:no work to do

make px4fmu-v2_default报错:ninja:no work to do

f1ang_的博客 4690

合宙Air780EP速连OneNET:AT+MQTT应用指南

本文详细讲解了合宙Air780EP使用AT指令通过MQTT接入OneNET的过程。

2401_82812461的博客 1389

在trae CN中使用conda环境(已解决)

Trae CN 是字节跳动于 2025 年 3 月 3 日发布的国内首个 AI 原生集成开发环境(AI IDE)123。

zwzscnds的博客 6937

cocos编译Android版本问题总结

今天编译cocos2d-x项目到Android平台遇到编译不通过的问题,编译错误提示是一堆乱码。 主要原因有: 1.文件编码格式错误 或 换行符格式错误,修改方法为,在VS2012里面选择 文件->高级保持选项,如下图 编码选择 简体中文(GB2312)-代码页936 ,行尾选择 Unix(LF) 2.Android.mk文件修改错误,文件名变更后,没有及时修改An

ctbinzi的专栏 2225

告别‘小爱同学’:用ESP32-S3和esp-sr SDK,从零打造一个离线语音助手(含完整代码)

本文详细介绍了如何利用ESP32-S3芯片和esp-sr SDK从零构建一个离线语音助手,涵盖硬件选型、声学设计、SDK配置及低功耗优化等关键步骤。通过实战案例和完整代码,帮助开发者实现自定义唤醒词和命令词,打造低成本、高隐私的本地语音控制解决方案。

weixin_29041195的博客 371

cocos编译Android版本号问题总结

今天编译cocos2d-x项目到Android平台遇到编译不通过的问题,编译错误提示是一堆乱码。 主要原因有: 1.文件编码格式错误 或 换行符格式错误,改动方法为,在VS2012里面选择 文件->高级保持选项,例如以下图 编码选择 中文简体(GB2312)-代码页936 ,行尾选择 Unix(LF) 2.Android.mk文件改动错误,文...

weixin_30660027的博客 104

Trae IDE与Playwright MCP:5分钟实现零代码网页数据抓取

网页数据抓取是数据采集和自动化处理中的基础技术,其核心原理是通过程序模拟浏览器行为,定位并提取页面中的结构化信息。传统方式依赖编写脚本处理网络请求、解析HTML和应对反爬机制,技术门槛较高。而结合AI与自动化工具的新范式,通过自然语言交互即可完成复杂操作,极大降低了技术门槛并提升了开发效率。这种技术价值在于将开发者从繁琐的编码中解放,使其更专注于数据分析和业务逻辑。在数据监控、市场调研、竞品分析等应用场景中,快速获取网页数据是关键需求。本文以Trae IDE集成Playwright MCP为例,演示如何通过

culi3118的博客 498

Python 爬虫实战:爬取 B 站 UP 主投稿数据,分析更新频率与粉丝互动

摘要:本文基于Python技术实现B站UP主投稿数据的自动化爬取与分析。通过解析B站WBI签名机制和API接口,获取UP主视频的标题、播放量、点赞数等核心数据。采用时间序列分析统计更新频率,结合相关性分析挖掘内容特征与粉丝互动的关联。结果显示编程类视频播放量最高,10-20分钟时长的视频表现最佳,投币数与播放量相关性达0.92。文章详细介绍了接口分析、反爬应对等关键技术,为内容创作者优化策略提供数据支持,同时强调遵守平台规范的爬取原则。

2503_91057718的博客 1537

C++学习——Clion中配置ninja

在这设置就行:

m0_37876745的博客 4673

汽车行业新能源汽车数据爬虫:抓取新能源汽车数据,分析市场发展和技术创新

在汽车行业,新能源汽车市场的发展和技术创新是当前的热点话题。通过抓取新能源汽车的数据,我们可以深入了解市场趋势、消费者需求以及技术创新的方向。本文将详细介绍如何使用 Python 爬虫技术抓取新能源汽车数据,并对数据进行分析和可视化展示。

u014481728的博客 1143

在CLion中运行Ninja项目

很多时候一些大型的C++工程项目虽然使用了CMake,但是对应的没有使用make而是Ninja,因为Ninja比较快。 而使用了Ninja的项目,CLion是不支持打开的,会报错: /usr/bin/cmake -DCMAKE_BUILD_TYPE=Debug -G "CodeBlocks - Unix Makefiles" /home/zhang/ClickHouse-stable-full/C...

个人博客 6024

Python爬虫实战:爬取ETF基金持仓变化

在python复制编辑本文详细介绍了如何使用Python的Scrapy框架爬取ETF基金的持仓变化信息,包括项目的搭建、数据的提取与存储、以及数据的可视化分析。通过本项目,读者可以掌握基本的网页爬虫技术,并应用于实际的财经数据采集与分析中。

2201_76125261的博客 629

构建企业级AI税务顾问:优化税收策略与合规

本文深入探讨了构建企业级AI税务顾问的重要性及其在实际应用中的价值。通过分析当前税务领域的挑战和问题,本文详细介绍了AI税务顾问的基本原理、技术架构、核心功能以及实践应用。文章以逐步分析的方式,从背景介绍、核心概念与联系、算法原理讲解、系统分析与架构设计、项目实战到最佳实践与展望,系统性地展示了如何利用AI技术优化税收策略并确保税务合规。文章旨在为企业和税务从业者提供实用的指导,推动AI在税务领域的创新与发展。在当前全球经济一体化的背景下,企业面临着越来越复杂的税务环境。首先,税收法规的复杂性日益增加。

AI天才研究院 1156

解决clion新建项目无法运行的问题

运行按钮是黑色:第一步:查看并修改CMakeLists.txt文件(已经增加了项目名就不用修改了)将project()和add_executable()中增加项目名称,如下:第二步:点击文件-->设置-->工具链-->编译器-->使cmake检测第三步:点击重新加载CMake项目运行按钮成功变绿

m0_63997099的博客 4432

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

ESP32例程编译出错问题

ESP32例程编译出错问题 新建的例程,esp32编译提示错误 ninja: no work to do. [648/923] Generating x509_crt_bundle FAILED: esp-idf/mbedtls/x509_crt_bundle cd /home/xx/workspace/esp32_work/http/simple/build/esp-idf/mbedtls && /home/xx/.espressif/python_env/idf4.3_py3.6_en

爱出名的狗腿子 4384

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

C++ / JNA - Java 调用 C++ 动态库 <.dylib / .so> By CLion

Java 通过 jna 库实现调用 C++ 动态库。

BITDDD小栈 2825

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

Clion新建项目报错

系统:Windows10 环境:MinGW 新建项目结果报错 "D:\Program Files\IDEA\apps\CLion\ch-0\203.7717.62\bin\cmake\win\bin\cmake.exe" -DCMAKE_BUILD_TYPE=Debug -G "CodeBlocks - MinGW Makefiles" D:\软件学习\C -- The C compiler identification is GNU 8.1.0 -- Check for working C compi.

飞仙的博客 744

Unix LF与Windows(CR LF)的区别?

Unix(LF)和Windows(CR LF)区别如下: 操作系统 表示下一行方法 DOS/Windows 回车+换行CR/LF 或:\r\n UNIX/Linux 换行LF 或:\n MAC OS 回车CR 或:\r 转换: 保存为windows(CR LF)格式的txt时候换行标志为:CR+LF(\r\n); 保存为unix(LF)格式的txt...

qq_37806107的博客 8987

Windows下使用CLion进行NDK编程(CMake)

众所周知,使用ndk编译代码有三种使用方式,分别是基于Make 的 ndk-build、CMake以及独立工具链。以前进行ndk编程都是使用ndk-build进行的,新建jni目录,编写Android.mk和Application.mk,使用Notepad++进行代码编写,然后执行ndk-build进行编译。不过随着项目越来越大,这种基于记事本的编辑简直无法忍受了,于是想到了使用CLion IDE进行代码的编写和编译。CLion使用的是CMake进行项目构建的。 在ndk...

lolzhzhzh的博客 3122
上一篇: [Linux Camera Driver] 关机插入USB Camera,开机之后不识别问题分析解决
下一篇: [Video and Audio Data Processing] YUV420P 图像加边框
1byte ≠ 8bit
博客等级 码龄8年 7242粉丝 170原创
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值