搜索
bottom↓
回复: 3

Openwrt的动态库 Makefile到底要怎么写?

[复制链接]

出0入0汤圆

发表于 2015-10-3 18:03:13 | 显示全部楼层 |阅读模式
本帖最后由 sohappyoh 于 2015-10-3 18:04 编辑

Openwrt的动态库 Makefile到底要怎么写?我在Ubuntu下面测试成功,但是在交叉编译到Openwrt出错!
源文件:


目录结构:
XXX:/PRJ/openwrt/trunk/package/test$ tree
.
├── Makefile
├── Makefile~
├── src
│   ├── lauxlib.h
│   ├── liblua.a
│   ├── lnum_config.h
│   ├── luaconf.h
│   ├── lua.h
│   ├── lualib.h
│   ├── Makefile
│   ├── Makefile~
│   ├── test.c
│   ├── test.c~
│   ├── testlib.so
│   ├── test.lua
│   ├── test.lua~
│   └── uft_to_gbk.c~
├── test.c~
└── test.lua~


c源代码:
  1. #include <stdio.h>
  2. #include "./lua.h"
  3. #include "./lualib.h"
  4. #include "./lauxlib.h"
  5. static int add(lua_State *L)
  6. {
  7.     int a,b,c;
  8.     a = lua_tonumber(L,1);
  9.     b = lua_tonumber(L,2);
  10.     c = a+b;
  11.     lua_pushnumber(L,c);
  12.     printf("test hello!!!\r\n");
  13.     return 1;
  14. }

  15. static const struct luaL_Reg lib[] =
  16. {
  17.     {"testadd",add},
  18.     {NULL,NULL}
  19. };

  20. int luaopen_testlib(lua_State *L)
  21. {
  22.     luaL_register(L,"testlib",lib);
  23.     return 1;
  24. }
复制代码


src目录的Makefile文件源代码:
  1. CC = gcc
  2. CFLAGS = -Wall
  3. testlib.so: lauxlib.h liblua.a lnum_config.h lua.h luaconf.h lualib.h
  4.         $(CC) $(CFLAGS) -fPIC -shared -o testlib.so test.c
  5. clean:
  6.         rm -f *.o
复制代码


test文件夹的源代码:
  1. #
  2. # Copyright (C) 2012 OpenWrt.org
  3. #
  4. # This is free software, licensed under the GNU General Public License v2.
  5. # See /LICENSE for more information.
  6. #

  7. include $(TOPDIR)/rules.mk

  8. PKG_NAME:=test
  9. PKG_RELEASE:=1

  10. PKG_BUILD_DIR := $(BUILD_DIR)/$(PKG_NAME)

  11. include $(INCLUDE_DIR)/package.mk

  12. define Package/test
  13.   SECTION:=utils
  14.   CATEGORY:=Utilities
  15.   TITLE:=Frame buffer device testing tool
  16.   DEPENDS:=+libncurses
  17. endef

  18. define Build/Prepare
  19.         mkdir -p $(PKG_BUILD_DIR)
  20.         $(CP) ./src/* $(PKG_BUILD_DIR)/
  21. endef

  22. define Build/Configure
  23. endef

  24. TARGET_LDFLAGS :=

  25. define Build/Compile
  26.         $(MAKE) -C $(PKG_BUILD_DIR) \
  27.                 CC="$(TARGET_CC)" \
  28.                 CFLAGS="$(TARGET_CFLAGS) -Wall" \
  29.                 LDFLAGS="$(TARGET_LDFLAGS)"
  30. endef

  31. define Package/test/install
  32.         $(INSTALL_DIR) $(1)/usr/sbin
  33.         $(INSTALL_BIN) $(PKG_BUILD_DIR)/test $(1)/usr/sbin/
  34. endef

  35. $(eval $(call BuildPackage,test))
复制代码



测试的Lua源代码:
  1. require("testlib")
  2. c = testlib.testadd(15,25)
  3. print("The result is ",c);
复制代码




本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

出0入12汤圆

发表于 2015-10-7 10:16:14 | 显示全部楼层
错误是啥?你编译lua 扩展的时候怎么不加 lua 的头文件和库呢?看你 Makefile 是静态链接 liblua.a,这跟 OpenWrt 的做法不一样,你确定你要这样?

出0入0汤圆

 楼主| 发表于 2015-10-7 15:26:18 | 显示全部楼层
abutter 发表于 2015-10-7 10:16
错误是啥?你编译lua 扩展的时候怎么不加 lua 的头文件和库呢?看你 Makefile 是静态链接 liblua.a,这跟 O ...

绕道解决了。其实Openwrt要深入了解还是有难度的,呵呵  

出0入12汤圆

发表于 2015-10-9 12:46:20 | 显示全部楼层
sohappyoh 发表于 2015-10-7 15:26
绕道解决了。其实Openwrt要深入了解还是有难度的,呵呵

我是依葫芦画瓢来的,省很多事情。
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-4-20 08:08

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表