[笔记] srlua库编译

文章目录

  • 前言
  • 一、环境
  • 二、编译过程
    • 2.1 gcc安装
    • 2.2 编译lua
    • 2.3 编译srlua库
  • 三、测试srlua库
  • 参考
  • 总结


前言

一、环境

centos7.9
gcc version 4.8.5 20150623 (Red Hat 4.8.5-44) (GCC)
lua5.1源码
srlua 源码

二、编译过程

2.1 gcc安装

yum install gcc

这里gcc安装过程和环境没有详细介绍,编译成二进制需要gcc编译器。

2.2 编译lua

目录结构:

  • lua/lua5.1.5/src
  • srlua/

查看lua源码结构

[root@localhost srlua]# ls ../lua/lua-5.1.5
COPYRIGHT  doc  etc  HISTORY  INSTALL  Makefile  README  src  test
You have mail in /var/spool/mail/root
[root@localhost lua-5.1.5]# make linux
cd src && make linux
make[1]: Entering directory `/mnt/hgfs/D/workspace/github/lua/lua-5.1.5/src'
make all MYCFLAGS=-DLUA_USE_LINUX MYLIBS="-Wl,-E -ldl -lreadline -lhistory -lncurses"
make[2]: Entering directory `/mnt/hgfs/D/workspace/github/lua/lua-5.1.5/src'
gcc -O2 -Wall -DLUA_USE_LINUX   -c -o lapi.o lapi.c
gcc -O2 -Wall -DLUA_USE_LINUX   -c -o lcode.o lcode.c
gcc -O2 -Wall -DLUA_USE_LINUX   -c -o ldebug.o ldebug.c
gcc -O2 -Wall -DLUA_USE_LINUX   -c -o ldo.o ldo.c
gcc -O2 -Wall -DLUA_USE_LINUX   -c -o ldump.o ldump.c
gcc -O2 -Wall -DLUA_USE_LINUX   -c -o lfunc.o lfunc.c
gcc -O2 -Wall -DLUA_USE_LINUX   -c -o lgc.o lgc.c
gcc -O2 -Wall -DLUA_USE_LINUX   -c -o llex.o llex.c
gcc -O2 -Wall -DLUA_USE_LINUX   -c -o lmem.o lmem.c
gcc -O2 -Wall -DLUA_USE_LINUX   -c -o lobject.o lobject.c
gcc -O2 -Wall -DLUA_USE_LINUX   -c -o lopcodes.o lopcodes.c
gcc -O2 -Wall -DLUA_USE_LINUX   -c -o lparser.o lparser.c
gcc -O2 -Wall -DLUA_USE_LINUX   -c -o lstate.o lstate.c
gcc -O2 -Wall -DLUA_USE_LINUX   -c -o lstring.o lstring.c
gcc -O2 -Wall -DLUA_USE_LINUX   -c -o ltable.o ltable.c
gcc -O2 -Wall -DLUA_USE_LINUX   -c -o ltm.o ltm.c
gcc -O2 -Wall -DLUA_USE_LINUX   -c -o lundump.o lundump.c
gcc -O2 -Wall -DLUA_USE_LINUX   -c -o lvm.o lvm.c
gcc -O2 -Wall -DLUA_USE_LINUX   -c -o lzio.o lzio.c
gcc -O2 -Wall -DLUA_USE_LINUX   -c -o lauxlib.o lauxlib.c
gcc -O2 -Wall -DLUA_USE_LINUX   -c -o lbaselib.o lbaselib.c
gcc -O2 -Wall -DLUA_USE_LINUX   -c -o ldblib.o ldblib.c
gcc -O2 -Wall -DLUA_USE_LINUX   -c -o liolib.o liolib.c
gcc -O2 -Wall -DLUA_USE_LINUX   -c -o lmathlib.o lmathlib.c
gcc -O2 -Wall -DLUA_USE_LINUX   -c -o loslib.o loslib.c
gcc -O2 -Wall -DLUA_USE_LINUX   -c -o ltablib.o ltablib.c
gcc -O2 -Wall -DLUA_USE_LINUX   -c -o lstrlib.o lstrlib.c
gcc -O2 -Wall -DLUA_USE_LINUX   -c -o loadlib.o loadlib.c
gcc -O2 -Wall -DLUA_USE_LINUX   -c -o linit.o linit.c
ar rcu liblua.a lapi.o lcode.o ldebug.o ldo.o ldump.o lfunc.o lgc.o llex.o lmem.o lobject.o lopcodes.o lparser.o lstate.o lstring.o ltable.o ltm.o lundump.o lvm.o lzio.o lauxlib.o lbaselib.o ldblib.o liolib.o lmathlib.o loslib.o ltablib.o lstrlib.o loadlib.o linit.o   # DLL needs all object files
ranlib liblua.a
gcc -O2 -Wall -DLUA_USE_LINUX   -c -o lua.o lua.c
gcc -o lua  lua.o liblua.a -lm -Wl,-E -ldl -lreadline -lhistory -lncurses
gcc -O2 -Wall -DLUA_USE_LINUX   -c -o luac.o luac.c
gcc -O2 -Wall -DLUA_USE_LINUX   -c -o print.o print.c
gcc -o luac  luac.o print.o liblua.a -lm -Wl,-E -ldl -lreadline -lhistory -lncurses
make[2]: Leaving directory `/mnt/hgfs/D/workspace/github/lua/lua-5.1.5/src'
make[1]: Leaving directory `/mnt/hgfs/D/workspace/github/lua/lua-5.1.5/src'
[root@localhost lua-5.1.5]# make install
cd src && mkdir -p /usr/local/bin /usr/local/include /usr/local/lib /usr/local/man/man1 /usr/local/share/lua/5.1 /usr/local/lib/lua/5.1
cd src && install -p -m 0755 lua luac /usr/local/bin
cd src && install -p -m 0644 lua.h luaconf.h lualib.h lauxlib.h ../etc/lua.hpp /usr/local/include
cd src && install -p -m 0644 liblua.a /usr/local/lib
cd doc && install -p -m 0644 lua.1 luac.1 /usr/local/man/man1
[root@localhost lua-5.1.5]# 

可以看到已经编译完成,有liblua.a文件和lua文件

[root@localhost lua-5.1.5]# ls ./src/
lapi.c     lauxlib.o   lcode.o   ldebug.o  ldump.o  lgc.h     liolib.c  llimits.h   lmem.o     lobject.o   loslib.o   lstate.h   lstrlib.c  ltablib.c  lua     luaconf.h  lundump.h  lzio.c    print.o
lapi.h     lbaselib.c  ldblib.c  ldo.c     lfunc.c  lgc.o     liolib.o  lmathlib.c  loadlib.c  lopcodes.c  lparser.c  lstate.o   lstrlib.o  ltablib.o  luac    lua.h      lundump.o  lzio.h
lapi.o     lbaselib.o  ldblib.o  ldo.h     lfunc.h  liblua.a  llex.c    lmathlib.o  loadlib.o  lopcodes.h  lparser.h  lstring.c  ltable.c   ltm.c      lua.c   lualib.h   lvm.c      lzio.o
lauxlib.c  lcode.c     ldebug.c  ldo.o     lfunc.o  linit.c   llex.h    lmem.c      lobject.c  lopcodes.o  lparser.o  lstring.h  ltable.h   ltm.h      luac.c  lua.o      lvm.h      Makefile
lauxlib.h  lcode.h     ldebug.h  ldump.c   lgc.c    linit.o   llex.o    lmem.h      lobject.h  loslib.c    lstate.c   lstring.o  ltable.o   ltm.o      luac.o  lundump.c  lvm.o      print.c

2.3 编译srlua库

我们使用makefile文件进行编译,而非CMakeList文件
修改MakeFile文件,指定LUA路径,这里需要改为你自己的lua源代码根路径

# makefile for srlua

# change these to reflect your Lua installation
LUA= /mnt/hgfs/D/workspace/github/lua/lua-5.1.5
[root@localhost srlua]# make
gcc -I/mnt/hgfs/D/workspace/github/lua/lua-5.1.5/src -ansi -pedantic -Wall -Wextra -O2    -c -o srlua.o srlua.c
srlua.c: In function ‘getprog’:
srlua.c:141:3: warning: implicit declaration of function ‘readlink’ [-Wimplicit-function-declaration]
   n = readlink("/proc/self/exe", progdir, nsize);
   ^
gcc -o srlua -Wl,-E srlua.o -L/mnt/hgfs/D/workspace/github/lua/lua-5.1.5/src -llua -lm -ldl
gcc -I/mnt/hgfs/D/workspace/github/lua/lua-5.1.5/src -ansi -pedantic -Wall -Wextra -O2     glue.c   -o glue
./glue srlua test.lua a.out
chmod +x a.out
./a.out *
hello from inside /mnt/hgfs/D/workspace/github/srlua/a.out
19      a.out   cmake   CMakeLists.txt  dist.info       glue    glue.c  glue.h  glue.rc lua.ico lua_powered.ico Makefile        README.md       srlua   srlua.c srlua.o srlua.rc        test    test.lua        wmain.c
bye!
hello again from inside /mnt/hgfs/D/workspace/github/srlua/a.out
0       /mnt/hgfs/D/workspace/github/srlua/a.out
1       a.out
2       cmake
3       CMakeLists.txt
4       dist.info
5       glue
6       glue.c
7       glue.h
8       glue.rc
9       lua.ico
10      lua_powered.ico
11      Makefile
12      README.md
13      srlua
14      srlua.c
15      srlua.o
16      srlua.rc
17      test
18      test.lua
19      wmain.c
bye now!
[root@localhost srlua]# 

三、测试srlua库

使用srlua自带的test.lua文件生成为test二进制文件,并执行。

[root@localhost srlua]# ./glue ./srlua test.lua  test
[root@localhost srlua]# ll test
-rwxr-xr-x. 1 xxxxxxx xxxxx 199356 May 14 18:56 test
[root@localhost srlua]# ls test
test
[root@localhost srlua]# test
You have mail in /var/spool/mail/root
[root@localhost srlua]# ./test
hello from inside /mnt/hgfs/D/workspace/github/srlua/test
0
bye!
hello again from inside /mnt/hgfs/D/workspace/github/srlua/test
0       /mnt/hgfs/D/workspace/github/srlua/test
bye now!
[root@localhost srlua]# 

结果显而易见,已经转化成功。

参考

https://github.com/LuaDist/srlua

总结

总结一下过程,先编译lua源码,后引入对应路径到srlua库中用于编译srlua的glue srlua文件。


关于博主

wx/qq:binary-monster/1113673178
wxgzh: 二进制怪兽
CSDN:https://blog.csdn.net/qq1113673178
码云:https://gitee.com/shiver
Github: https://github.com/ShiverZm
个人博客:https://www.shiver.fun

欢迎加入博主的知识星球
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/625036.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

基础学习-Git(分布式版本控制系统)

学习视频推荐 http://【黑马程序员Git全套教程,完整的git项目管理工具教程,一套精通git】 https://www.bilibili.com/video/BV1MU4y1Y7h5/?p5&share_sourcecopy_web&vd_source2b85bd9be9213709642d908906c3d863 1、Git环境配置 安装Git Git下…

CAXA 3D实体设计2024:塑造未来的创新引擎

在数字化时代的浪潮中,3D CAD实体建模设计正成为推动工业创新的核心动力。CAXA 3D实体设计2024,以其卓越的性能和丰富的功能,为企业和个人用户带来了前所未有的设计体验。 CAXA 3D实体设计2024不仅拥有直观易用的界面,还配备了强…

【JS】call和 apply函数的详解

JavaScript 中 call() 和 apply() 函数的详解 在JavaScript中,call()和apply()都是非常重要的方法,用于调用函数时指定函数体内的this的值,从而实现不同对象之间的方法共享。尽管它们的功能非常相似,但在实际使用中各有其优势和特…

数据结构选择题(期末)

1.给定NN的二维数组A,则在不改变数组的前提下,查找最大元素的时间复杂度是(A): A.O(N2) B.O(NlogN) C.O(N) D.O(N2logN) 两重循环即O(N2)的时间复杂度 2.与数据元素本身的形式、内容、相对位置、个数无关的是数据的…

OpenAI 发布新款大型语言模型 GPT-4o,带大家了解最新ChatGPT动态。

OpenAI 发布新款大型语言模型 GPT-4o 昨日OpenAI 举办了一场线上活动,正式发布了其最新研发的 AI 模型 GPT-4o,并详细介绍了该模型的强大功能和未来发展规划。此次发布标志着 AI 技术的重大突破,为用户提供了更加便捷、高效的 AI 工具&#…

荆州科技局副局长乔梁莅临湖北点赋网络科技公司参观调研

近日,荆州科技局副局长乔梁,莅临湖北点赋网络科技公司进行参观调研。点赋科技总经理崔梦娇亲自陪同,向副局长介绍了公司的D咖智能饮品机器人经营状况和研发进展情况。 在参观过程中,副局长乔梁对点赋科技的创新能力和技术成果给予…

【计算机毕业设计】基于SSM++jsp的高校专业信息管理系统【源码+lw+部署文档+讲解】

目录 第1章 绪论 1.1 课题背景 1.2 课题意义 1.3 研究内容 第2章 开发环境与技术 2.1 MYSQL数据库 2.2 JSP技术 2.3 SSM框架 第3章 系统分析 3.1 可行性分析 3.1.1 技术可行性 3.1.2 经济可行性 3.1.3 操作可行性 3.2 系统流程 3.2.1 操作流程 3.2.2 登录流程 3.2.3 删除信息流…

FedDML:Federated Mutual Learning

这篇把DML运用到FL上 论文地址:arvix code: 作者git 贡献 我们针对三种异质性(DOM)提出了一种新颖的联邦学习范式,称为联邦相互学习(FML)。 首先,FML 处理数据和目标通过使每个客户能够训练个性化模型来实现异质性。 从OH的意义上来说,DH对服务器有害,但对客户端有…

全面了解 Swagger 导出功能的使用方式

Swagger 是一个强大的平台,专门用于开发、构建和记录 RESTful Web 接口。通过其提供的交互式用户界面,开发人员能够轻松且迅速地创建和测试 API。Swagger 还允许用户以多种格式,包括 JSON 和 Markdown,导出 API 文档。选择 JSON 格…

Go微服务: Prometheus性能监控与Grafana平台的搭建

Prometheus 概述 promethues 是一套开源的监控&报警&时间序列数据库的组合基本原理是通过http协议周期性抓取被监控组件的状态适合Docker、Kubernetes环境的监控系统 Promethues 整体架构 一、抓取数据的两种方式 1 )Short-lived jobs 短暂的任务 不会提…

The Quantcast File System——论文泛读

VLDB 2013 Paper 分布式元数据论文阅读笔记整理 问题 在2013年之前,由于网络链路带宽有限,数据在集群中移动速度慢,因此Hadoop尽量将数据留在原来的位置,并将处理代码发送给它。随着网络链路的发展,可以之前更高的数…

2024年为什么很多电商商家,都想涌入视频号,究竟是什么原因?

大家好,我是电商糖果 对电商有了解的朋友,在今年肯定发现一个现象,那就是很多商家对视频号比较青睐。 视频号究竟有何魔力,让越来越多的商家都想要入驻。 其实很简单,它让商家看到了市场。 视频号背后是谁&#xf…

SpringBoot集成Curator实现Zookeeper基本操作

系列文章目录 文章目录 系列文章目录前言 前言 前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站,这篇文章男女通用,看懂了就去分享给你的码吧。 Zookeeper是一个Ap…

未来想从事营销策划类的工作,需要怎么学习?

从事营销策划类的工作,提升和学习主要从以下三个方面: 一、营销底层逻辑的搭建 二、营销系统知识的构建 三、大量营销案例的积累 营销入门,其实大多数人一直都在入门的道路上,每个人都是终身学习者。虽然从事营销工作十年多了…

PMP考前冲刺攻略,考试前必看

调整心态 考场就像战场一样,不仅仅是实力的较量,更是心理素质的较量。如果感到过于焦虑,可以通过运动等方式来缓解,也可以多与家人、朋友和老师沟通。只有稳定心态才能发挥出最大的实力! 高效学习 课本是基础&#…

C#学习笔记12:Winform网页操作-CefSharp内嵌浏览器

今日学习使用Winform操作网页,先从从窗体内嵌一个浏览器开始吧: 文章提供测试代码讲解、测试效果图、整体测试工程下载 目录 CefSharp介绍与安装: 创建解决方案安装CefSharp: 控件放置: 整体代码贴出: 更改…

上位机图像处理和嵌入式模块部署(树莓派4b的提高版)

【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing 163.com】 目前人工智能非常火,但是人工智能需要极高的算力和海量的数据,因此相关的关联公司非常吃香,nvidia就是提供算力…

【Pytorch】7.使用Module模块搭建简易神经网络

什么是Moudel模块 torch.nn中的module是PyTorch中用于构建神经网络模型的基本单元。它包含了各种神经网络层、激活函数、损失函数等,可以通过组合不同的module来构建复杂的神经网络模型。每个module都包含了参数和方法,可以进行前向传播和反向传播等操作…

Linux软件RAID:数据冗余与性能提升的完美融合

🐇明明跟你说过:个人主页 🏅个人专栏:《Linux :从菜鸟到飞鸟的逆袭》🏅 🔖行路有良友,便是天堂🔖 目录 一、前言 1、软件RAID的概念 2、软件RAID与硬件RAID的对比…

鱼哥好书分享活动第22期:《数字政府网络安全合规性建设指南》解锁数字政府网络安全新篇章

鱼哥好书分享活动第22期:《《数字政府网络安全合规性建设指南》》解锁数字政府网络安全新篇章 阅读对象:书籍目录:了解更多:赠书抽奖规则: 当今时代,数据已成为新型生产要素,不仅是个人、企业乃至国家的重要…