编译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

gcc编译c中有与lua交互的代码的更多相关文章

  1. gcc编译的四个阶段:预处理,编译,汇编,链接

    1:gcc编译的四个阶段:预处理,编译,汇编,链接 #vi file.c #gcc -E file.c -o file.i//-E查看且预处理后停止编译,-o生成目标文件,-i表示已预处理 #gcc  ...

  2. GCC 编译详解

    GNU CC(简称为Gcc)是GNU项目中符合ANSI C标准的编译系统,能够编译用C.C++和Object C等语言编写的程序.Gcc不仅功能强大,而且可以编译如C.C++.Object C.Jav ...

  3. C++与Lua交互(一)

    引言 之前做手游项目时,客户端用lua做脚本,基本所有游戏逻辑都用它完成,玩起来有点不爽,感觉"太重"了.而我又比较偏服务端这边(仅有C++),所以热情不高.最近,加入了一个端游项 ...

  4. C++与Lua交互之配置&交互原理&示例

    |Lua 简介 Lua 是一种轻量小巧的脚本语言,也是号称性能最高的脚本语言,它用C语言编写并以源代码形式开放. 某些程序常常需要修改内容,而修改的内容不仅仅是数据,更要修改很多函数的行为. 而修改函 ...

  5. Linux本地yum源配置以及使用yum源安装gcc编译环境

    本文档是图文安装本地yum源的教程,以安装gcc编译环境为例. 适用范围:所有的cetos,红帽,fedroa版本 适用人群:有一点linux基础的小白 范例系统版本:CentOS Linux rel ...

  6. 在Linux下使用gcc编译mesa文件报undefined reference to symbol 'sin@@GLIBC_2.2.5和DSO missing from command line两个错误的解决方案

    一.概述 在Linux系统下使用gcc编译用C语言写的mesa的示例程序. 环境:Ubuntu Server 18.04.1 二.问题的出现 在Ubuntu下安装好mesa所需的库文件,将目标文件从g ...

  7. gcc编译工具生成动态库和静态库之一----介绍

     1.库的分类 根据链接时期的不同,库又有静态库和动态库之分. 静态库是在链接阶段被链接的(好像是废话,但事实就是这样),所以生成的可执行文件就不受库的影响了,即使库被删除了,程序依然可以成功运行. ...

  8. GCC 编译详解[转]

    转自http://www.cnblogs.com/azraelly/archive/2012/07/07/2580839.html GNU CC(简称为Gcc)是GNU项目中符合ANSI C标准的编译 ...

  9. [转载]GCC 编译使用动态链接库和静态链接库--及先后顺序----及环境变量设置总结

    来自http://blog.csdn.net/benpaobagzb/article/details/51364005 GCC 编译使用动态链接库和静态链接库 1 库的分类 根据链接时期的不同,库又有 ...

随机推荐

  1. (转)微服务架构 互联网保险O2O平台微服务架构设计

    http://www.cnblogs.com/Leo_wl/p/5049722.html 微服务架构 互联网保险O2O平台微服务架构设计 关于架构,笔者认为并不是越复杂越好,而是相反,简单就是硬道理也 ...

  2. swift可选值总结

    1.枚举结构: 2.装包.解包概念:关联值. 3.可选值声明: 4.解包: 5.可选值作为参量生成的链. 6.可选值调用链. 最后做个总结 访问可选对象的属性或方法时,可以用 ? 号 访问可选对象的属 ...

  3. JS去空格、截取页面url

    1.  去掉字符串前后所有空格: 代码如下: function Trim(str) { return str.replace(/(^\s*)|(\s*$)/g, ""); } 说明 ...

  4. logging模块、shutil模块、subprocess模块、xml模块

    logging模块 shutil模块 subprocess模块 xml模块 logging模块 函数式简单配置 import logging logging.debug('debug message' ...

  5. JS 样式叠加显示

    <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...

  6. ASP 读取Word文档内容简单示例_组件开发_新兴网络_20161014161610.jpg

  7. 【JavaScript框架封装】实现一个类似于JQuery的内容框架的封装

    // 内容框架 (function (xframe) { // 需要参与链式访问的(必须使用prototype的方式来给对象扩充方法) xframe.extend({ /** * .html()用为读 ...

  8. Project Euler 37 Truncatable primes

    题意:3797有着奇特的性质.不仅它本身是一个素数,而且如果从左往右逐一截去数字,剩下的仍然都是素数:3797.797.97和7:同样地,如果从右往左逐一截去数字,剩下的也依然都是素数:3797.37 ...

  9. [Papers] Semantic Segmentation Papers(1)

    目录 FCN Abstract Introduction Related Work FCN Adapting classifiers for dense prediction Shift-and-st ...

  10. VS2015使用C++编写DLL,并在C#环境中调用【转】

    说明:本文是本人在学习封装DLL时看到的,觉得说得很清楚,为了防止忘记,特意复制下来学习用,原文链接:https://blog.csdn.net/songyi160/article/details/5 ...