LLVM
万能菜道人
博客的书写一点都不好看,有的挺乱的,我在试着优化。
展开
-
使用clang交叉编译long double的计算出错
报错内容:undefinedsymbol __addxf3在实际的64位下位机并没有该报错。原因猜测:在window上位机可能环境并不全面,编译命令不完善,导致没有导入该定义。处理:暂时改为了double进行使用。...原创 2021-10-08 16:04:01 · 182 阅读 · 0 评论 -
使用clang在window下编译dll并使用
简单创建hello.c,hello.h,和main.c调用。hello.h:#ifndef HELLO_H#define HELLO_H#include<stdio.h>__declspec(dllexport) void hello();#endifhello.c:#include "hello.h"void hello(){ printf("hello\n");}编译为dll:clang hello.c -shared -o hello.dl原创 2021-08-10 15:35:17 · 1592 阅读 · 0 评论 -
undefined reference to `llvm::DisableABIBreakingChecks报错处理 LLVM
LLVM进行编译时使用了:clang++ -g -O3 f1.cpp `llvm-config --cxxflags`反馈报错:undefined reference to `llvm::DisableABIBreakingChecks处理方案:1.:clang++ -g -O3 f1.cpp `llvm-config --cxxflags` -w -DLLVM_DISABLE_ABI_BREAKING_CHECKS_ENFORCING=1...原创 2021-01-18 18:25:01 · 2040 阅读 · 0 评论 -
交叉编译时选项-march=的必要性
每个编译器都有默认的-march选项,其值一般都随主流芯片走。转自https://blog.csdn.net/huipengzhao/article/details/6724730?utm_source=blogxgwz0比如老一点的arm交叉编译器,默认的选项可能是-march=armv4t,新一点的则可能是-march=armv6等等。用老编译器编出来的二进制文件,只要没使用特殊指令集,大多数可以跑在新片子上,因为arm的向下兼容。但是用新编译器默认选项编出来的二进制可执行文件,基本上无法在原创 2021-01-06 14:43:35 · 2649 阅读 · 0 评论 -
使用LLVM在window交叉编译Linux内核模块
简单一些的普通hello程序交叉编译点击这里。环境搭建我目前做的不好,甚至是愚蠢,但是没人教。目前的技巧就是在linux中正常地编译一个内核模块和Makefile,正常使用之后,寻找一下具体执行的命令进行分解:(步骤大概是通用的,也许路径不一样)1.进入了/usr/src/linux-headers-3.4.9-rtai-686-pae/Makefile2.进入了/usr/src/linux-headers-3.4.9-common-rtai/Makefile3.进入了/usr/src/l原创 2020-06-12 16:52:42 · 1110 阅读 · 0 评论 -
使用LLVM在window交叉编译linux的hello程序
111原创 2020-05-26 15:42:24 · 2051 阅读 · 0 评论 -
LLVM的初步认识
LLVM是一个相当复杂的开源项目。因为它要做的比GCC更灵活,更强大。一句话描述LLVM是一个高度模块化的、可编译多种语言、可生成多平台可执行文件的编译器。特点模块化。结构清晰,可以轻松地将编译分为几个步骤进行独立的优化。模块甚至可以作为其他项目直接使用。中间代码语言无关化。这个当然是基于模块化,中间层相当独立。个人理解是:任何语言都能翻译为中间代码IR,中间代码IR可以生成任何平台的目标文件或可执行目标文件。可使用的平台Windows使用VS进行编译,比较舒服,个人成原创 2020-05-22 17:21:34 · 309 阅读 · 0 评论