gcc编译c中有与lua交互的代码

本文详细介绍如何在Linux环境下使用gcc编译器将Lua代码与C程序进行整合编译的具体步骤,包括设置头文件和库文件的搜索路径,以及如何正确链接Lua库。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

编译C程序中有与Lua有关的程序(编译环境是Linux系统,lua解释器是luajit)
gcc -o test30 test30.cpp -I/usr/local/include/luajit-2.0/ -L/usr/local/lib/ -lluajit-5.1

cp power.so /home/yuhua/frame_exec/lib/

gcc -o power.so hellolua.c -shared -fPIC -I/usr/local/include/luajit-2.0/ -L/usr/local/lib/ -lluajit-5.1

[--把lua头文件所在的路径加到头文件搜索路径中去
[yuhua@localhost luajit-2.0]$ pwd
/usr/local/include/luajit-2.0
[yuhua@localhost luajit-2.0]$ ls
lauxlib.h  luaconf.h  lua.h  lua.hpp  luajit.h  lualib.h

-- 把lua库文件路径加到搜索路径中去
[yuhua@localhost lib]$ pwd
/usr/local/lib
[yuhua@localhost lib]$ ls
libluajit-5.1.a  libluajit-5.1.so  libluajit-5.1.so.2  libluajit-5.1.so.2.0.0  lua  pkgconfig

-lluajit-5.1
-l 是编译连接时候搜索lua的库文件,查找函数定义的地方
另外值得详细解释一下的是“-l”选项,它指示gcc去连接库文件 libluajit-5.1.so。由于在Linux下的库文件命名时有一个规定:
必须以lib三个字母开头。因此在用-l选项指定链接的库文件名时可以省去lib三个字母。也就是说gcc在对”-lluajit-5.1.so”进行处理时,
会自动去链接名为 libluajit-5.1.so的文件。

]

gcc     [-c|-S|-E] [-std=standard]

          [-g] [-pg] [-Olevel]

          [-Wwarn...] [-pedantic]

          [-Idir...] [-Ldir...]

          [-Dmacro[=defn]...] [-Umacro]

          [-foption...] [-mmachine-option...]

          [-o outfile] infile...

-c                 编译为目标文件,不连接库

-S                 编译为汇编代码

-E                 预处理.预处理之后的代码将送往标准输出

-Wwarn... 设置警告,可以设置的警告开关很多,通常用-Wall开启所有的警告

-Olevel   设置优化级别,level可以是0,1,2,3或者s,默认-O0,即不进行优化。

-Dname=definition... 在命令行上定义宏,有两种方式,-Dname或者-Dname=definition.在命令行上设置宏定义的目的主要是为了在调试的时候设定一些开关, 而在发布的时候再关闭或者打开这些开关即可,当然宏定义也用来对代码进行有选择地编译.另外也还有其他的一些作用.

-Uname       取消宏定义name,作用和上面的正好相反.

-Idir...        把dir加到头文件的搜索路径中,而且gcc会在搜索标准头文件之前先搜索dir.

-llibrary      在连接的时候搜索library库,库是一些archieve文件--其成员是目标文件.如果有文件引用library,library在命令行的位置应该在那个文件之后,因此,越底层的库越要放在后面.比如如果你要连接pcap库,那么你就需要使用-lpcap对源文件进行编译.

-Ldir...        把dir加到库文件的搜索路径中,而且gcc会在搜索标准库文件之前先搜索dir.

-pthread       通过pthreads库加入对多线程的支持,这为预处理和连接设置了标志.pthread是POSIX指定的标准线程库.

-std=standard   设置采用的标准,该选项是针对C语言的,比如-std=c99表示编译器遵循C99标准.该选项较少使用.而且有时反而会把你搞糊涂.

-o outfile       指定输出文件的文件名,默认为a.out

-mmachine-option...   指定所用的平台.

   

gcc编译器详解参考
http://blog.chinaunix.net/uid-21411227-id-1826747.html
http://www.cnblogs.com/azraelly/archive/2012/07/07/2580839.html

转载于:https://www.cnblogs.com/water-melon/p/5649405.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值