|
本帖最后由 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源代码:
- #include <stdio.h>
- #include "./lua.h"
- #include "./lualib.h"
- #include "./lauxlib.h"
- static int add(lua_State *L)
- {
- int a,b,c;
- a = lua_tonumber(L,1);
- b = lua_tonumber(L,2);
- c = a+b;
- lua_pushnumber(L,c);
- printf("test hello!!!\r\n");
- return 1;
- }
- static const struct luaL_Reg lib[] =
- {
- {"testadd",add},
- {NULL,NULL}
- };
- int luaopen_testlib(lua_State *L)
- {
- luaL_register(L,"testlib",lib);
- return 1;
- }
复制代码
src目录的Makefile文件源代码:
- CC = gcc
- CFLAGS = -Wall
- testlib.so: lauxlib.h liblua.a lnum_config.h lua.h luaconf.h lualib.h
- $(CC) $(CFLAGS) -fPIC -shared -o testlib.so test.c
- clean:
- rm -f *.o
复制代码
test文件夹的源代码:
- #
- # Copyright (C) 2012 OpenWrt.org
- #
- # This is free software, licensed under the GNU General Public License v2.
- # See /LICENSE for more information.
- #
- include $(TOPDIR)/rules.mk
- PKG_NAME:=test
- PKG_RELEASE:=1
- PKG_BUILD_DIR := $(BUILD_DIR)/$(PKG_NAME)
- include $(INCLUDE_DIR)/package.mk
- define Package/test
- SECTION:=utils
- CATEGORY:=Utilities
- TITLE:=Frame buffer device testing tool
- DEPENDS:=+libncurses
- endef
- define Build/Prepare
- mkdir -p $(PKG_BUILD_DIR)
- $(CP) ./src/* $(PKG_BUILD_DIR)/
- endef
- define Build/Configure
- endef
- TARGET_LDFLAGS :=
- define Build/Compile
- $(MAKE) -C $(PKG_BUILD_DIR) \
- CC="$(TARGET_CC)" \
- CFLAGS="$(TARGET_CFLAGS) -Wall" \
- LDFLAGS="$(TARGET_LDFLAGS)"
- endef
- define Package/test/install
- $(INSTALL_DIR) $(1)/usr/sbin
- $(INSTALL_BIN) $(PKG_BUILD_DIR)/test $(1)/usr/sbin/
- endef
- $(eval $(call BuildPackage,test))
复制代码
测试的Lua源代码:
- require("testlib")
- c = testlib.testadd(15,25)
- print("The result is ",c);
复制代码
|
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有帐号?注册
x
阿莫论坛20周年了!感谢大家的支持与爱护!!
你熬了10碗粥,别人一桶水倒进去,淘走90碗,剩下10碗给你,你看似没亏,其实你那10碗已经没有之前的裹腹了,人家的一桶水换90碗,继续卖。说白了,通货膨胀就是,你的钱是挣来的,他的钱是印来的,掺和在一起,你的钱就贬值了。
|