鱿鱼交叉编译
Posted
技术标签:
【中文标题】鱿鱼交叉编译【英文标题】:Squid cross compile 【发布时间】:2015-08-12 13:50:31 【问题描述】:我一直在尝试在 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#
我不知道该怎么办:/
【问题讨论】:
我认为你应该告诉配置它必须使用 arm-linux-gnueabi-gcc 否则它将使用默认 gcc。 @Marco 怎么办? 只是为了确定,您是在 arm cortex A8 板上还是在标准 PC 上编译? 在哪里可以看到?我怎样才能改变它? 我想我解释得不是很好:你说你正在运行 configure .. make .. 你在哪里运行 configure 和 make 在你的 PC 或 arm cortex board 上? 【参考方案1】:您构建的二进制文件是为您的 PC 架构构建的。要为 arm 构建 squid,请按照以下说明操作。
configure 正在尝试运行测试,如果您使用交叉编译器,该测试将失败,因此添加缓存文件以覆盖这些测试。
例如创建一个缓存文件 squid.cache ,如下所示
squid_cv_gnu_atomics=no
导出编译squid所需的BUILDCXX变量
export BUILDCXX=g++
确保您已将工具链路径导出到路径变量($PATH)
export PATH=<TOOLCHAIN_PATH>:$PATH
然后通过如下所示运行configure来配置squid
./configure --host=arm-linux-gnueabi --cache-file=squid.cache --prefix=<install/dir>
最后通过 make 编译 squid
make
然后使用 make install 安装二进制文件
make install
【讨论】:
你能告诉我怎么做吗? 我已经提到了上面的所有步骤。你对哪一步有疑问 首先进入 squid 源目录,然后使用您喜欢的任何编辑器创建一个文件 squid.cache,例如 vim 然后将 squid_cv_gnu_atomics=no 行添加到该文件 (squid.cache) 使用命令export BUILDCXX=g++导出变量BUILDCXX以上是关于鱿鱼交叉编译的主要内容,如果未能解决你的问题,请参考以下文章