余瑜的博客 余瑜的博客
首页
  • 并发
  • 线程池
  • spring
  • maven
  • 其他
  • redis
  • mysql
  • linux
  • zookeeper
  • docker
  • terminal
  • kong插件开发
  • 资料
  • leetCode-简单
  • blog
  • 其他
关于
GitHub (opens new window)
首页
  • 并发
  • 线程池
  • spring
  • maven
  • 其他
  • redis
  • mysql
  • linux
  • zookeeper
  • docker
  • terminal
  • kong插件开发
  • 资料
  • leetCode-简单
  • blog
  • 其他
关于
GitHub (opens new window)
  • linux

  • zookeeper

  • docker

  • terminal

  • kong插件开发

    • 开发环境搭建
    • go注册consul
    • konga配置
    • 插件开发
    • 调用c文件
      • 前言
      • 安装gcc
      • 操作脚本
        • 下载
        • 修改配置信息
        • 打包生成lua可执行文件
        • 运行 test
      • 在kong中调用so文件
      • 结语
    • 踩坑
  • 运维
  • kong插件开发
余瑜
2021-05-13
目录

调用c文件

# 前言

由于在使用lua5.1的string.format() 发现将 number转为string时, 如果number过长达到14位就有可能会导致结果的后几位不正确, 网上查到使用lua作者的写的脚本可以解决, 然后做了尝试

# 安装gcc

brew install gcc
1

# 操作脚本

# 下载

点开脚本链接 (opens new window) , 找到lint64 下载并解压, 我们得到以下文件

lint64-101
├── Makefile 打包文件
├── README 使用说明
├── lint64.c 需要调用的c文件
├── mycompat.h
└── test.lua 测试文件
1
2
3
4
5
6

# 修改配置信息

打开Makefile 修改

# lua安装路径
LUA_TOPDIR= /usr/local/Cellar/lua@5.1/5.1.5_8 
# 可执行文件
LUA_INCDIR= $(LUA_TOPDIR)/include/lua-5.1
LUA_BINDIR= $(LUA_TOPDIR)/bin
    LIBDIR= $(LUA_TOPDIR)/lib/lua/5.1
       LUA= $(LUA_BINDIR)/lua5.1
1
2
3
4
5
6
7

# 打包生成lua可执行文件

查看 Makefile 文件可知 mac 系统需使用 Darwin 指令, 运行 make Darwin 得到int64.so 文件

# 运行 test

运行lua test , 输出结果则证明成功

# 在kong中调用so文件

将文件复制到 /usr/local/Cellar/kong/2.3.3/lib/lua/5.1 中在程序中直接引用即可

local int64 = require "int64"
local str = int64.new(123213112)
int64.tostring(str)
1
2
3

# 结语

虽然最后没有成功, 但是这个过程还是很有意思的

上次更新: 2021/06/03, 15:07:32

← 插件开发 踩坑→

Theme by Vdoing | Copyright © 2018-2022 逆光世间 | 备案号: 京ICP备19016086号
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式