1

好的,我们有什么:

用 C 语言编写的程序,在 Linux 和 MacOSX(豹)中编译和运行没有问题。我今天嵌入了lua代码。Linux:从源代码编译 lua 5.1。一切正常并编译没有任何问题。Macos:编译相同的 lua 5.1 包。

与 --llua 链接。

开始编译,报错:

CC=gcc-4.0 使

ld:警告:在 /usr/local/lib/liblua.a 中,文件不是必需的体系结构

还尝试从 macports 重新安装、完成删除和安装。相同。

那么有什么解决办法吗?

4

1 回答 1

0

该错误"file is not of required architecture"暗示您正在尝试混合架构这一事实。

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

例如

我们有一个 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
于 2012-04-20T09:55:45.383 回答