鱿鱼交叉编译

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

以上是关于鱿鱼交叉编译的主要内容,如果未能解决你的问题,请参考以下文章

交叉编译和交叉调试环境搭建及使用

深入理解交叉编译(Cross Compile)

QtCreator配置交叉编译工具链

LINUX交叉编译工具链和GCC是啥关系啊

cmake交叉编译参数toolchain

交叉编译概念配置方法以及使用