Duc*_*een 37 c++ android llvm cross-compiling ios
我在LLVM IR表单中表示了我的所有依赖项和我的库.如何将我的库交叉编译为Linux的iOS,Android,Windows和Mac平台的共享对象(例如Ubuntu)?
请提供一个示例脚本,该脚本可以编译任何示例库,其中至少有一个依赖于您选择的另一个库到所有4个平台(例如OpenCV或ZeroMQ 4+).
ajk*_*ury 19
使用LLVM静态编译器(llc),您可以将LLVM IR编译为特定目标三元组的目标文件.虽然目标三元不记录非常好,LLVM的基础设施都是开源的,所以通过源代码快速搜索将带领你在这里.
不幸的是,没有关于可以使用的可能目标三元组的离散列表的文档.但是,如果您确切知道要定位的系统,那么构建三元组相当容易.从目标三重文档中,您可以看到:
三元组具有通用格式
<arch><sub>-<vendor>-<sys>-<abi>,其中:
arch=x86_64,i386,arm,thumb,mips,等.sub=例如 在ARM: ,v5,v6m,v7a,v7m等.vendor=pc,apple,nvidia,ibm,等.sys=none,linux,win32,darwin,cuda,等.abi=eabi,gnu,android,macho,elf,等.
一旦确定了正在使用的目标三元组,就可以使用该-mtriple标志将其指定为字符串.这里有些例子:
-mtriple=i686-pc-win32-gnu-mtriple=i686-pc-linux-gnu-mtriple=armv7-apple-ios-mtriple=arm-linux-androideabi接下来,您需要使用filetype标志指定要编译目标文件:
-filetype=obj
Run Code Online (Sandbox Code Playgroud)
如果我正确理解你的问题,这应该足够了.
如果您希望在所有平台和操作系统上使用单个文件,虽然这是可能的,但这需要大量工作,我不希望在stackoverflow上有关于此的答案.
| 归档时间: |
|
| 查看次数: |
1226 次 |
| 最近记录: |