2012-04-16 47 views
1

好了,我们有什么:MACOSX,C和嵌入式LUA

方案C写的,其编制和没有在Linux和MacOSX上(豹)的问题上运行。 今天我嵌入了lua代码。 Linux:从源代码编译lua 5.1。一切正常,编译没有任何问题。 Macos:编译了相同的lua 5.1包。

与--llua链接。

开始编译,得到了一个错误:

CC = GCC-4.0使

ld: warning: in /usr/local/lib/liblua.a, file is not of required architecture

也试过重新安装,完全移除和安装MacPorts的。一样。

那么有没有解决这个问题?

+0

'_Lua_Call'不是Lua C API中的符号。 – lhf 2012-04-16 12:21:23

+0

酷,但它的编译和它的工作,与马科斯错误ld的主要问题:警告:在/usr/local/lib/liblua.a,文件不是所需的体系结构 – TotallyStuck 2012-04-16 13:25:55

+2

如果您已经编译和安装从源下载的Lua http://www.lua.org这不应该发生。 – lhf 2012-04-16 13:26:56

回答

0

错误"file is not of required architecture"暗示您试图混合体系结构。

检查/usr/local/lib/liblua.a的体系结构并确保它与您尝试构建的体系结构或对象相匹配。

E.g.

我们有一个i386的对象:

==== cat fun.c ==== 
#include <stdio.h> 
void fun() 
{ 
    printf("%s", "foobar\n"); 
} 
gcc -arch i386 -c fun.c -o fun.o 

如果我们尝试使用它编译x86_64的对象(在Mac OS X默认架构)时:

===== cat test.c == 
extern void fun(); 
int main() 
{ 
    fun(); 
} 

我们得到:

$ gcc test.c fun.o 
ld: warning: ignoring file fun.o, file was built for i386 which is not the architecture being linked (x86_64) 
Undefined symbols for architecture x86_64: 
    "_fun", referenced from: 
     _main in ccXVCQhG.o 
ld: symbol(s) not found for architecture x86_64 
collect2: ld returned 1 exit status 
+0

我认为你是对的。但是我怎样才能改变liblua.a的拱?从源代码编译?我想我已经试过 – TotallyStuck 2012-04-20 16:17:14

+1

您要么重新编译liblua.a,要么重新编译与liblua.a的体系结构匹配的程序。 – diciu 2012-04-20 16:21:42

+0

做到了。现在我有:未定义的符号:和ld:符号(s)未找到 – TotallyStuck 2012-04-21 10:49:13