草庐IT

llvm-libc

全部标签

c++ - 将 LLVM JIT 代码链接到静态 LLVM 库?

我正在实现一个跨平台(MacOSX、Windows和Linux)应用程序,该应用程序将对财务数据进行大量CPU密集型分析。出于速度原因,大部分分析引擎将用C++编写,用户可访问的脚本引擎与C++测试引擎交互。随着时间的推移,我想编写几个脚本前端来模拟其他流行的软件,并拥有大量的用户群。第一个方面将是类似VisualBasic的脚本语言。我认为LLVM非常适合我的需求。由于数据量巨大,性能非常重要;运行一次测试可能需要数小时或数天才能得到答案。我相信使用LLVM还可以让我使用单一的后端解决方案,同时随着时间的推移为不同风格的脚本语言实现不同的前端。测试引擎本身将与界面分离,测试甚至会在单

c++ - 为什么 libc++ std::vector 在内部保留三个指针而不是一个指针和两个大小?

我正在查看libc++中std::vector的实现,我注意到它在内部保留了三个指针(一个指向开始,一个指向结束,一个指向分配内存的末尾),而不是我本能的做,即一个指向开始的指针和两个size和capacity成员。这里是来自libc++的的代码(忽略压缩对,我知道是什么意思)。pointer__begin_;pointer__end_;__compressed_pair__end_cap_;我注意到其他标准库也这样做(例如VisualC++)。我看不出这个解决方案应该比其他解决方案更快的任何特殊原因,但我可能错了。那么“三指针”解决方案优于“指针+大小”解决方案有什么特别的原因吗?

c++ - 为什么 libc++ std::vector 在内部保留三个指针而不是一个指针和两个大小?

我正在查看libc++中std::vector的实现,我注意到它在内部保留了三个指针(一个指向开始,一个指向结束,一个指向分配内存的末尾),而不是我本能的做,即一个指向开始的指针和两个size和capacity成员。这里是来自libc++的的代码(忽略压缩对,我知道是什么意思)。pointer__begin_;pointer__end_;__compressed_pair__end_cap_;我注意到其他标准库也这样做(例如VisualC++)。我看不出这个解决方案应该比其他解决方案更快的任何特殊原因,但我可能错了。那么“三指针”解决方案优于“指针+大小”解决方案有什么特别的原因吗?

c++ - 在 travis for clang 上使用不同的 libc++ 版本

Travis使用UbuntuTrusty,默认的libc++版本是svn199600。但是,我想使用不同的(较新的)版本进行测试,就像我已经使用不同的clang版本一样。我的当前.travis.yml如下所示:language:genericdist:trustysudo:requiredmatrix:include:-env:CXX=g++-7CC=gcc-7addons:apt:packages:-g++-7sources:&sources-ubuntu-toolchain-r-test-llvm-toolchain-precise-llvm-toolchain-precise-3

c++ - 在 travis for clang 上使用不同的 libc++ 版本

Travis使用UbuntuTrusty,默认的libc++版本是svn199600。但是,我想使用不同的(较新的)版本进行测试,就像我已经使用不同的clang版本一样。我的当前.travis.yml如下所示:language:genericdist:trustysudo:requiredmatrix:include:-env:CXX=g++-7CC=gcc-7addons:apt:packages:-g++-7sources:&sources-ubuntu-toolchain-r-test-llvm-toolchain-precise-llvm-toolchain-precise-3

c++ - 如何使用 llvm 生成机器码

我目前正在使用llvm进行编译器项目。我遵循了各种教程,直到我有一个解析器来创建语法树,然后使用提供的IRBuilder将树转换为llvm模块。我的目标是创建一个可执行文件,但我对下一步该做什么感到困惑。我找到的所有教程都只是创建llvm模块并使用Module.dump()打印出程序集。此外,我能找到的唯一文档是针对llvm开发人员的,而不是针对项目的最终用户的。如果我想生成机器码,接下来的步骤是什么?llvm-mc项目看起来可以做我想做的事,但我找不到任何关于它的文档。也许我希望llvm做一些它没有做的事情。我的期望是我可以构建一个模块,然后会有一个我可以用模块调用的API,一个目标

c++ - 如何使用 llvm 生成机器码

我目前正在使用llvm进行编译器项目。我遵循了各种教程,直到我有一个解析器来创建语法树,然后使用提供的IRBuilder将树转换为llvm模块。我的目标是创建一个可执行文件,但我对下一步该做什么感到困惑。我找到的所有教程都只是创建llvm模块并使用Module.dump()打印出程序集。此外,我能找到的唯一文档是针对llvm开发人员的,而不是针对项目的最终用户的。如果我想生成机器码,接下来的步骤是什么?llvm-mc项目看起来可以做我想做的事,但我找不到任何关于它的文档。也许我希望llvm做一些它没有做的事情。我的期望是我可以构建一个模块,然后会有一个我可以用模块调用的API,一个目标

gitlab 安装,libc.so.6: version `GLIBC_2.25‘ not found

背景ubuntu16.04以及ubuntu18.05安装gitlab都报错误:/opt/gitlab/embedded/bin/ruby:/lib/x86_64-linux-gnu/libc.so.6:version`GLIBC_2.25'notfound(requiredby/opt/gitlab/embedded/lib/libruby.so.2.4)解决方法(一定要看完本文)一、安装glibc可以看出来应该是我们的GLIBC版本过低的原因造成的,下面我们用命令查看glibc的版本strings/usr/lib64/libc.so.6|grepGLIBC_或者strings/lib/x86

gitlab 安装,libc.so.6: version `GLIBC_2.25‘ not found

背景ubuntu16.04以及ubuntu18.05安装gitlab都报错误:/opt/gitlab/embedded/bin/ruby:/lib/x86_64-linux-gnu/libc.so.6:version`GLIBC_2.25'notfound(requiredby/opt/gitlab/embedded/lib/libruby.so.2.4)解决方法(一定要看完本文)一、安装glibc可以看出来应该是我们的GLIBC版本过低的原因造成的,下面我们用命令查看glibc的版本strings/usr/lib64/libc.so.6|grepGLIBC_或者strings/lib/x86

鸿蒙轻内核M核源码分析:LibC实现之Musl LibC

摘要:本文学习了LiteOS-M内核MuslLibC的实现,特别是文件系统和内存分配释放部分。本文分享自华为云社区《鸿蒙轻内核M核源码分析系列十九MuslLibC》,作者:zhushy。LiteOS-M内核LibC实现有2种,可以根据需求进行二选一,分别是musllibC和newlibc。本文先学习下MuslLibC的实现代码。文中所涉及的源码,均可以在开源站点kernel_liteos_m:LiteOSkernelfordeviceswithfewresources,suchastheMCU|适用于MCU等各种资源极小设备的LiteOS内核 获取。LiteOS-M内核提供了和内核相关的文件系