저는 ARM Cortex A8(Linux)에서 Squid 3.5.7을 크로스 컴파일하려고 했습니다.
나는 그것을 다운로드했다http://www.squid-cache.org/Versions/v3/3.5/
나는 arm-linux-gnueabi-gcc와 arm-linux-gnueabi-g++를 가지고 있습니다.
tar -zxvf squid-3.5.7.tar.gz
cd squid-3.5.7
./configure --prefix=/usr/local/squid
./configure --prefix=/usr/local/squid 후에 다음 Makefile이 있습니다.http://wklej.se/makefile
make all
make install
다음으로 /usr/local/squid 및 ~/squid-3.5.7 폴더를 SD 카드에 복사했습니다.
ARM을 사용하여 보드의 SD 카드에서 ./squid -z를 열려고 하면 문제가 발생합니다.
root@am335x:/# ls
bin etc lib mnt srv usr
boot findHelp linuxrc proc sys var
dev home media sbin tmp
root@am335x:/media/mmcblk0/squid/sbin# ls
squid
root@am335x:/media/mmcblk0/squid/sbin# ./squid -z
./squid: line 20: syntax error: ")" unexpected
root@am335x:/media/mmcblk0/squid/sbin# ./squid
./squid: line 20: syntax error: ")" unexpected
root@am335x:/media/mmcblk0/squid/sbin#
어떻게 해야할지 모르겠습니다:/
답변1
실제로 크로스 컴파일하는 것이 아닙니다. 크로스 컴파일하려면 ./configure
대상 아키텍처를 알아야 합니다 .
./configure --prefix=/usr/local --host=arm-linux-gnueabi
그런 다음 사용된 Makefile 과 ARM 장치에 적합한 arm-linux-gnueabi-gcc
결과 바이너리를 가져와야 합니다. squid
(물론 필요한 라이브러리가 모두 있다고 가정합니다.)
답변2
구성.ac 파일을 수동으로 편집하고 원자 섹션을 찾아 해당 줄을 바꿀 수 있습니다.
AC_RUN_IFELSE([AC_LANG_PROGRAM([[
그리고
AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
그런 다음 bootstrap.sh를 실행하여 구성 스크립트를 다시 생성해야 합니다.
이렇게 하면 구성할 수 있지만 도구 체인이 실제로 __sync_xxx 호출을 지원하지 않을 수 있으므로 컴파일/링크가 실패할 수 있습니다. 제 경우에는 libatomic.so에 이러한 호출이 포함되어 있지 않습니다. 그런 다음 원자 검사에 항상 "아니요"로 응답하도록 구성 스크립트를 수동으로 편집해야 했습니다.
squid_cv_gnu_atomics=yes
도착하다
squid_cv_gnu_atomics=no