zoukankan      html  css  js  c++  java
  • LUA 静态库 动态库 LD_LIBRARY_PATH 动态库的查找路径 GCC “-l”参数

    http://lua-users.org/wiki/BindingWithMembersAndMethods

    export LD_LIBRARY_PATH=/home/arch/luatest:$LD_LIBRARY_PATH

    命令行:export LD_LIBRARY_PATH=./lib:$LD_LIBRARY_PATH

    或者     export LD_LIBRARY_PATH=/home/other/test/lib:$LD_LIBRARY_PATH    

    修改完后,记得关掉当前终端并重新打开一个新的终端,从而使上面的配置生效。也可以不关闭终端再打开终端,使用source ~/.bashrc或source ~/.bash_profile使上面的配置生效。

      其实,对于由普通用户自己编译生成的.so库文件,比较好的做法是将这些.so库文件的路径用export指令加入到~/.bash_profile中的LD_LIBRARY_PATH变量中,LD_LIBRARY_PATH是程序运行需要链接.so库时会去查找的一个目录,~/.bash_profile是登陆或打开shell时会读取的文件,这样,每次用户登录时,都会把这些.so库文件的路径写入LD_LIBRARY_PATH,这样就可以正常地使用这些.so库文件了

     

    find / -name liblua.so

    gcc -c CStructToLua.c

    gcc -o main2 CStructToLua.o -L./ -llua

    使用“-l”参数时,前缀“lib”和后缀“.a”是需要省略的

    linux 编译Lua5.2.0 静态库 动态库

    https://www.jianshu.com/p/5ee9d6f93522

    一 lua下载

     lua5.2.0下载地址 :https://www.lua.org/versions.html

    笔者这里linux环境为centos6.8 64位

    仅编译lua静态库

    1. 从上面的下载地址下载得到lua-5.2.0.tar.gz压缩包,笔者这里是放在了/home目录下

    2. 进入目录 /home,执行解压命令 tar -zxvf lua-5.2.0.tar.gz  即可解压得到目录lua-5.2.0

    3. 进入目录 /home/lua-5.2.0/src

    4. 执行命令 yum install readline-devel  这是由于lua编译依赖readline库,而其依赖ncurses库,但没有指定

    5. 执行命令 make linux 后面的linux表当前平台

    6. 即可在当前目录,即 /home/lua-5.2.0/src目录下 得到编译出来的静态库liblua.a

    7. 笔者编译出来的lua静态库下载地址:http://* 

    同时编译lua静态库,动态库

    1. 从上面的下载地址下载得到lua-5.2.0.tar.gz压缩包,笔者这里是放在了/home目录下

    2. 进入目录 /home,执行解压命令 tar -zxvf lua-5.2.0.tar.gz  即可解压得到目录lua-5.2.0

    3. 进入目录 /home/lua-5.2.0/src

    4. 执行命令 yum install readline-devel 这是由于lua编译依赖readline库,而其依赖ncurses库

    5. 执行命令 vim Makefile 打开make文件

    6. 修改 CFLAGS= -O2 -Wall -DLUA_COMPAT_ALL $(SYSCFLAGS) $(MYCFLAGS) 改为

        CFLAGS= -O2 -Wall -DLUA_COMPAT_ALL $(SYSCFLAGS) $(MYCFLAGS) -fPIC   后面加的-fPIC表示要编译位置无关代码

    7. 在 LUA_A=liblua.a 下面添加一行 LUA_SO=liblua.so 表新建一个目标,要编译出lua动态库,编译出来的动态库文件名字为liblua.so

    8. 修改 ALL_T= $(LUA_A) $(LUA_T) $(LUAC_T) 改为 ALL_T= $(LUA_A) $(LUA_T) $(LUAC_T) $(LUA_SO) 表示添加上刚才的目标

    9. 在 $(LUA_A): $(BASE_O)
               $(AR) $@ $?
               $(RANLIB) $@ 

        下面添加

       $(LUA_SO): $(CORE_O) $(LIB_O)
            $(CC) -o $@ -shared $? -ldl -lm         注意:本行前面的空格其实是一个tab

    10. 保存该makefile文件,然后执行命令 cd .. 用来回到上层目录,即回到目录/home/lua-5.2.0

    11. 执行命令 vim Makefile 打开make文件

    12. 修改 TO_LIB= liblua.a 改为 TO_LIB= liblua.a liblua.so  表同时编译静态库和动态库

    13. 保存该makefile文件,然后执行命令make linux 后面的linux表当前平台

    14. 即可在当前目录,即 /home/lua-5.2.0/src目录下 得到编译出来的静态库liblua.a,动态库liblua.so

    15. 笔者编译出来的lua静态库下载地址:http://*

  • 相关阅读:
    Powershell & SQL
    Powershell运行Invoke-Sqlcmd命令的先决条件
    Powershell实现Telnet Port
    Quest Active Directory
    数据库系统概述(Data Model、DBMS、DBS、RDBS、Structured Query Language)
    Oracle简介
    Downgrading an Exchange 2010 Server(Exchange降级)
    MAPISession(EventID9646-MS-ExchangeIS)
    指定运行Exchange Powershell的Server
    Linux磁盘管理命令(fdisk,mount,umount,mkfs)
  • 原文地址:https://www.cnblogs.com/marklove/p/13227355.html
Copyright © 2011-2022 走看看