2012-04-16 4 views
1

확인 C 및 임베디드 루아 : 컴파일 및 리눅스와에서라도 (표범)에서 문제없이 실행되는우리가 가지고있는에서라도,

프로그램은 C에 작성합니다. 오늘 루아 코드를 임베드했습니다. Linux : 소스에서 컴파일 된 lua 5.1. 모든 것은 문제없이 작동하고 컴파일됩니다. Macos : 동일한 lua 5.1 패키지를 컴파일합니다.

--llua와 연결되었습니다. 4.0 GCC-

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

또한 시도 재설치, 완전한 제거 및 MacPorts를에서 설치를 만들 =

CC :

컴파일 시작하고 오류가 발생했습니다. 똑같다.

그래서 수정 사항이 있습니까?

+0

'_Lua_Call'은 Lua C API의 심볼이 아닙니다. – lhf

+0

멋지지만 컴파일과 작동, MacOS에서의 주된 문제 ld : 경고 : /usr/local/lib/liblua.a에서 파일은 필수 아키텍처가 아닙니다. – TotallyStuck

+2

에서 다운로드 한 소스에서 Lua를 컴파일하고 설치 한 경우 http://www.lua.org 이것이 일어나서는 안됩니다. – lhf

답변

0

오류 "file is not of required architecture"은 아키텍처를 혼합하려고한다는 사실을 암시합니다.

/usr/local/lib/liblua.a의 아키텍처를 확인하고 빌드하려는 아키텍처 또는 개체와 일치하는지 확인하십시오.

예. x86_64의 객체를 (맥 OS X의 기본 아키텍처) 컴파일 할 때 우리가 그것을 사용하려고하면

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

:

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

를 우리가 얻을 :

우리는 I386 개체가

$ 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

+1

liblua.a를 다시 컴파일하거나 liblua.a의 아키텍처와 일치하는 프로그램을 다시 컴파일하십시오. – diciu

+0

그랬습니까. 지금 내가 가진 : 정의되지 않은 기호 : 및 ld : 기호를 찾을 수 없습니다 – TotallyStuck