2014-09-04 14 views
0

OMAP4 보드 용으로 opensawn을 컴파일해야하며 GMP는 필수 조건입니다. 우선 64 비트 OS에서 그것을 시도하지만 나에게이 오류 준 : Ubuntu 12.04에서 GMP와 Openswan을 교차 컴파일 컴파일 32 비트

configure: error: Oops, mp_limb_t is 64 bits, but the assembler code in this configuration expects 32 bits.

가 그럼 난 우분투 12.04 32 비트를 이동하고, GMP V6.0.0은 몇 가지 실험 후 컴파일있어합니다.

export ARCH=arm<BR> 
export PATH=/home/harsh32bit/Work/Projects/BSQ_VVDN/BISQUARE/gcc-SourceryCodeBenchLite-arm/bin/:$PATH<BR> 
export CROSS_COMPILE=arm-none-linux-gnueabi-<BR> 

그런 다음 명령이 관찰되었다 : 심지어 .bashrc에서 ARCH, 툴체인 및 CROSS_COMPILER 변수를 가진 후 나는 다음과 같은 export했다

./configure --build=i686-pc-linux-gnu --host=arm-none-linux-gnueabi --prefix=/home/harsh32bit/Work/Projects/BSQ_VVDN/BISQUARE/gcc-SourceryCodeBenchLite-arm/ 

make clean 
make 
make install 

다음 소프트 링크 GMP 라이브러리

을 툴체인을
~/Work/Projects/BSQ_VVDN/BISQUARE/gcc-SourceryCodeBenchLite-arm/lib/gcc/arm-none-linux-gnueabi/4.7.3 
# ln -s ~/Work/Projects/BSQ_VVDN/packages/gmp-6.0.0/.libs/libgmp.so libgmp.so 

make check은 모든 테스트가 실패했다고보고했지만 성공적으로 GMP를 컴파일했습니다.

In file included from /home/harsh32bit/Work/Projects/BSQ_VVDN/packages/openswan-2.6.41/include/certs.h:24:0,from /home/harsh32bit/Work/Projects/BSQ_VVDN/packages/openswan-2.6.41/lib/libopenswan/id.c:42: /home/harsh32bit/Work/Projects/BSQ_VVDN/packages/openswan-2.6.41/include/secrets.h:20:41: fatal error: gmp.h: No such file or directory compilation terminated

I가 TI E2E 사이트에 갔다 : 나는 CROSSCOMPILE.sh에서 변경 한 후 Openswan-2.6.41을 컴파일 건너 할 때

9 of 9 tests failed. 

지금이 make programs 나는이 오류 이것은 지난 4 주 동안 포인터에 대한 인터넷 냄새가 났지만 알아 내지 못했습니다. 누구든지 ARM 용 openswanGMP을 크로스 컴파일에 대한 단서가 있다면 알려주십시오.

+0

해당 오류 메시지를 바꾸기 위해 GMP 헤더의 위치를 ​​관련 포함 경로에 추가하는 작업을 변경 했습니까? – Notlikethat

+0

'export LD_LIBRARY_PATH = $ PREFIX/lib/gcc/arm-none-linux-gnueabi/4.7.3 /' 이것을 의미합니까? –

+0

아니요, 링커가 크로스 컴파일 된 C _libraries_를 가리 킵니다. 컴파일러 명령 행에서'-I '옵션을 사용하거나 ['CPATH' 또는'* _INCLUDE_PATH'] (https://gcc.gnu.org/onlinedocs)를 사용하여 _headers_가 어디에 있는지 컴파일러에게 말하면됩니다. /gcc/Environment-Variables.html) 환경 변수. – Notlikethat

답변

-1

그래서 본질적으로

  • GMP 파일의 정적 연결은 산세 sudo 수행해야했다 - 당신이 make programssudo를 함께 사용하는 경우가 sudo없이 openswan 패키지에서 make programs를 호출 할 때부터 루트 대신 일반 사용자가 아닌 및 일부 수출 변수, 특히 ARCH이 누락됩니다. 컴파일 할 대상 아키텍처 대신 기본 아키텍처를 사용합니다. 제 경우와 마찬가지로 arm입니다.
  • sudo을 사용해야하는 경우 모든 사용자에게 읽기/쓰기가 가능하도록 설정하십시오. 툴체인에서 라이브러리 파일을 링크 한 후에 해당 파일에 chmod 777을 호출 할 수 있습니다. 모든 사용자 그룹에 대해 rw를 사용할 수 있기 때문입니다.
+0

777? 헛소리? 왜 사람들은 도서관에 대한 쓰기 권한이 필요합니까? –

+0

맞습니다.하지만 디버깅이 리눅스에서 초보자가되는 한 달 동안 일어나는 동안, 모든 사용자가 그것을 실행할 수 있는지 확인하기 위해 나는 그렇게했습니다. –