<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    New

      BlogJava :: 首頁 :: 聯系 :: 聚合  :: 管理
      21 Posts :: 0 Stories :: 4 Comments :: 0 Trackbacks

    2011年11月11日 #

    值得一看的一堆語錄

    昨天在某空間閑逛就轉載了這個,結果被瘋轉!現在,保存到博客上,分享給更多的人。

    同時,分享一個《喬布斯在斯坦福演講》

    1、98年 馬化騰等一伙湊了50萬創辦了騰訊 沒買房;98年 史玉柱 借了50萬搞腦白金 沒買房;99年 丁磊用50萬創辦163.com 沒買房;99年 陳天橋炒股賺了50萬 創辦盛大 沒買房;99年 馬云等18人湊了50萬 注冊阿里巴巴 沒買房。如果當年他們用這50萬買了房,現在估計還在還著銀行的貸款吧。

    2、年輕的我們必須懂得:1、你不勇敢,沒人替你堅強。2、沒有傘的孩子必須努力奔跑!3、自己選擇的路、跪著也要把它走完。4、不要生氣要爭氣, 不要看破要突破,不要嫉妒要欣賞,不要拖延要積極,不要心動要行動。5、寧愿跑起來被拌倒無數次,也不愿規規矩矩走一輩子。就算跌倒也要豪邁的笑

    3、人生三大遺憾:不會選擇,不堅持選擇,不斷地選擇;人生三不斗:不與君子斗名,不與小人斗利,不與天地斗巧;人生三修練:看得透想得開,拿得起 放得下,立得正行得穩;人生三大陷阱:大意,輕信,貪婪;人生三大悲哀:遇良師不學,遇良友不交,遇良機不握。人生三大不爭:不與領導爭鋒,不與同事爭 寵,不與下級爭功

    4、一個人,如果你不逼自己一把,你根本不知道自己有多優秀。一個人,想要優秀,你必須要接受挑戰;一個人,你想要盡快優秀,就要去尋找挑戰。一個人,敢聽真話,需要勇氣;一個人敢說真話,需要魄力。一個人的知識,通過學習可以得到;一個人的成長,必須通過磨練。

    5、【最溫暖的八種食物】①早上醒后來的一個煎蛋;②上班出門前塞在包里的一個蘋果;③加班深夜回家后的一碗熱湯;④睡覺前的一杯牛奶;⑤伏案工作時的一杯熱茶;⑥生病臥床時的一碗白粥;⑦喝悶酒的時候一碟小菜;⑧酒醒后的一碗清湯面。《你吃到過幾樣?》

    6、網易CEO丁磊說:“千萬不要以為我是抱著一個偉大的理想去創辦一個偉大的公司,我從來沒有遠大的理想,也沒有想要成為一個很有錢的人。創辦網 易時我只是想做一個小老板,就想有個房子有輛汽車,不用準時上班,可以睡懶覺。 我的夢想也是那么簡單。”丁磊的話很實在。但是,現在創業已經不是那么簡單了。

    7、人脈中需有的十種職業人:1 票販子、 2旅行社、3律師、4 人才市場/獵頭公司、 4 銀行、5 當地公務人員/警察 、6 名人、7 保險/金融/理財專家、8 維修人員、9 媒體聯絡人、10 醫生/護士/養生專家。《你認識這十種人嗎?用心經營您的人脈關系吧!》

    8、【做人的底線】(1) 不做第三者,即使再喜歡(2) 騙我可以,如果被我知道超過兩次,請你有多遠滾多遠(3) 如果你拿我不當回事,我會以同樣方式對你(4) 我可以裝傻,但別以為我真傻(5) 我可以容忍,但別超過我的底線(6) 我不是沒脾氣,只是不輕易發脾氣(7) 任何真話,我都能接受。

    9、15歲覺得游泳難,放棄游泳,到18歲遇到一個你喜歡的人約你去游泳,你只好說“我不會耶”。18歲覺得英文難,放棄英文,28歲出現一個很棒 但要會英文的工作,你只好說“我不會耶”。人生前期越嫌麻煩,越懶得學,后來就越可能錯過讓你動心的人和事,錯過新風景。—蔡康永

    10、25歲的英國士兵Barry Delaney穿著鮮亮的綠色吊帶短裙和粉紅腿套,在同袍好友Kevin Elliott的葬禮上哭的一塌糊涂,他倆是同在阿富汗執行任務的好友.他們之前有一個約定:無論誰先不幸西歸,另一個都要穿女裝亮相對方的葬禮,為那里 灰暗的悲傷帶去一絲亮色,很感人,一諾千金。《偉大的友誼,你有這樣的朋友么?》

    11、慢慢成熟的標志:1早上無論多困,也會馬上起床上班;2喜歡吃家常便飯多于外面的餐館;3喜歡隱身,網絡簽名長時間不更改;4喜歡看新聞多于 看八卦;5打電話給朋友的次數少了;6可以讓你開心的人或事,越來越少了;7沒結果的事情,漸漸就少做了;8低落的時候選擇一個人呆著。

    12、美國舊金山有一老頭查克費尼,穿舊衣服,戴爛手表,住出租屋,擠公交車。他為美國教育捐出了近20億美金,還希望死前把僅有的40億美金全部 捐獻給社會。在北京有個大富豪陳五喜,開豪車,住華宅,吃大餐,手上戴大鉆戒,投資房地產,同時還在民政部門領取低保,8年間共得到10萬元的社會救助。 《中美差異》

    13、1931年的1月30日是世界現代史上災難的一天,阿道夫·希特勒被任命為德國總理。他的名言:“消滅一個民族,首先瓦解它的文化;要瓦解它 的文化,首先消滅承載它的語言;要消滅這種語言,首先先從他們的學校里下手。”,當今的中國大學里無論什么專業,英語是必修課,漢語卻不是。

    14、尼古拉斯.科波拉,他的親叔叔叫弗朗西斯.科波拉,名滿天下的《教父》的導演。這個小伙子后來去好萊塢混,為了以自己的實力打天下,故意改名為尼古拉斯.凱奇。不想沾任何叔叔的光。中美文化的差異就在于此。《我爸是李剛》

    15、讓你成熟至少5歲的8句話】1、如果你不喜歡現在的工作,要么辭職不干,要么閉嘴不言。2、學會忍受孤獨。3、不要像玻璃那樣脆弱,做個內心 強大的人。4、管住自己的嘴巴。5、會創造機會。6、若電話老是不響,你該打出去。7、不要草率結婚。8、寫出你一生要做的事情,把單子放在皮夾里,經常 拿出來看。

    16、今年,年僅26歲的Facebook的創始人馬克·扎克伯格,以40 億美元身價登上2010 福布斯全球最年輕富豪榜榜首。目前已把自己過半財產捐贈給慈善事業。扎克伯格擁有億萬身家,但他至今仍和華裔女友普莉希拉·陳生活在一套租來的住房里,每 天走路或騎自行車上班。

    17、澳大利亞老板帕爾默,他說:人每次只能睡一張床,吃一頓飯,駕一輛車,跟一個女人一起,所以我決定分一些給大家。為了感謝員工幫助他將企業扭 虧為盈,他送給員工55輛奔馳,讓750名員工出國度假,宴請2000名員工及家屬。員工們興奮的說,這樣的老板,令我傾120%力量去工作。《神奇的領 導力,無處不在》

    18、1992年一艘從中國出發的貨船在太平洋上遭遇強烈風暴,船上一個裝滿2.9萬只塑料玩具鴨的集裝箱墜入大海。令人難以置信的是,其中1萬多 只玩具鴨組成的“鴨子艦隊”在海洋上漂流了14年之后,竟抵達英國海岸。后來,這些鴨子售價激漲百倍。一個人的價值并不在其出身,而在于他譜寫什么樣的人 生履歷。。

    19、80后/90后的通病:1、近視;2、月光族;3、喜歡Money;4、從不鍛煉身體;5、 一日三餐沒有規律;6、路盲,沒有方向感;7、搞不清楚自己的血型;8、有一顆狠宅狠宅的心;9、做事情都是三分鐘熱度;10、經常午夜12點以后才睡 覺。《三條沒有你就是神了》

    20、母親一生的六個謊言:1.(童年時)快吃吧,我不餓;2.(少年時,深夜做針線活)快睡吧,我不困;3.(高考路上)快喝吧,我不渴;4. (參加工作,母親生病時)你趕快去工作吧,我很好;5.(給母親寄錢)你用,我有錢;6.(買房接她住)城里,我不習慣。愿天下的母親健康長壽!《到了畢 業的這個時候,更能體會媽媽的良苦用心,好好去愛她!》

    21、【永遠都不要做的事】1,跟知己上床 2、和情人結婚 3、把同事當成朋友4、到朋友公司打工 5、在上司面前知無不言 6、輕信上司的許諾 7、喜怒哀樂都掛在臉上 8、在人堆里大聲講手機 9、習慣于給自己找借口 10、超車過去,看開著車有著窈窕背影的MM的臉 11、對MM的"字信以為真 12、指望前女友回心轉意。

    22、【成功者的習慣】1.微笑。2.氣質純樸。3.不向朋友借錢。4.背后說別人好話。5.聽到某人說別人壞話時只微笑。6.過去的事不讓人全知 道。7. 尊敬不喜歡你的人。9.對事無情,對人有情。10.多做自我批評。11.為別人喝彩。12.感恩。13.學會聆聽。14.說話時常用我們開頭。15.少說 話。16.喜歡自己。

    22、可敬可畏:1.日本電視臺用中文進行廣播,通知人們地震情況、躲避方式;2.每個家庭都有急救小包,包括藥物、手搖式發電收音機;3、9級大 震后東京建筑幾乎安然無恙,尤其是人們避難時都井然有序的站在道路兩側盡量不阻礙交通,撤離后無一垃圾。日本是個危機意識、集體主義、紀律性極強的國家!

    23、【建立人脈的15個提示】1、學會換位思考;2、學會適應環境;3、學會大方;4、學會低調;5、嘴要甜;6、有禮貌;7、言多必失;8、學 會感恩;9、遵守時間;10、信守諾言;11、學會忍耐;12、有一顆平常心;13、學會贊揚別人;14、待上以敬,待下以寬;15、經常檢討自己。

    24、55年前,就讀于浙江大學的法國女子丹尼和中國學生袁迪寶相戀,但袁已婚了。1956年,丹尼傷痛中離開了中國。最初還通信,但慢慢就斷了來 往。去年初,袁試探著給丹尼寫信,竟然回復了。9月,兩人重逢第三天在廈門結婚,83歲的丹妮第一次穿上了婚紗。愛,它確實存在。《我相信愛情,你呢?》

    25、讓你少奮斗10年的工作經驗:1不要停留在心靈的舒適區域;2不要把好像、大概、晚些時候、或者、說不定之類的話放在嘴邊;3不要拖延工 作;4不要認為理論上可以實施就大功告成了;5不要讓別人等你;6不要認為細節不重要;7不要表現得消極;8不要把改善工作能力僅寄托在公司培訓上;9不 要推卸責任。

    26、人平均一輩子只有7次決定人生走向的機會,兩次機會間相隔約7年,大概25歲后開始出現機會,75歲以后就不會有什么機會了。這50年里的7 次機會,第一次不易抓到,因為太年輕,最后一次也不用抓,因為太老,這樣只剩5次了,這5次機會里又有兩次不小心錯過,所以實際上只有3次機會了。——哈 佛的一項調查報告

    27、職場情商訓練7法:1、把看不順的人看順;2、把看不起的人看起;3、把不想做的事做好;4、把想不通的事想通;5、把快罵出的話收回;6、 把咽不下氣的咽下;7、把想放縱的心收住;——你不需每時每刻這樣做,但這樣多做幾回,你就會:1、情商高了2、職位升了3、工資漲了4、人爽了。

    28、泰勒語錄:(1)我擁有一個女人的身體和一個孩子的情感。(2)我只和與我結婚的男人上過床。有多少女人敢這么說?(3)如果有人笨到花 100萬美元為我拍張照片,我當然不會笨到拒絕他。(4) 成功是一種了不起的除臭劑。它能帶走所有你過去的味道。(5)我不會假裝是個平凡的家庭主婦。

    29、她原系徐州女排隊員,22歲嫁給50歲的cherry獲綠卡后離婚、經新男友引薦入讀耶魯大學。96年旅行結識同座的starTV副總,經推 薦在香港實習。97年晚宴她將一杯紅酒灑在“傳媒大亨”默多克身上,3年后他不顧家人反對而離婚并迎娶她。4年后她以高科技為他生下兩個繼承數十億美金的 女兒。她就是鄧文迪。《運氣總是留給有預謀的人。。》

    30、我年輕時曾與我們州最漂亮的女孩約會,但最后沒有成功。我聽說她后來離過三次婚,如果我們當時真在一起,我都無法想象未來會怎么樣。所以,其 實你人生中最重要的決定是跟什么人結婚!在選擇伴侶上,如果你錯了,將讓你損失很多。而且,損失不僅僅是金錢上的。(BY巴菲特:結婚才是人生最大投資)

    31、蓋茨39歲成世界首富,陳天橋31歲成中國首富,孫中山28歲創辦興中會,王然23歲當局長,孫權19歲據江東,丁俊暉15歲拿世界冠軍,鄧波兒7歲拿奧斯卡,貝多芬4歲開始作曲,葫蘆娃剛出生就打妖怪。你說我們急不急。《我確實著急了!》

    32、理查森,男,紐約。從1984年起連續五次投資失敗。2007徹底破產,妻離子散,朋友消遁,唯有一條名叫JOOY的狗與其不離不棄,忠伴左 右,陪理查森一同在紐約的風雨街頭乞討。從“JOOY”安詳恬靜的睡姿中看得出它對主人的無限信任和依靠。有的人,在滄海變成桑田時,表現得還不如一條 狗。《認識的人多了,我就喜歡了狗》

    33、≪教父≫經典臺詞:1、不要讓別人知道你的想法。 2、當你說不時,你要使不聽上去象是一樣好聽。 3、讓朋友低估你的優點,讓敵人高估你的缺點。4、痛苦不象死亡那樣無可挽回!5、如果你沒有時間和家人在一起,你就永遠無法成為真正的男人。 6、永遠不要恨你的敵人 ,因為這會影響你的判斷力

    34、覺得自己做得到和做不到,其實只在一念之間。自己要先看得起自己,別人才會看得起你。一切偉大的行動和思想,都有一個微不足道的開始。有理想 在的地方,地獄就是天堂;有希望在的地方,痛苦也成歡樂。樂觀者在困難中看到機會;悲觀者在機會中看到苦難。理想的路總是為有信心的人預備著。--﹣李嘉 誠。

    35、女名叫安-德納姆,生在美國堪薩斯。18歲的安在異族通婚非法的年代嫁給了一個非洲黑人留學生。后來,安和丈夫離婚成了單身母親,她靠食品優 惠券生活,是美國醫保系統受害者,在重病時懇求保險公司賠付。然而她的孩子,圖片里裝扮成海盜的小孩,日后成了美利堅合眾國第44任總統,巴拉克-奧巴 馬。《不要因為出身而看不起任何人!》

    36、阿米爾汗,8歲時出演一部轟動印度的電影,是公認的童星,長大后卻一心打網球并獲得過網球冠軍。21歲愛上鄰居家女孩,由于宗教原因兩人決定 私奔,現在過著幸福美滿的生活。他是演員/制片人/導演。81屆奧斯卡最佳影片《貧民窟的百萬富翁》就是他擔當的制片,2009年一部《三個白癡》震驚全 球,他45歲。《你相信堅持的力量么?》

    37、陳佩斯,因為央視出版他的小品而不給錢,較真打官司,遂被徹底封殺。此后陳消失,陳夫婦上山種樹,臉朝黃土背朝天,兩年獲利30萬。陳佩斯哭 了,還想再演戲,可依舊被封殺,就砸30萬改演話劇,第一部舞臺喜劇《托兒》,在全國各地連續演出達120場,票房近4000萬元,創造了當今話劇界無法 超越的神話。《我就想說一句話:是金子在哪都發光。。。》

    38、她,37歲,癌癥晚期。他,42歲,為籌錢給她治病,盜竊一輛電動自行車而入獄,刑期4年。2010年11月12日,他兩人在監獄里舉行了簡 單的婚禮,但這場童話般的婚禮,卻讓在場的數百位嘉賓感動得潸然淚下。偷輛電動車刑期4年,李剛兒子撞死人才3年。無語!一條人命還不如架電動單車。《生 活在這個讓人苦惱的社會。。。》

    39、天下只有兩種人。比如一串葡萄到手,一種人挑最好的先吃,另一種人把最好的留到最后吃。照例第一種人應該樂觀,因為他每吃一顆都是吃剩的葡萄 里最好的;第二種人應該悲觀,因為他每吃一顆都是吃剩的葡萄里最壞的。不過事實卻適得其反,緣故是第二種人還有希望,第一種人只有回憶。——錢鐘書。《你 是哪種人?》

    40、他出身于書香門第,父親是大學教授。他為愛妻,20年來從不上CCAV;他是個好爸爸;他顧家,厭惡應酬,滴酒不沾;他才華橫溢,琴棋書畫樣 樣精通,學生時是體育全能,探戈高手;他飽讀詩書,季羨林贊他可勝任北大的研究生導師,曾與錢鐘書是忘年之交,他說他只是個戲子。他就是陳道明。一個很給 力的男人。

    41、舊上海黑社會老大杜月笙的經典語錄:1、做人有三碗面最難吃:人面、場面、情面。2、頭等人,有本事沒脾氣;二等人,有本事有脾氣;末等人, 沒本事大脾氣。3、人可以不識字,但不能不識人。4、錢財用的完,交情吃不光。所以別人存錢,我存交情。存錢再多不過金山銀海,交情用起來好比天地難量。

    42、成功根本沒有秘訣,如果有的話,就只 有兩個:第一個是堅持到底,永不放棄;第二個就是當你想放棄的時候,請回過頭來再照著第一個秘訣去做。——丘吉爾

    43、他,21歲,生意失敗。22歲,州議員落選。24歲,生意再敗。26歲,愛侶去世。27歲,一度精神崩潰。36歲,眾議員落選。45歲,參議 員落選。47歲,提名副總統落選。49歲時,參議員落選。52歲,當選美國第十六任總統。他叫林肯,堅信上帝的延遲,并不是上帝的拒絕,最終成就不凡。

    44、善良的蘇格蘭農夫從糞池救出一個小男孩,男孩的紳士父親酬謝,農夫拒。紳士說:讓我們簽個協議,我帶走你的孩子,給他最好的教育,農夫允。農 夫的孩子后來發明了青霉素,獲得諾貝爾獎。數年后,紳士的兒子得了肺炎,青霉素治好了他。這兩個孩子分別是弗萊明和丘吉爾。 《冥冥之中,自有天意》

    posted @ 2011-12-15 13:36 H.C 閱讀(361) | 評論 (0)編輯 收藏

    最簡單的方法就是下載一個buildtoolchain.tar.gz安裝就行了,有時候就是想自己親身體驗一下安裝定制過程,Linux的樂趣也在這點。從網上搜集了些資料,以備日后查閱。    
    如何為嵌入式開發建立交叉編譯環境


     


      
     
    < language=java type=text/java script>      
     
     


     
    梁元恩 , 軟件工程師


    2005 年 9 月

            在進行嵌入式開發之前,首先要建立一個交叉編譯環境,這是一套編譯器、連接器和libc庫等組成的開發環境。文章通過一個具體的例子說明了這些嵌入式交叉編譯開發工具的制作過程。

    隨著消費類電子產品的大量開發和應用和Linux操作系統的不斷健壯和強大,嵌入式系統越來越多的進入人們的生活之中,應用范圍越來越廣。

    在裁減和定制Linux,運用于你的嵌入式系統之前,由于一般嵌入式開發系統存儲大小有限,通常你都要在你的強大的pc機上建立一個用于目標機的交 叉編譯環境。這是一個由編譯器、連接器和解釋器組成的綜合開發環境。交叉編譯工具主要由 binutils、gcc 和 glibc 幾個部分組成。有時出于減小 libc 庫大小的考慮,你也可以用別的 c 庫來代替 glibc,例如 uClibc、dietlibc 和 newlib。建立一個交叉編譯工具鏈是一個相當復雜的過程,如果你不想自己經歷復雜的編譯過程,網上有一些編譯好的可用的交叉編譯工具鏈可以下載。

    下面我們將以建立針對arm的交叉編譯開發環境為例來解說整個過程,其他的體系結構與這個相類似,只要作一些對應的改動。我的開發環境是,宿主機 i386-redhat-7.2,目標機 arm。

    這個過程如下

    1. 下載源文件、補丁和建立編譯的目錄

    2. 建立內核頭文件

    3. 建立二進制工具(binutils)

    4. 建立初始編譯器(bootstrap gcc)

    5. 建立c庫(glibc)

    6. 建立全套編譯器(full gcc)

    下載源文件、補丁和建立編譯的目錄

    1. 選定軟件版本號

    選擇軟件版本號時,先看看glibc源代碼中的INSTALL文件。那里列舉了該版本的glibc編譯時所需的binutils 和gcc的版本號。例如在 glibc-2.2.3/INSTALL 文件中推薦 gcc 用 2.95以上,binutils 用 2.10.1 以上版本。

    我選的各個軟件的版本是:

    linux-2.4.21+rmk2
    binutils-2.10.1
    gcc-2.95.3
    glibc-2.2.3
    glibc-linuxthreads-2.2.3

    如果你選的glibc的版本號低于2.2,你還要下載一個叫glibc-crypt的文件,例如glibc-crypt-2.1.tar.gz。 Linux 內核你可以從www.kernel.org 或它的鏡像下載。

    Binutils、gcc和glibc你可以從FSF的FTP站點ftp://ftp.gun.org/gnu/ 或它的鏡像去下載。在編譯glibc時,要用到 Linux 內核中的 include 目錄的內核頭文件。如果你發現有變量沒有定義而導致編譯失敗,你就改變你的內核版本號。例如我開始用linux-2.4.25+vrs2,編譯 glibc-2.2.3 時報 BUS_ISA 沒定義,后來發現在 2.4.23 開始它的名字被改為 CTL_BUS_ISA。如果你沒有完全的把握保證你改的內核改完全了,就不要動內核,而是把你的 Linux 內核的版本號降低或升高,來適應 glibc。

    Gcc 的版本號,推薦用 gcc-2.95 以上的。太老的版本編譯可能會出問題。Gcc-2.95.3 是一個比較穩定的版本,也是內核開發人員推薦用的一個 gcc 版本。

    如果你發現無法編譯過去,有可能是你選用的軟件中有的加入了一些新的特性而其他所選軟件不支持的原因,就相應降低該軟件的版本號。例如我開始用 gcc-3.3.2,發現編譯不過,報 as、ld 等版本太老,我就把 gcc 降為 2.95.3。太新的版本大多沒經過大量的測試,建議不要選用。


     
     

    2. 建立工作目錄

    首先,我們建立幾個用來工作的目錄:

    在你的用戶目錄,我用的是用戶liang,因此用戶目錄為 /home/liang,先建立一個項目目錄embedded。

    $pwd 
    /home/liang
    $mkdir embedded
     


    再在這個項目目錄 embedded 下建立三個目錄 build-tools、kernel 和 tools。

    build-tools-用來存放你下載的 binutils、gcc 和 glibc 的源代碼和用來編譯這些源代碼的目錄。

    kernel-用來存放你的內核源代碼和內核補丁。

    tools-用來存放編譯好的交叉編譯工具和庫文件。

    $cd embedded
    $mkdir  build-tools kernel tools
     


    執行完后目錄結構如下:

    $ls embedded
    build-tools kernel tools
     


    3. 輸出和環境變量

    我們輸出如下的環境變量方便我們編譯。

    $export PRJROOT=/home/liang/embedded
    $export TARGET=arm-linux
    $export PREFIX=$PRJROOT/tools
    $export TARGET_PREFIX=$PREFIX/$TARGET
    $export PATH=$PREFIX/bin:$PATH
     


    如果你不慣用環境變量的,你可以直接用絕對或相對路徑。我如果不用環境變量,一般都用絕對路徑,相對路徑有時會失敗。環境變量也可以定義在.bashrc文件中,這樣當你logout或換了控制臺時,就不用老是export這些變量了。

    體系結構和你的TAEGET變量的對應如下表


     

    你可以在通過glibc下的config.sub腳本來知道,你的TARGET變量是否被支持,例如:

    $./config.sub  arm-linux
    arm-unknown-linux-gnu
     


    在我的環境中,config.sub 在 glibc-2.2.3/scripts 目錄下。

    網上還有一些 HOWTO 可以參考,ARM 體系結構的《The GNU Toolchain for ARM Target HOWTO》,PowerPC 體系結構的《Linux for PowerPC Embedded Systems HOWTO》等。對TARGET的選取可能有幫助。

    4. 建立編譯目錄

    為了把源碼和編譯時生成的文件分開,一般的編譯工作不在的源碼目錄中,要另建一個目錄來專門用于編譯。用以下的命令來建立編譯你下載的binutils、gcc和glibc的源代碼的目錄。

    $cd $PRJROOT/build-tools
    $mkdir build-binutils build-boot-gcc build-gcc build-glibc gcc-patch
     


    build-binutils-編譯binutils的目錄
    build-boot-gcc-編譯gcc 啟動部分的目錄
    build-glibc-編譯glibc的目錄
    build-gcc-編譯gcc 全部的目錄
    gcc-patch-放gcc的補丁的目錄

    gcc-2.95.3 的補丁有 gcc-2.95.3-2.patch、gcc-2.95.3-no-fixinc.patch 和gcc-2.95.3-returntype-fix.patch,可以從 http://www.linuxfromscratch.org/ 下載到這些補丁。

    再將你下載的 binutils-2.10.1、gcc-2.95.3、glibc-2.2.3 和 glibc-linuxthreads-2.2.3 的源代碼放入 build-tools 目錄中

    看一下你的 build-tools 目錄,有以下內容:

    $ls
    binutils-2.10.1.tar.bz2     build-gcc   gcc-patch
    build-binutls            build-glibc          glibc-2.2.3.tar.gz
    build-boot-gcc           gcc-2.95.3.tar.gz glibc-linuxthreads-2.2.3.tar.gz
     


     
     

    建立內核頭文件

    把你從 www.kernel.org 下載的內核源代碼放入 $PRJROOT /kernel 目錄

    進入你的 kernel 目錄:

    $cd $PRJROOT /kernel
     


    解開內核源代碼

    $tar -xzvf linux-2.4.21.tar.gz
     


    $tar -xjvf linux-2.4.21.tar.bz2
     


    小于 2.4.19 的內核版本解開會生成一個 linux 目錄,沒帶版本號,就將其改名。

    $mv linux linux-2.4.x
     


    給 Linux 內核打上你的補丁

    $cd linux-2.4.21
    $patch -p1 < ../patch-2.4.21-rmk2
     


    編譯內核生成頭文件

    $make ARCH=arm CROSS_COMPILE=arm-linux- menuconfig

    你也可以用 config 和 xconfig 來代替 menuconfig,但這樣用可能會沒有設置某些配置文件選項和沒有生成下面編譯所需的頭文件。推薦大家用 make menuconfig,這也是內核開發人員用的最多的配置方法。配置完退出并保存,檢查一下的內核目錄中的 include/linux/version.h 和 include/linux/autoconf.h 文件是不是生成了,這是編譯 glibc 是要用到的,version.h 和 autoconf.h 文件的存在,也說明了你生成了正確的頭文件。

    還要建立幾個正確的鏈接

    $cd include
    $ln -s asm-arm asm
    $cd asm
    $ln -s arch-epxa arch
    $ln -s proc-armv proc
     


    接下來為你的交叉編譯環境建立你的內核頭文件的鏈接

    $mkdir -p $TARGET_PREFIX/include
    $ln -s $PRJROOT/kernel/linux-2.4.21/include/linux  $TARGET_PREFIX/include/linux
    $in -s $PRJROOT/kernel/linux-2.4.21/include/asm-arm  $TARGET_PREFIX/include/asm
     


    也可以把 Linux 內核頭文件拷貝過來用

    $mkdir -p $TARGET_PREFIX/include
    $cp -r $PRJROOT/kernel/linux-2.4.21/include/linux  $TARGET_PREFIX/include
    $cp -r $PRJROOT/kernel/linux-2.4.21/include/asm-arm  $TARGET_PREFIX/include  
     


     
     

    建立二進制工具(binutils)

    binutils是一些二進制工具的集合,其中包含了我們常用到的as和ld。

    首先,我們解壓我們下載的binutils源文件。

    $cd $PRJROOT/build-tools
    $tar -xvjf binutils-2.10.1.tar.bz2
     


    然后進入build-binutils目錄配置和編譯binutils。

    $cd build-binutils
    $../binutils-2.10.1/configure --target=$TARGET --prefix=$PREFIX
     


    --target 選項是指出我們生成的是 arm-linux 的工具,--prefix 是指出我們可執行文件安裝的位置。

    會出現很多 check,最后產生 Makefile 文件。

    有了 Makefile 后,我們來編譯并安裝 binutils,命令很簡單。

    $make
    $make install
     


    看一下我們 $PREFIX/bin 下的生成的文件

    $ls $PREFIX/bin
    arm-linux-addr2line arm-linux-gasp arm-linux-objdump  arm-linux-strings
    arm-linux-ar   arm-linux-ld  arm-linux-ranlib  arm-linux-strip
    arm-linux-as   arm-linux-nm  arm-linux-readelf 
    arm-linux-c++filt  arm-linux-objcopy arm-linux-size
     


    我們來解釋一下上面生成的可執行文件都是用來干什么的

    add2line - 將你要找的地址轉成文件和行號,它要使用 debug 信息。

    Ar-產生、修改和解開一個存檔文件

    As-gnu 的匯編器

    C++filt-C++ 和 java 中有一種重載函數,所用的重載函數最后會被編譯轉化成匯編的標號,c++filt 就是實現這種反向的轉化,根據標號得到函數名。

    Gasp-gnu 匯編器預編譯器。

    Ld-gnu 的連接器

    Nm-列出目標文件的符號和對應的地址

    Objcopy-將某種格式的目標文件轉化成另外格式的目標文件

    Objdump-顯示目標文件的信息

    Ranlib-為一個存檔文件產生一個索引,并將這個索引存入存檔文件中

    Readelf-顯示 elf 格式的目標文件的信息

    Size-顯示目標文件各個節的大小和目標文件的大小

    Strings-打印出目標文件中可以打印的字符串,有個默認的長度,為4

    Strip-剝掉目標文件的所有的符號信息


     
     

    建立初始編譯器(bootstrap gcc)

    首先進入 build-tools 目錄,將下載 gcc 源代碼解壓

    $cd $PRJROOT/build-tools
    $tar -xvzf  gcc-2.95.3.tar.gz
     


    然后進入 gcc-2.95.3 目錄給 gcc 打上補丁

    $cd gcc-2.95.3
    $patch -p1< ../gcc-patch/gcc-2.95.3.-2.patch
    $patch -p1< ../gcc-patch/gcc-2.95.3.-no-fixinc.patch
    $patch -p1< ../gcc-patch/gcc-2.95.3-returntype-fix.patch
    echo timestamp > gcc/cstamp-h.in
     


    在我們編譯并安裝 gcc 前,我們先要改一個文件 $PRJROOT/gcc/config/arm/t-linux,把
    TARGET_LIBGCC2-CFLAGS = -fomit-frame-pointer -fPIC
    這一行改為
    TARGET_LIBGCC2-CFLAGS = -fomit-frame-pointer -fPIC -Dinhibit_libc -D__gthr_posix_h

    你如果沒定義 -Dinhibit,編譯時將會報如下的錯誤

    http://www.cnblogs.com/gcc-2.95.3/gcc/libgcc2.c:41: stdlib.h: No such file or directory
    http://www.cnblogs.com/gcc-2.95.3/gcc/libgcc2.c:42: unistd.h: No such file or directory
    make[3]: *** [libgcc2.a] Error 1
    make[2]: *** [stmp-multilib-sub] Error 2
    make[1]: *** [stmp-multilib] Error 1
    make: *** [all-gcc] Error 2
     


    如果沒有定義 -D__gthr_posix_h,編譯時會報如下的錯誤

    In file included from gthr-default.h:1,
                     from http://www.cnblogs.com/gcc-2.95.3/gcc/gthr.h:98,
                     from http://www.cnblogs.com/gcc-2.95.3/gcc/libgcc2.c:3034:
    http://www.cnblogs.com/gcc-2.95.3/gcc/gthr-posix.h:37: pthread.h: No such file or directory
    make[3]: *** [libgcc2.a] Error 1
    make[2]: *** [stmp-multilib-sub] Error 2
    make[1]: *** [stmp-multilib] Error 1
    make: *** [all-gcc] Error 2
     


    還有一種與-Dinhibit同等效果的方法,那就是在你配置configure時多加一個參數-with-newlib,這個選項不會迫使我們必須使用newlib。我們編譯了bootstrap-gcc后,仍然可以選擇任何c庫。

    接著就是配置boostrap gcc, 后面要用bootstrap gcc 來編譯 glibc 庫。

    $cd ..; cd build-boot-gcc
    $../gcc-2.95.3/configure --target=$TARGET --prefix=$PREFIX \
    >--without-headers  --enable-languages=c --disable-threads
     


    這條命令中的 -target、--prefix 和配置 binutils 的含義是相同的,--without-headers 就是指不需要頭文件,因為是交叉編譯工具,不需要本機上的頭文件。-enable-languages=c是指我們的 boot-gcc 只支持 c 語言。--disable-threads 是去掉 thread 功能,這個功能需要 glibc 的支持。

    接著我們編譯并安裝 boot-gcc

    $make all-gcc
    $make install-gcc
     


    我們來看看 $PREFIX/bin 里面多了哪些東西

    $ls $PREFIX/bin
     


    你會發現多了 arm-linux-gcc 、arm-linux-unprotoize、cpp 和 gcov 幾個文件。

    Gcc-gnu 的 C 語言編譯器

    Unprotoize-將 ANSI C 的源碼轉化為 K&R C 的形式,去掉函數原型中的參數類型。

    Cpp-gnu的 C 的預編譯器

    Gcov-gcc 的輔助測試工具,可以用它來分析和優程序。

    使用 gcc3.2 以及 gcc3.2 以上版本時,配置 boot-gcc 不能使用 --without-headers 選項,而需要使用 glibc 的頭文件。


     
     

    建立 c 庫(glibc)

    首先解壓 glibc-2.2.3.tar.gz 和 glibc-linuxthreads-2.2.3.tar.gz 源代碼

    $cd $PRJROOT/build-tools
    $tar -xvzf glibc-2.2.3.tar.gz
    $tar -xzvf glibc-linuxthreads-2.2.3.tar.gz --directory=glibc-2.2.3
     


    然后進入 build-glibc 目錄配置 glibc

    $cd build-glibc
    $CC=arm-linux-gcc ../glibc-2.2.3/configure --host=$TARGET --prefix="/usr"
    --enable-add-ons --with-headers=$TARGET_PREFIX/include
     


    CC=arm-linux-gcc 是把 CC 變量設成你剛編譯完的boostrap gcc,用它來編譯你的glibc。--enable-add-ons是告訴glibc用 linuxthreads 包,在上面我們已經將它放入了 glibc 源碼目錄中,這個選項等價于 -enable-add-ons=linuxthreads。--with-headers 告訴 glibc 我們的linux 內核頭文件的目錄位置。

    配置完后就可以編譯和安裝 glibc

    $make
    $make install_root=$TARGET_PREFIX prefix="" install
     


    然后你還要修改 libc.so 文件


    GROUP ( /lib/libc.so.6 /lib/libc_nonshared.a)

    改為
    GROUP ( libc.so.6 libc_nonshared.a)

    這樣連接程序 ld 就會在 libc.so 所在的目錄查找它需要的庫,因為你的機子的/lib目錄可能已經裝了一個相同名字的庫,一個為編譯可以在你的宿主機上運行的程序的庫,而不是用于交叉編譯的。


     
     

    建立全套編譯器(full gcc)

    在建立boot-gcc 的時候,我們只支持了C。到這里,我們就要建立全套編譯器,來支持C和C++。

    $cd $PRJROOT/build-tools/build-gcc
    $../gcc-2.95.3/configure --target=$TARGET --prefix=$PREFIX --enable-languages=c,c++
     


    --enable-languages=c,c++ 告訴 full gcc 支持 c 和 c++ 語言。

    然后編譯和安裝你的 full gcc

    $make all
    $make install
     


    我們再來看看 $PREFIX/bin 里面多了哪些東西

    $ls $PREFIX/bin
     


    你會發現多了 arm-linux-g++ 、arm-linux-protoize 和 arm-linux-c++ 幾個文件。

    G++-gnu的 c++ 編譯器。

    Protoize-與Unprotoize相反,將K&R C的源碼轉化為ANSI C的形式,函數原型中加入參數類型。

    C++-gnu 的 c++ 編譯器。

    到這里你的交叉編譯工具就算做完了,簡單驗證一下你的交叉編譯工具。

    用它來編譯一個很簡單的程序 helloworld.c

    #i nclude

    int main(void)
    {
     printf("hello world\n");
     return 0;
    }

    $arm-linux-gcc helloworld.c -o helloworld
    $file helloworld
    helloworld: ELF 32-bit LSB executable, ARM, version 1,
    dynamically linked (uses shared libs), not stripped
     


    上面的輸出說明你編譯了一個能在 arm 體系結構下運行的 helloworld,證明你的編譯工具做成功了。
    posted @ 2011-12-05 09:14 H.C 閱讀(483) | 評論 (0)編輯 收藏

    彈出警告窗口
            String tf1=this.jTextField1.getText();
    String tf2
    =this.jTextField2.getText();
    if(!(tf1.equals("")||tf1.charAt(0)== ' '||(int)tf1.charAt(0)==10||tf2.equals("")||tf2.charAt(0)== ' '||(int)tf2.charAt(0)==10)){
    //如果用戶名,密碼輸入不為空,執行操作
    }
    else
    JOptionPane.showMessageDialog(
    null, "輸入為空! ","警告 ",JOptionPane.WARNING_MESSAGE);//若輸入為空或第一個字符為空格或者回車,則彈出警告窗口
    posted @ 2011-11-24 17:55 H.C 閱讀(248) | 評論 (1)編輯 收藏


    import java.util.*;
    import java.text.SimpleDateFormat;

    public class test{
        Date date = new Date();
        SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd");
        System.out.println(df.format(date));
        date.getTime()   //返回從1970-1-1 零時到現在的毫秒數
       
        df.parse("2011-11-23")  //將字符串轉換為Date類型
        df.format(date)         //將Date類型轉換為字符串類型

        date.getTime()  < date1.getTime()   //比較兩個日期的大小

        (date.getTime() - date1.getTime())/(1000*60*60*24)  // 兩個日期相差的天數

    posted @ 2011-11-23 20:34 H.C 閱讀(200) | 評論 (0)編輯 收藏

    grub的安裝

    grub> root (hd0,0)    //指定現在根目錄,后面的操作都是在這個分區里進行的。
                            //grub以發現磁盤的順序命名hd0是第一塊磁盤,hd1是第二塊磁盤。第一分區為0,第二分區為1。hd0,0是第一塊磁盤的第一分區。
    grub>setup(hd0)       //把grub的stage1寫入第一塊磁盤的MBR,也可以用Install具體看HELP。在/boot/grub文件夾里有stage1 ,stage2文件。

    grub配置

    grub啟動菜單由menu.lst配置

    default 0    //默認啟動第一個
    timeout     //等待時間

    title        ubutun8.04    //菜單中顯示的標題
    root       (hd0,0)      //同上
    kernel      /boot/vmlinuz   root= /dev/sda0  ro quiet   //同下

    直接從GRUB命令行啟動系統

    grub>root(hd0,0)      //同上
    grub>kernel  /boot/vmlinuz.2.6.24-29  root=/dev/sda0 ro quiet   //要load的內核位置。root是啟動后真文件系統的根目錄。ro 掛載為只讀模式。quiet 安靜模式,不回顯。
    grub>initrd   /boot/initrd.2.6.24-29     //ramfs文件系統的壓縮文件,這個可以自己制作。
    grub>boot           //啟動

    這是自己寫的筆記,只作參考。如有不對敬請斧正。
    posted @ 2011-11-15 21:00 H.C 閱讀(249) | 評論 (0)編輯 收藏

    .切換到kdm和gdm的方法是:
    sudo dpkg-reconfigure gdm
    sudo dpkg-reconfigure kdm

    1.假如需要切換到GNOME:

    #switchdesk gnome

    2.假如需要切換到KDE:

    #switchdesk kde

    刪除kubuntu開機畫面
    sudo apt-get --purge plymouth-theme-kubuntu-logo

    posted @ 2011-11-14 19:38 H.C 閱讀(285) | 評論 (0)編輯 收藏

    yEd Graph Editor
    posted @ 2011-11-14 10:42 H.C 閱讀(326) | 評論 (0)編輯 收藏

    ~/.config/user-dirs.dirs
    posted @ 2011-11-12 17:09 H.C 閱讀(280) | 評論 (0)編輯 收藏

    I. 配置系統環境
    執行 sudo vi /var/lib/locales/supported.d/zh
    加入以下配置參數
    zh_CN.GB18030 GB18030 (最新漢字編碼字符集,向下兼容GBK,GB2312)
    zh_CN.GBK GBK (漢字擴展編碼,向下兼容GB2312, 并包含BIG5全部漢字)
    zh_CN.GB2312 GB2312 (簡化漢字編碼字符集, 最近有客戶要我們改進GB2312,太看得起我們了,我只能說:"NO!")
    zh_CN.GB18031 GB18031 (數字鍵盤漢字編碼輸入,面向手持設備,我的Nokia3120從來就是發短信,接聽電話,無法和PC通訊,就不用這個了。maybe用Google Android SDK的大俠們需要這個)
    zh_HK.BIG5 BIG5 (繁體)
    zh_TW.BIG5 BIG5 (繁體)
    然后執行 sudo locale-gen 
    提示以下信息,成功了
    zh_CN.GB18030... done
    zh_CN.GBK... done



    e.g. vi
    執行 sudo vi /etc/vim/vimrc 
    加入以下配置參數
    let &termencoding=&encoding
    set fileencodings=utf-8,gb18030,gbk,gb2312,big5


    最好是將系統的默認編碼設置為 GBK, 這樣和 Windows 下面的開發環境最接近. 設置的方法應該不止一種, 我采用的是編輯 /etc/environment, 改成這個樣子:
      LANGUAGE="zh_CN:zh:en_US:en"
    GST_ID3_TAG_ENCODING=GBK
    LANG=zh_CN.GBK
    LC_CTYLE=zh_CN.GBK


    posted @ 2011-11-12 10:03 H.C 閱讀(1904) | 評論 (1)編輯 收藏

    反短斜線
    使用反短斜線可以將一個命令的輸出作為另外一個命令的一個命令行參數。
    命令:
    find . -mtime -1 -type f -print
    用來查找過去24小時(-mtime –2則表示過去48小時)內修改過的文件。如果您想將所有查找到的文件打一個包,則可以使用以下腳本:
    #!/bin/sh
    # The ticks are backticks (`) not normal quotes ('):
    tar -zcvf lastmod.tar.gz `find . -mtime -1 -type f -print`


    流程控制

    "if" 表達式 如果條件為真則執行then后面的部分:
    if ....; then
    ....
    elif ....; then
    ....
    else
    ....
    fi
    大多數情況下,可以使用測試命令來對條件進行測試。比如可以比較字符串、判斷文件是否存在及是否可讀等等…
    通常用" [ ] "來表示條件測試。注意這里的空格很重要。要確保方括號的空格。
    [ -f "somefile" ] :判斷是否是一個文件
    [ -x "/bin/ls" ] :判斷/bin/ls是否存在并有可執行權限
    [ -n "$var" ] :判斷$var變量是否有值
    [ "$a" = "$b" ] :判斷$a和$b是否相等

    case ... in
    ...) do something here ;;
    esac
    #!/bin/sh
    ftype=`file "$1"`
    case "$ftype" in
    "$1: Zip archive"*)
    unzip "$1" ;;
    "$1: gzip compressed"*)
    gunzip "$1" ;;
    "$1: bzip2 compressed"*)
    bunzip2 "$1" ;;
    *) error "File $1 can not be uncompressed with smartzip";;
    esac

    select var in ... ; do
    break
    done

    #!/bin/sh
    echo "What is your favourite OS?"
    select var in "Linux" "Gnu Hurd" "Free BSD" "Other"; do
    break
    done
    echo "You have selected $var"

    while ...; do
    ....
    done

    for var in ....; do
    ....
    done

    for var in ....; do
    ....
    done

    下面是一個更為有用的腳本showrpm,其功能是打印一些RPM包的統計信息:
    #!/bin/sh
    # list a content summary of a number of RPM packages
    # USAGE: showrpm rpmfile1 rpmfile2 ...
    # EXAMPLE: showrpm /cdrom/RedHat/RPMS/*.rpm
    for rpmpackage in $*; do
    if [ -r "$rpmpackage" ];then
    echo "=============== $rpmpackage =============="
    rpm -qi -p $rpmpackage
    else
    echo "ERROR: cannot read file $rpmpackage"
    fi
    done
    這里出現個特殊的變量$*,該變量包含了所有輸入的命令行參數值。如果您運行showrpm openssh.rpm w3m.rpm webgrep.rpm
    此時 $* 包含了 3 個字符串,即openssh.rpm, w3m.rpm and webgrep.rpm.

    特殊變量

    $#參數個數
    $*所有參數
    posted @ 2011-11-11 10:06 H.C 閱讀(238) | 評論 (0)編輯 收藏

    主站蜘蛛池模板: 日韩在线免费视频| 57pao一国产成永久免费| 全部免费毛片在线| 亚洲AV色无码乱码在线观看 | 色视频在线观看免费| 国产高清在线免费| 粉色视频在线观看www免费| 亚洲av片一区二区三区| 永久免费无码网站在线观看个| 亚洲精品无码99在线观看| 国产高潮久久免费观看| 亚洲国产精品久久久天堂| 99精品一区二区免费视频| 亚洲人6666成人观看| 永久黄网站色视频免费| 免费国产草莓视频在线观看黄| 国产成人毛片亚洲精品| 99久久99久久精品免费观看| 色婷五月综激情亚洲综合| 国产美女精品久久久久久久免费| 污视频网站免费观看| 久久精品国产精品亚洲色婷婷| 亚洲视频在线观看免费视频| 亚洲精品无码久久久久久| 亚洲一区二区高清| 97在线视频免费播放| 亚洲色欲色欱wwW在线| 亚洲欧洲国产成人综合在线观看| 免费av一区二区三区| 亚洲人成图片网站| 自拍偷自拍亚洲精品被多人伦好爽 | 亚洲中文字幕无码爆乳AV| 麻豆高清免费国产一区| 亚洲精品无码久久久久A片苍井空| 久久久久亚洲AV综合波多野结衣| 99久久免费观看| 黄色网址免费在线| 亚洲视频在线免费看| 男人的天堂亚洲一区二区三区 | 男女猛烈xx00免费视频试看| 亚洲国产精品va在线播放|