libjit的编译问题

libjit目前还在更新,但是版本号已经很久没有更新,
https://www.gnu.org/software/libjit/

在windows上编译libjit出现很多问题,记录如下:

  1. YAC6xSim工程中使用的libjit有个vs工程,但是发现vs->Platform Toolset使用的是Intel ICC 编译器。
    一开始不是很理解,改为vs自己的编译器,发现很多c语法会报错:(void *)指针不支持运算,这个特性是gcc扩展属性支持的。
    Intel ICC 也应该是支持,所以作者使用了Intel ICC 编译器。但是没找到怎么安装ICC编译器,所以我想通过Mingw编出litjit.lib
  2. 使用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没办法生成,后面应该会用到该文件。网上没找到解决办法。
  3. 于是我想通过wsl中生成jit-apply-rules.h,然后再回到Mingw继续编译
    编译中遇到问题:工程中很多文件是dos格式,在wsl中需要使用dos2unix进行转换
    顺利编译完成,可以生成库文件
    image
    但这个库文件在windows下没办法使用。
  4. 把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了。

posted @ 2025-07-30 18:33  pch126  阅读(8)  评论(0)    收藏  举报