首页
社区
课程
招聘
[求助]求一个Windows下交叉编译Linux的工具
发表于: 2019-12-13 12:00 4179

[求助]求一个Windows下交叉编译Linux的工具

2019-12-13 12:00
4179
一直使用NDK编译,可是太麻烦了
单纯使用NDK的话不支持Cmake

如果是用要想使用Cmake的话必须使用Gradle
但是想使用Gradle的话必须建立Android项目

太麻烦了
请问有没有好用的交叉编译工具
最好支持各种ABI x86 arm 等等

[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

收藏
免费 1
支持
分享
最新回复 (10)
雪    币: 5855
活跃值: (438)
能力值: ( LV4,RANK:45 )
在线值:
发帖
回帖
粉丝
2
windows linux 子系统了解下?
2019-12-13 12:45
0
雪    币: 4889
活跃值: (2275)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
Visual studio + VisualGDB + Sourcery CodeBench Lite Edition
http://gnutoolchains.com/download/
最后于 2019-12-13 13:00 被lionnnn编辑 ,原因:
2019-12-13 12:56
0
雪    币: 1110
活跃值: (3274)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
4

NDK 支持 CMake,官方文档有示例。给你一个我写的仅供参考。Windows 下 Git Bash 运行。

#!/bin/bash
# ...略
ABIS=("armeabi-v7a" "arm64-v8a" "x86")
for ABI in ${ABIS[*]}; do
    $ANDROID_CMAKE/bin/cmake \
        -G "Android Gradle - Ninja" \
        -DANDROID_ABI=$ABI \
        -DANDROID_NDK=$ANDROID_NDK \
        -DCMAKE_BUILD_TYPE=Release \
        -DCMAKE_MAKE_PROGRAM=$ANDROID_CMAKE/bin/ninja \
        -DCMAKE_TOOLCHAIN_FILE=$ANDROID_NDK/build/cmake/android.toolchain.cmake \
        -DANDROID_NATIVE_API_LEVEL=18 \
        -DCMAKE_TOOLCHAIN=clang \
        -DCMAKE_LIBRARY_OUTPUT_DIRECTORY=$OUT_DIR/symbol/$ABI \
        $TARGET_PROJECT_DIR
    $ANDROID_CMAKE/bin/ninja
done
# ...略
最后于 2019-12-13 14:21 被Amun编辑 ,原因:
2019-12-13 14:12
0
雪    币: 2250
活跃值: (180)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
5
cygwin/WSL WSL编译时候加上target和host就行了,不过为什么不直接在linux下编译?
2019-12-13 14:58
0
雪    币: 582
活跃值: (317)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
谢谢老哥 已经找到办法了额 
Cmake有个命令可以借助编译链工作
已经解决
2019-12-13 21:39
0
雪    币: 582
活跃值: (317)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
岁月别催 cygwin/WSL WSL编译时候加上target和host就行了,不过为什么不直接在linux下编译?
不用Linux是因为ABI的原因..
2019-12-13 21:40
0
雪    币: 1540
活跃值: (2807)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
AAAyangcheng 谢谢老哥 已经找到办法了额 Cmake有个命令可以借助编译链工作 已经解决
你的ndk工具包能编译出64位的arm程序吗?
2020-8-6 16:09
0
雪    币: 582
活跃值: (317)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
9
limee 你的ndk工具包能编译出64位的arm程序吗?
没注意过,我只是在X86的模拟器上成功了,没有在真机上使用 按理说应该是可以的
2020-8-8 18:33
0
雪    币: 183
活跃值: (563)
能力值: ( LV9,RANK:150 )
在线值:
发帖
回帖
粉丝
10
用 xmake 就行了,不需要gradle ,直接指定ndk和平台架构就行了

xmake f -p android --ndk=c:\android-ndk-r20e 
xmake

支持跨平台、各种交叉编译工具链的快速支持,支持几十种常用工具链,可以直接命令行编译,也有gradle插件,对接gradle编译

vscode/idea/clion插件也都有

https://github.com/xmake-io/xmake
2020-10-14 13:50
0
雪    币: 183
活跃值: (563)
能力值: ( LV9,RANK:150 )
在线值:
发帖
回帖
粉丝
11
另外,如果第三方库代码,没用xmake.lua维护,已经使用了 autotools/cmake维护,xmake也支持快速对接 cmake/autotools,将ndk的环境传递给他们,实现交叉编译

只需要设置--trybuild=cmake/autotools 开启trybuild模式编译就行了,用户不用再操心如果配置cmake的各种android 编译参数和ndk环境,只需要一个ndk跟路径,xmake会自动探测所有

xmake f -p android --ndk=c:\android-ndk-r20e --trybuild=cmake 
xmake

切arch只需要传递:-a armeabi-v7a/arm64-v8a 
2020-10-14 13:54
0
游客
登录 | 注册 方可回帖
返回
//