Squid交叉编译

Squid交叉编译

我一直在尝试在 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

然后,您应该获得使用 的 Makefilesarm-linux-gnueabi-gcc以及生成的squid适合您的 ARM 设备的二进制文件。 (当然假设您拥有所有必需的库。)

答案2

您可以手动编辑configure.ac文件,查找atomic部分,并替换该行

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

相关内容