私は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