libjit的编译问题
libjit目前还在更新,但是版本号已经很久没有更新,
https://www.gnu.org/software/libjit/
在windows上编译libjit出现很多问题,记录如下:
- YAC6xSim工程中使用的libjit有个vs工程,但是发现vs->Platform Toolset使用的是Intel ICC 编译器。
一开始不是很理解,改为vs自己的编译器,发现很多c语法会报错:(void *)指针不支持运算,这个特性是gcc扩展属性支持的。
Intel ICC 也应该是支持,所以作者使用了Intel ICC 编译器。但是没找到怎么安装ICC编译器,所以我想通过Mingw编出litjit.lib - 使用Mingw编译
litjit会把很多子目录下的都编译,但并不是所有的都需要编译,很多是文档目录
SUBDIRS = tools include jit jitdynamic jitplus dpas tutorial tests doc
在编tools目录的时候,遇到:
./gen-apply >../jit/jit-apply-rules.h
make: *** [Makefile:532: ../jit/jit-apply-rules.h] Error 139
jit-apply-rules.h没办法生成,后面应该会用到该文件。网上没找到解决办法。 - 于是我想通过wsl中生成jit-apply-rules.h,然后再回到Mingw继续编译
编译中遇到问题:工程中很多文件是dos格式,在wsl中需要使用dos2unix进行转换
顺利编译完成,可以生成库文件
![image]()
但这个库文件在windows下没办法使用。 - 把jit-apply-rules.h copy到Mingw,跳过tools目录,继续编。
出现这个报错:
jit-insn.c: In function 'initialize_setjmp_block':
jit-insn.c:7248:63: error: 'setjmp' undeclared (first use in this function); did you mean '_setjmp3'?
7248 | value = jit_insn_call_native(func, "setjmp", (void *) setjmp,
| ^~~~~~
| _setjmp3
jit-insn.c:7248:63: note: each undeclared identifier is reported only once for each function it appears in
make[3]: *** [Makefile:635: jit-insn.lo] Error 1
make[3]: Leaving directory '/c/work/YAC6xSim/p3/libjit_last/jit'
到此为止,不搞了。后面有空再搞。知道YAC6xSim作者为啥用ICC了。


浙公网安备 33010602011771号