2013年8月19日 星期一

openswan 問題 cc1: error: -Werror=cpp: No option -Wcpp

突然想來架設 一個  ipsec的 vpn server
找到文章
http://phorum.study-area.org/index.php?topic=58837.0
http://blog.xuite.net/misgarlic/weblogic/41607364-L2TP%2FIPSec
作參考
其中 需要安裝 opneswan

結果安裝時發現
出現以下訊息

make[3]: Entering directory `/PGRAM/openswan-2.6.39/OBJ.linux.i386/programs/pluto'

cc -g -O2 -fPIE -fstack-protector --param=ssp-buffer-size=4 -Wformat -Wformat-security 

-Werror=format-security -D_FORTIFY_SOURCE=2  -DGCC_LINT  
-I/PGRAM/openswan-2.6.39/ports/linux/include  
-I/PGRAM/openswan-2.6.39/ports/linux/include  
-I/PGRAM/openswan-2.6.39/ports/linux/include  
-I/PGRAM/openswan-2.6.39/programs/pluto/linux26 
-I/PGRAM/openswan-2.6.39/include 
-I/PGRAM/openswan-2.6.39/lib/libcrypto 
-I/PGRAM/openswan-2.6.39/linux/include   &
nbsp;-DPLUTO_SENDS_VENDORID -DUSE_KEYRR  
-DDYNAMICDNS -DNETKEY_SUPPORT 
-DKERNEL26_HAS_KAME_DUPLICATES -DPFKEY -DX509_PLUTO  
 -DPLUTO -DKLIPS -DHAVE_UDPFROMTO -DPFKEY   
-DKLIPS_MAST   -DBUILDER=\"root@L7base\"
-DDEBUG -DUSE_AES -DUSE_3DES -DUSE_SHA2 -DIKE_ALG 
-DKERNEL_ALG -DAGGRESSIVE -DXAUTH -DMODECFG -DMODECFG_DNSWINS
 -DNAT_TRAVERSAL 
-DI_KNOW_TRANSPORT_MODE_HAS_SECURITY_CONCERN_BUT_I_WANT_IT   
     
-DUSE_MODP_RFC5114 -DHAVE_NM -DSHARED_SECRETS_FILE=\"
/etc/ipsec.secrets\" -DPOLICYGROUPSDIR=\"
/etc/ipsec.d/policies\" -DPERPEERLOGDIR=\"
/var/log/pluto/peer\"
-g -Wall -W -Wmissing-prototypes -Wpointer-arith -Wbad-function-cast 
-Wcast-qual -Wmissing-declarations -Wwrite-strings -Wstrict-prototypes
 -Wno-error=cast-qual -Wno-error=cpp -DALLOW_MICROSOFT_BAD_PROPOSAL  
-c /PGRAM/openswan-2.6.39/programs/pluto/connections.c

cc1: error: -Werror=cpp: No option -Wcpp

make[3]: *** [connections.o] Error 1

make[3]: Leaving directory `/PGRAM/openswan-2.6.39/OBJ.linux.i386/programs/pluto'

make[2]: *** [programs] Error 1

make[2]: Leaving directory `/PGRAM/openswan-2.6.39/OBJ.linux.i386/programs'

make[1]: *** [programs] Error 1

make[1]: Leaving directory `/PGRAM/openswan-2.6.39/OBJ.linux.i386'

make: *** [programs] Error 2

=========================
關鍵問題在 cc1: error: -Werror=cpp: No option -Wcpp
疑似因為 使用的參數 我 gcc 版本似乎沒有支援

後續到網路上查看到相同的問題 
原因是 gcc的版本較舊 新版本的參數指令無法編譯

到下面這個連結  即可看到 修正的 Makefile 內容 (可自己動手改或直接覆蓋~)
[Only use -Wno-error=cpp when GCC's version is >= 4.6]
https://github.com/xelerance/Openswan/commit/31e261a07a1aa6b9de1491e8f6053189aff5554b

以下步驟即可搞定!
================


有兩個地方的  "Makefile" 使用到 造成問題的command

(1)lib/libopenswan/Makefile
(2)program/pluto/Makefile

在上面兩個檔案中找到這行 :
 "CFLAGS+= -Wno-error=cpp"

替換成 :
# Check if GCC's version is recent enough

GCC_VERSION_GE_46:=$(shell test `gcc -dumpversion | sed 's/^\([0-9]\)\.\([0-9]\).*/\1\2/'` -ge 46 && echo true || echo false)

ifeq ($(GCC_VERSION_GE_46),true)

 CFLAGS+= -Wno-error=cpp

endif
將會依照你的gcc版本 去判斷是否執行此段程式碼~ 

沒有留言:

張貼留言

留言前請三思,禁止任何色情暴力等不當言語