-
-
Notifications
You must be signed in to change notification settings - Fork 774
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
使用windows交叉编译arm64-v8a项目的问题 #777
Comments
在xmake.lua里面加入吗? |
你都没说清楚交叉编译到哪个平台?android? 其他linux cross toolchain? android的你看下文档 https://xmake.io/#/zh-cn/guide/configuration?id=android 其他交叉编译工具链见:https://xmake.io/#/zh-cn/guide/configuration?id=交叉编译 |
我需要用clang交叉编译到arm64平台,不是安卓的,但用安卓ndk自带的clang编译器 |
你都用了android ndk去编译arm64-v8a了,不就等于是编译android的库么,只不过你不是给android用而已 一样的用法,直接用 https://xmake.io/#/zh-cn/guide/configuration?id=android 里面说的方式就行了 |
我用xmake f -p android --ndk=D:\msys32\android-ndk-r20b/ -a x86 可以检测到编译器,但用 xmake f -p windows --ndk=D:\msys32\android-ndk-r20b/ -a x86 就不行, 如果不行,在不安装 Visual studio的情况下,有什么轻量级的编译器可以支持?clnag有吗? |
我就是希望用xmake + clang编译所有平台的的库 |
你既然用了ndk,就只能设置-p android平台,pc上x86你直接走vs不就好了,-p windows默认用的是vs的环境
可以用mingw,或者llvm clang都可以 |
那你就单独装llvm的工具链么 |
不同平台还是要用不同的工具链的,就像ndk虽然提供各种arch,但是依赖runtime是针对android的,不同平台都是不同的 你用非ndk的工具链编译的so,即使arch对,android下也不一定跑的起来 |
安装vs太费劲了,我只是需要生成dos可以运行的exe就可以了,主要是用来验证结果方便点而已。打算xmake + clang + vs code来实现,现在下载llvm之中 |
是的 |
或者用tcc 轻量点 |
msvc编译很多现在的库比较多写法不支持的,例如64位的LL tcc应该也是很老的编译器,估计也不行 |
那就llvm clang好了 |
xmake f -p windows --ndk=D:\Program Files\LLVM/ 不可以选择llvm吗? |
ndk是给android平台用的,windows平台编译你传ndk干啥,xmake f -p windows --cc=xxx --cxx=xxx --ld=xxx 或者走cross平台 xmake f -p cross --sdk=xxx --cc=xx 你自己看下交叉编译文档吧 ,都有详细说明 https://xmake.io/#/zh-cn/guide/configuration?id=%E4%BA%A4%E5%8F%89%E7%BC%96%E8%AF%91 |
像llvm这些常用的也需要自己指cc这些找出来啊? |
觉得也应该给你一个路径就可以了。我试试 |
我只是随手敲的,举个例子,看这里面的说明 根据自己的实际情况操作 我现在又没有llvm环境 |
我本来是认为llvm太常用了,xmake本来就支持的,像ndk这样就很好 |
所以我不是说根据 https://tboox.org/cn/2019/12/05/quickstart-9-cross-compile/ 这里面的说明一步步操作么,里面说了 默认只要设置--sdk=就能自动探测使用,不行再根据自己的实际情况一步步设置--cc=等其他参数 自己看下文章 稍微配置下就能用了 你先自己仔细看下文章和文档,llvm这种其他人稍微看下文档就能搞定,不用每次都要我给你打全配置命令的,我现在又没llvm环境 |
装下xmake-vscode插件,你到插件中心搜下xmake |
支持多相对路径这样吗? |
这还需要使用说明哈,就下面一排button摸索两下就会了,所以我没写 你到https://github.com/xmake-io/xmake-vscode/blob/master/README.md 的readme里面看下几张gif图演示就行,基本上就是全部使用方式了 |
你更新下dev然后用 --toolchain=llvm这个参数 也只是llvm工具链 (因为这版本我会对交叉编译作比较大的重构,来更好的支持各种常用工具链,先定义好参数规范,以免后期再有改动。#780 ) xmake update -s dev
xmake f -p cross --sdk=/xxx/llvm --toolchain=llvm -c
xmake |
我这边没遇到这个问题,不行就根据自己的情况,追加 --cc=/xxx/clang的全路径就行了。。 |
你没有用windows试过吧? |
我就是win10下下的最新llvm测试的。 |
我这里有两台电脑,一台安装了vs的win7可以用的。另外一台刚好需要用clang的用不了 |
configure |
现在是xmake 是每次都重新编译的吗?不是已经编译过的只链接? |
如果*.c出错没有做完,就会每次全部编译,否则只是链接。可能需要修正下。 |
gcc vs clang目前xmake都支持头文件依赖处理和增量编译,不会每次重编,我刚测了下 确认不会重编
不是问题,不过可以改成.exe |
编译完成删除了中间文件吗?我需要找*.map文件,但没有 |
build/.deps里面,自己的格式,我会去去提取解析 |
这两个.d的不就是么,就是用来分析头文件依赖来实现增量编译的,.map默认不会生成 应该是xmake不会自动设置各种flags,除非用户自己在xmake.lua设置 如果是msvc 就自己通过add_ldflags设置/map 的flags,如果是 llvm/clang 你自己google下对应flags 通过add_ldflags加上就行了,或者用clang-cl |
configure 为什么在这台电脑出错? |
不行 就先自己设置下 --cc=xxx/clang --cxx=xxx/clang 编译器全路径 |
自己看下错误么 clang崩了,请先确保clang能在你这台pc上正常运行 |
clang好像不能自己在windows安装使用的,需要vs或mingw? |
如果是这样,有什么编译器推荐下? |
不知道 没试过 我这都是装了vs的 你可以提个issues给llvm问下 |
安装vs算了 |
可以看下 https://www.zhihu.com/question/268562772 似乎还真没法完全不依赖vs,要么你装mingw好了 |
或者装intel的编译器 icc,这个应该可以完全独立,不过我还是好久之前用的了 xmake里面还没怎么支持 需要自己挨个设置--cc --cxx --ld 另外这个需要收费的 不过也有x版本 可以找找 |
除了这些 还有些比较冷门的,但也是完全独立的你可以看看,比如 |
我重构好了 详情可以看下 #780 现在工具链和平台做了分离,你可以直接在win平台使用llvm工具链,这样生成的文件后缀就会保持.exe .lib xmake f --toochain=llvm --sdk=/xxx -c 不用特地切到cross平台,除非是交叉编译 可以通过xmake update dev更新到dev试试 |
描述问题详情
请在这描述你的问题详情。
使用xmake create -t shared -l c test生成一个新的项目,如何将这个项目修改为交叉编译arm64-v8a的?
The text was updated successfully, but these errors were encountered: