2013年8月29日 星期四

發呆型 程式設計

很久 沒在這寫心情了
颱風康芮 正在用颱風尾 騷擾台灣中
害得我 必須在風雨中上班 = =|||
雖說來上半 但心裡懸念著 電競的新歷史"小巨蛋的戰役" XD

最近對於寫程式 似乎沒有像以前那麼拼命了
有了幾次的經驗
慢慢的發現 有時候 停下來 多想一下
其實可以減少很多 不必要的問題與時間

有時候甚至 我花了 2.3個小時都在思考與查詢
在別人眼裡 可能跟發呆沒兩樣吧 XD
至於 真的寫程式碼的時間 可能不到一個小時吧~

此時 腦袋寫程式的功力 真的也很重要
現在我已經不隨便下手
以前都是 想到哪 就先動手 可能經過了好一段時間才發現
可能在前幾個步驟 就有問題
又得花時間去改 去修

但不少人 被時程追著跑
甚至寫程式也要有"業績"
每天都得擠出那幾行的程式碼來交差

環境麻!也不一定是自己能改變的~

不過
至少可以改變自己的心態吧
不奢求變成武林的高高手
但遇到問題 都還是願意抱著熱血往前衝
享受過五關斬六將的快感 -.-

開心地寫程式吧!! ^^!

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版本 去判斷是否執行此段程式碼~