Compiling
魷魚交叉編譯
我一直在嘗試在 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#
我不知道該怎麼辦 :/
你實際上並沒有交叉編譯。要交叉編譯,您需要說明
./configure
您的目標架構:./configure --prefix=/usr/local --host=arm-linux-gnueabi
然後,您應該獲得使用 的 Makefile ,以及適合您的 ARM 設備
arm-linux-gnueabi-gcc
的生成二進製文件。squid
(當然,假設您擁有所有必要的庫。)
您可以手動編輯 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