ARM용 GNU 화면을 크로스 컴파일할 수 없습니다.

ARM용 GNU 화면을 크로스 컴파일할 수 없습니다.

저는 Ubuntu를 사용하고 있으며 Busybox를 실행하는 이전 ARM 장치용 GNU 화면을 구축하려고 합니다. /usr/local/toolchain에 사용자 정의 크로스 컴파일 도구 체인을 설치했습니다. 나는 화면 4.3.1(내 툴체인이 그 시대의 것임을 고려하면 적절해 보이는 7년 전 버전)을 다운로드했습니다. 화면의 구성 스크립트는 내 호스트 PC가 대상이라고 가정하고 Busybox에 존재하지 않는 다양한 기능을 감지하므로 호스트 대신 툴체인 파일을 사용하도록 몇 가지 옵션을 설정해야 합니다. 내 마지막 명령과 그 결과는 다음과 같습니다.

$ CC=/usr/local/toolchain/usr/bin/arm-linux-gcc ./configure --host=arm-linux-gnueabi --prefix=/usr/local/toolchain/usr 
this is screen version 4.3.1
checking for arm-linux-gnueabi-gcc... /usr/local/toolchain/usr/bin/arm-linux-gcc
checking whether the C compiler works... yes
checking for C compiler default output file name... a.out
checking for suffix of executables... 
checking whether we are cross compiling... yes
checking for suffix of object files... o
checking whether we are using the GNU C compiler... yes
checking whether /usr/local/toolchain/usr/bin/arm-linux-gcc accepts -g... yes
checking for /usr/local/toolchain/usr/bin/arm-linux-gcc option to accept ISO C89... none needed
checking how to run the C preprocessor... /usr/local/toolchain/usr/bin/arm-linux-gcc -E
checking for grep that handles long lines and -e... /bin/grep
checking for egrep... /bin/grep -E
checking whether /usr/local/toolchain/usr/bin/arm-linux-gcc needs -traditional... no
checking for library containing strerror... none required
checking for ANSI C header files... yes
checking for sys/types.h... yes
checking for sys/stat.h... yes
checking for stdlib.h... yes
checking for string.h... yes
checking for memory.h... yes
checking for strings.h... yes
checking for inttypes.h... yes
checking for stdint.h... yes
checking for unistd.h... yes
checking minix/config.h usability... no
checking minix/config.h presence... no
checking for minix/config.h... no
checking whether it is safe to define __EXTENSIONS__... yes
configure: error: in `/home/user1/dev/playground/screen-v.4.3.1/src':
configure: error: cannot run test program while cross compiling
See `config.log' for more details

config.log의 관련 부분:

...
 292   │ configure:3633: checking whether it is safe to define __EXTENSIONS__
 293   │ configure:3651: /usr/local/toolchain/usr/bin/arm-linux-gcc -c -g -O2  conftest.c >&5
 294   │ configure:3651: $? = 0
 295   │ configure:3658: result: yes
 296   │ configure:3674: error: in `/home/user1/dev/playground/screen-v.4.3.1/src':
 297   │ configure:3676: error: cannot run test program while cross compiling
 298   │ See `config.log' for more details

cross_compiling이라는 구성 테스트가 실패했지만 이유는 명확하지 않습니다. 이 문제를 발견했습니다glib 크로스 컴파일 시 테스트 프로그램을 비활성화하는 방법, 사이트 파일을 사용하여 테스트를 비활성화하는 방법을 가르쳐 주지만 cross_compiling을 비활성화하면 "C 컴파일러가 실행 파일을 생성할 수 없습니다."라는 메시지와 함께 실패합니다. 이는 비활성화할 수 있는 테스트가 아닙니다.

물론 동일한 컴파일러로 크로스 컴파일을 하였으므로 문제가 없습니다. 초보자가 보기엔 화면 구성이 너무 복잡해서 막히더군요. 어떤 제안이 있으십니까?

답변1

상술 한 바와 같이크로스 컴파일 시 테스트 프로그램을 실행할 수 없습니다 - 크로스 컴파일 Firebird모든 "AC_TRY_RUN" 기능 블록을 제거하여configure.in 파일을 "개선"할 수 있습니다. 이 솔루션이 가능합니다.

그렇지 않으면 빌드 컨테이너를 사용하여 그 안에 있는 모든 것을 실행할 수 있습니다.

관련 정보