2014-08-30 3 views
2

Mac OS의 OpenWRT에서 toolchain을 사용하여 C를 크로스 컴파일했습니다. C 프로그램은 이미 설치 한 libcurl에 의존합니다. 그러나 C 프로그램을 빌드 할 때 아래와 같은 오류 메시지가 나타납니다. MACMAC에서 C를 크로스 컴파일 할 때 libcurl 문제가 발생했습니다.

1.Installed libcurl에

brew install curl 

2.Used toolbarchain는 main.c를에게

toolchain-mips_34kc_gcc-4.8-linaro_uClibc-0.9.33.2/bin/mips-openwrt-linux-uclibc-gcc -I/usr/local/opt/curl/include main.c 

3.Compilation 에러

In file included from /usr/local/opt/curl/include/curl/curl.h:35:0, 
      from main.c:4: 
/usr/local/opt/curl/include/curl/curlrules.h:142:3: error: size of array '__curl_rule_01__' is negative 
__curl_rule_01__ 
^ 
/usr/local/opt/curl/include/curl/curlrules.h:152:3: error: size of array '__curl_rule_02__' is negative 

curl_rule_02

컴파일 교차

답변

4

mips 툴체인을 사용하여 curl/libcurl을 컴파일해야합니다. (실제로 다른 모든 종속성에 대해이 작업을 수행해야합니다.)

brew를 사용하여 말린 것을 설치 했으므로 x64 버전의 말림이 시스템에 기본적으로 적용됩니다.

컴파일 할 때 생성되는 컬 (curlbuild.h)에 특정 헤더가 있습니다. 이러한 헤더는 아키텍처를 기반으로 매크로를 정의합니다. CURL_SIZEOF_LONG

x64 아치 용으로 준비된 컬 헤더를 사용하여 mips 응용 프로그램을 빌드 할 때 정확한 CURL_SIZEOF_LONG 매크로를 찾을 수 없으므로 -1 값이됩니다.

게다가, 어떤 시점에서 libcurl 라이브러리에 링크해야합니다. mips toolchain을 사용하고 있다면 현재 라이브러리는 절대 링크되지 않습니다. 따라서 먼저 컬을 교차 컴파일하여 해당 버전을 사용하십시오.

관련 문제