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

这篇具有很好参考价值的文章主要介绍了在Clion开发工具上使用NDK编译可以在安卓上执行的程序。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1. 前言

        因为工作需要,我要将一份C语言代码编译成可执行文件传送到某安卓系统里执行。

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

        在ndk r19版本以前,要在CLion上编译ndk只能采用独立工具链的方式,创建独立工具链供CLion调用。

        不过r19之后,ndk的默认工具链都是独立工具链了,不需要再创建了。

        本文记录在Clion开发工具上使用NDK编译可以在安卓上执行程序的配置步骤。

2. NDK下载安装

从以下路径下载NDK

NDK 下载  |  Android NDK  |  Android Developers

选择 Windows 64 位 发表此博客时,最新版本是

android-ndk-r25c-windows.zip

我意外的选了个 不受支持的旧版本android-ndk-r19c,小伙伴们请安装最新的。

下载后解压缩。

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

然后将解压后的目录配置到系统环境变量 path 中

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

 CMD执行命令

ndk-build.cmd -v

看看是否安装成功

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

 OK,显示除了版本号,安装成功。

3.Clion配置与执行

        打开Clion,新建一个C project。

        打开菜单File->Settings->Build,Execution,Deployment->Toolchains,点击加号选择“MinGW”新建一个工具链,如果系统没有MinGW的话,可以点击菜单右边的“Download”,在新打开的网页中点击“Sourceforge”进行下载安装,安装完成后还需要添加环境变量。

        我的环境已经有了MinGw, 工具链配置如下图所示

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

主要是Make、C Compiler、C++ Compiler这三个路径的配置。

打开菜单File->Settings->Build,Execution,Deployment->CMake,点击加号添加新的CMake项目配置,Name名字随便起。Toolchains选择刚才的工具链配置。 CMake options点击右边的展开,输入以下配置项。

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

 CMake options配置内容复制如下:

-DCMAKE_TOOLCHAIN_FILE="D:\softwaretmp\android-ndk-r19c-windows-x86_64\android-ndk-r19c\build\cmake\android.toolchain.cmake"
-DCMAKE_SYSTEM_NAME=Android
-DANDROID_ABI=arm64-v8a
-DCMAKE_ANDROID_NDK="D:\softwaretmp\android-ndk-r19c-windows-x86_64\android-ndk-r19"
-DCMAKE_SYSTEM_VERSION=19
-DCMAKE_C_FLAGS=""
-DCMAKE_CXX_FLAGS=""
-DCMAKE_ANDROID_NDK_TOOLCHAIN_VERSION=clang

        其中最重要的是CMAKE_TOOLCHAIN_FILE、CMAKE_SYSTEM_NAME以及ANDROID_ABI这三项的配置,第一个指定ndk的CMake配置文件,它位于/build/cmake/android.toolchain.cmake,第二个是目标系统平台,这里为Android,第三个是架构,这里手机CPU是arm64-v8a架构的,所以用arm64-v8a。

查看CMakelists.txt,如下,未做改动

cmake_minimum_required(VERSION 3.23)
project(C_plus_test)

set(CMAKE_CXX_STANDARD 14)

add_executable(C_plus_test main.cpp)

        配置完成,写一个最简单的hello world程序测试以下:

#include <stdio.h>

int main()
{
    printf("hello world\n");
    return 0;
}

点击编译:

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

执行日志:

"D:\Program Files\JetBrains\CLion 2022.2.4\bin\cmake\win\bin\cmake.exe" -DCMAKE_BUILD_TYPE=Debug -DCMAKE_MAKE_PROGRAM=D:/softwaretmp/android-ndk-r19c-windows-x86_64/android-ndk-r19c/prebuilt/windows-x86_64/bin/make.exe -DCMAKE_C_COMPILER=D:/softwaretmp/android-ndk-r19c-windows-x86_64/android-ndk-r19c/toolchains/llvm/prebuilt/windows-x86_64/bin/clang.exe -DCMAKE_CXX_COMPILER=D:/softwaretmp/android-ndk-r19c-windows-x86_64/android-ndk-r19c/toolchains/llvm/prebuilt/windows-x86_64/bin/clang++.exe -DCMAKE_TOOLCHAIN_FILE=D:\softwaretmp\android-ndk-r19c-windows-x86_64\android-ndk-r19c\build\cmake\android.toolchain.cmake -DCMAKE_SYSTEM_NAME=Android -DANDROID_ABI=arm64-v8a -DCMAKE_ANDROID_NDK=D:\softwaretmp\android-ndk-r19c-windows-x86_64\android-ndk-r19 -DCMAKE_SYSTEM_VERSION=19 -DCMAKE_C_FLAGS= -DCMAKE_CXX_FLAGS= -DCMAKE_ANDROID_NDK_TOOLCHAIN_VERSION=clang -G "CodeBlocks - MinGW Makefiles" -S C:\Users\harry_zhang\CLionProjects\C_plus_test -B C:\Users\harry_zhang\CLionProjects\C_plus_test\cmake-build-debug-mingw
-- ANDROID_PLATFORM not set. Defaulting to minimum supported version
16.
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Check for working C compiler: D:/softwaretmp/android-ndk-r19c-windows-x86_64/android-ndk-r19c/toolchains/llvm/prebuilt/windows-x86_64/bin/clang.exe - skipped
-- Detecting C compile features
-- Detecting C compile features - done
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Check for working CXX compiler: D:/softwaretmp/android-ndk-r19c-windows-x86_64/android-ndk-r19c/toolchains/llvm/prebuilt/windows-x86_64/bin/clang++.exe - skipped
-- Detecting CXX compile features
-- Detecting CXX compile features - done
-- Configuring done
-- Generating done
-- Build files have been written to: C:/Users/harry_zhang/CLionProjects/C_plus_test/cmake-build-debug-mingw

[Finished]

由于ANDROID_PLATFORM没有设置,系统默认取最小值16。

根据编译打印的最后一行,打开目录 C:/Users/harry_zhang/CLionProjects/C_plus_test/cmake-build-debug-mingw

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

这里的C_plus_test就是生成的文件。这个名字是我clion新建项目时随便取的。

4.adb传送到安卓设备调试成功

devicename:/data/local/tmp # ls -l | grep C_plus_test
-r--r--r-- 1 shell shell     10344 2023-03-21 19:18 C_plus_test
devicename:/data/local/tmp # chmod +x C_plus_test
devicename:/data/local/tmp # ./C_plus_test
hello world

执行成功。

5.最后

        其实我的安卓环境应该 APP_PLATFORM=android-29,但是低版本也是可以执行的。

        如果你想改会原来的编译和执行环境,可以选择Custom Compier,打勾保存,即可。

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

 文章来源地址https://www.toymoban.com/news/detail-410921.html

到了这里,关于在Clion开发工具上使用NDK编译可以在安卓上执行的程序的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • flutterui构建工具,Java+性能优化+APP开发+NDK+跨平台技术

    面试的时候除了算法题,其他被怼成弟弟,没想到面试官给过了,一天面完三面并且一周之后收到了oc,觉得自己非常的幸运,终于得到了大厂的认可(虽然是颗白菜)。这里建议网友如果有自己亮点的话,还是可以勇敢大胆的尝试一下大厂,毕竟除了实力之外,运气与机遇也占

    2024年03月15日
    浏览(57)
  • 【开发工具】 我居然可以使用Office Tool Plus 安装上Office 真的是太不可思议了

    🚀 个人主页 极客小俊 ✍🏻 作者简介:web开发者、设计师、技术分享博主 🐋 希望大家多多支持一下, 我们一起进步!😄 🏅 如果文章对你有帮助的话,欢迎评论 💬点赞👍🏻 收藏 📂加关注 Office Tool Plus (简称OTP)是一款微软 Office 办公软件 下载、安装、管理 的按照部

    2024年02月02日
    浏览(39)
  • Clion配置C++程序用Android NDK编译,并用真机远程调试(临时目录和termux)

    :ndk, clion, cmake, usb, tcp, ssh, remote debug, remote gdb debug, termux, tabby 假设已经有了一个在windows下能正常编译运行的C++控制台程序,本文仅说明如何在windows下交叉编译到android并调试。C++库类似。 要点提示: 对于unity用户,建议用unity 2022自带的 ndk r23 。理论上可以用新版,但

    2024年02月21日
    浏览(55)
  • 微信小程序逆向 小程序包使用unveilr工具解包后在开发者工具报[ WXML 文件编译错误] xxx.wxs Unexpected token `}`

    微信小程序逆向 使用解包工具后后在开发者工具报[ WXML 文件编译错误] xxx.wxs Unexpected token } 页面上则报编译.wxml文件错误… 解决方案: 很简单,因为是解包出来的,一般代码都是没有错的,我们只需要微信微信开发者工具中的资源管理器或者其他地方,找到这个文件,然后

    2024年02月08日
    浏览(54)
  • 扒开源安卓性能测试工具moblieperf源码——开发属于你自己的性能稳定性测试工具

    moblieperf由阿里巴巴开源的Android性能测试工具 下载:官方源码地址 mobileperf github 使用: 使用pycharm打开下载的项目 使用只需要修改配置文件 config.conf 即可 运行采集:a.mac、linux 在mobileperf工具根目录下执行sh run.sh ; b.windows 双击run.bat 配置图:(简单使用只需要修改包名和设

    2024年02月19日
    浏览(55)
  • 小程序-真机上接口无法调通,开发者工具上可以

    近期在对接小程序,在这里记录一下,我们在对接小程序的时候碰到的一些奇奇怪怪的问题。 其中一个问题如下: 真实效果如下图 开发者工具上可以,访问没有人任何问题。 真机上接口无法调通,也没有报错,也没有返回值。 检查自己的小程序服务器域名配置(这个一般

    2024年02月14日
    浏览(39)
  • NDK交叉编译FFmpeg安卓编译ffmpeg

    编译工具下载 参考这个:https://blog.csdn.net/gaoliang0/article/details/81913291 或者官网 NDK编译工具下载: https://developer.android.google.cn/ndk/downloads?hl=zh-cn 官网老版本: https://github.com/android/ndk/wiki/Unsupported-Downloads 或者从我的百度网盘: 链接:https://pan.baidu.com/s/1FEtM6mVNgER_DvC2myHB5Q?pwd=28l9 提

    2024年02月08日
    浏览(37)
  • 活用 F12 开发者工具,测试效率原来可以提高这么多

    F12开发者工具是浏览器自带的一个开发调试工具,因为可以用F12快捷键直接启动,所以简称为F12工具。 F12工具因为有如下的特点,所以被开发和测试人员广泛使用: 1.简单轻量免安装,是浏览器内置的开发者工具,可以提供捕获浏览器的数据报文的功能; 2.作为浏览器的一部

    2024年02月04日
    浏览(51)
  • 【Linux环境基础开发工具】编译器-gcc/g++

    上一篇博客, 我们学习了vim编辑工具,学会了怎么写代码, 这篇文章,我将分享代码该怎么编译的问题。 目录 写在前面: 1. gcc和g++介绍 2. gcc是如何编译程序的 1. 预处理 2. 编译 3. 汇编 4. 链接 3. gcc的选项介绍 4. 我们使用的函数是哪来的 5. 我们的.o文件和库是如何链接的?

    2024年02月10日
    浏览(47)
  • 从入门到精通:解锁Linux开发工具和编译器的力量

    vim是一个方便编程的功能特别丰富的文本编辑器,凭借他简洁的三种模式以及丰富的快捷键操作,可使得熟练使用的人做到不使用鼠标完成代码的编写,所以深受人们喜爱。 vim是一个 多模式 的编辑器——命令行模式、插入模式、底行模式。三种模式的转换及关系如下: 下面

    2024年02月11日
    浏览(43)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包