鱿鱼交叉编译

Squid cross compile

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

我不知道该怎么办:/

您构建的二进制文件是为您的 PC 架构构建的。按照以下说明为 arm 构建 squid。

配置正在尝试 运行 一个测试,如果您使用交叉编译器,该测试将失败,因此添加一个缓存文件来覆盖这些测试。

例如使用下面显示的行

创建一个缓存文件squid.cache
squid_cv_gnu_atomics=no

导出编译squid所需的BUILDCXX变量

export BUILDCXX=g++

确保您已将工具链路径导出到路径变量($PATH)

export PATH=<TOOLCHAIN_PATH>:$PATH

然后通过运行配置squid,如下所示

./configure --host=arm-linux-gnueabi --cache-file=squid.cache --prefix=<install/dir>

最后通过运行ning make

编译squid
make

然后使用 make install 安装二进制文件

make install