这是编写的makefile文件,我想把lua编译到application中去使用
出现Libstdc++ is deprecated; move to libc++ with a minimum deployment target of iOS 7.请问这是什么问题?
…
llapp_FILES= src/lua.c src/lualib.c 我记得应该是这样
或者用+=
cmake可以扫描添加某个目录下所有文件makefile我就不知道了
理论上应该可以
llapp_FILES=main.m XXXXX XXXX XXXX 再加上$(find src/ -name “*.c”)
这样又找不到头文件了?
我找个demo给你看看。
files= 没记错的话会覆盖之前的值
哦抱歉我前面没注意。你后面的_FILES= 应该是会覆盖之前的值导致无法编译。
其余还有什么问题你国clone不下来lua我也没法demo,要么你发我一个我帮你看看?
我这里其余测试成功的makefile如图
1 个赞
改成我上面那样还有问题的话cflags 加个-I 指定头文件搜索目录
还是找不到头文件
…/lua是绝对路径
include $(THEOS)/makefiles/common.mk
TWEAK_NAME = MUGKit
MUGKit_FILES = $(wildcard src/*.xm) $(wildcard lua/*.c)
MUGKit_CFLAGS = -I ./lua -Wno-deprecated-declarations
include $(THEOS_MAKE_PATH)/tweak.mk
after-install::
install.exec "killall -9 SpringBoard"
是不是说明可执行文件并没有编译通过,无法调用
Makefile怎么写的?
解决了,贴出makefile
1.第一个问题,已解决
按上面的办法引入lua,通过编译,但调用lua函数会报错:
symbol(s) not found for architecture arm64
添加extern "C"后不再报错
extern "C"{
#include "lua.h"
#include "lauxlib.h"
#include "lualib.h"
}
2.弄不懂
现在的问题是,Makefile添加TARGET后:
TARGET = iphone:10.3:10.3
//symbol(s) not found for architecture arm64(非常多的lua标记都说找不到)
TARGET = iphone:11.2:10.3 //通过编译,无错
TARGET = iphone:12.2:10.3 //通过编译,无错
TARGET = iphone:8.0:8.0 //通过编译,无错
TARGET = iphone:9.3:8.0
//ld: in '/usr/lib/system/liblaunch.dylib', missing required architecture arm64 in file /usr/lib/system/liblaunch.dylib (2 slices) for architecture arm64
Xcode: 10.2.1
9.3,10.3,11.2是从theos的sdks下载,放到Xcode的sdk目录里,8.0忘了从哪里下载的了: