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

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

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

    wonderer's program

    everything will be better
    posts - 19, comments - 6, trackbacks - 0, articles - 0
      BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理

    翻譯:把 Borland Turbo c 的源代碼移植到GNU gcc

    Posted on 2007-03-31 16:23 wonderer 閱讀(1424) 評論(1)  編輯  收藏 所屬分類: linux翻譯

    把 Borland Turbo c 的源代碼移植到GNU gcc

    內容
    TurboC 的大概內容
    TurboC為何而生??
    其他方法(Alternate Approaches, 不知道是不是這樣翻譯)
    TurboC的特點與不足
    下載和安裝TurboC
    未來的計劃
    為什么要用這么可愛的logo呢?

    TurboC的大概內容

    TurboC是一個可連接的庫同時也是一大堆C語言的頭文件,是為了更容易地在GNU gcc,也就是在類Unix系統上,編譯那些用原來在Turbo C編譯器編譯的MS-DOS系統的C語言的源文件,概括如下:
    通過Turbo C的conio.x里的ncurses的實現
    通過Turbo C的graphics.h里的Xlib的實現
    一些其他的函數和為了方便的節省時間的特征
    一種克服了Turbo C和GUN gcc的整型數據類型差異的方法
    但不管怎么說,這也不是一個完美的解決方案,但是你會發現它還是有用的.你可以在它相關的早期的發展階段找到graphics.h的幫助.
    TurboC遵于GNU的LGPL協議(Lesser General Public License).

    TurboC為何而生??

    我寫過很多基于MS-DOS的用Borland公司的Turbo C 2.0編譯器編譯的程序.當由于愛好的原因,我想把其中一些代碼以自由軟件的形式存在,我便想到了把這些代碼發布在GPL下,是MS-DOS的代碼,慢慢的把它們轉換成類Unix系統的代碼.很明顯,預先直接的去轉換(MS-DOS--> *nix)是一件很耗時的工作.而且漸漸的,我遇到了困難,因為發布一個別人無法理解其源代碼的的軟件并不是一件好事.而我最喜歡的發布開源的頻道fleshmeat不"吃"MS-DOS,因此它很文雅的拒絕了我的MS-DOS項目.
    很顯然,現在的需要是更底層的,然后我就想到了我可以提供合適兼容的Turbo C的庫和頭文件,這樣,把Turbo C的源碼引到類Unix系統就會簡單得多.也就是說,提供舊版本的MS-DOS的類Unix版本是一件相對容易很多的事情.但究竟這個容易去到哪兒,跟你要引進的程序的很多東西都有關.

    其他方法(Alternate Approaches, 不知道是不是這樣翻譯)

    對于conio.h的功能,你可以考慮使用pablo Vidal的UConio的庫來代替.但是我沒有使用過,所以無法說出其好長與不足,不過它肯定提供比TurboC提供一個少得多的Conio的功能的子集.而且它也會要求你更大范圍的修改你的源代碼.
    Borland公司已經有了(或許會提供)一個Linux版本的C++編譯器,這樣的話,它的nature,價格和這個編譯器的目標工作平臺將是一個謎.一種假設(象Kylix)就是它將基于wine的,所以它只可以工作在x86的系統上面.但是,如果它包括了在TurboC上實現的庫,那樣,老實說,他提供了一種更簡單的的方法來把你Turbo C的源代碼引入到Linux上,但如果這樣的話,它將會是非常龐大的.對我自己來說,盡管已經是一個很久的borland公司的用戶了,但我還是非常希望用GNU gcc來編譯我的程序.
    對于graphics.h的功能,有一個Csaba Biegl, Michael Goffioul, and Hartmut Schirmer的GRX庫.直到graphics.h的功能還有一點還沒寫完的時候,我才發現了這個庫,因此我還沒來得及很充分的測試它.它的目標是要成為一個多平臺的2D圖像庫.它的官網沒有宣傳(甚至沒有提到)與Turbo C的兼容性.然而,它只包括了非常少量的與Turbo C同名(當然還有相同功能)的功能.
    當然,如果你只是感興趣在類Unix系統上運行你的程序,同時也反對把其他程序引到類Unix系統上,那你也可以在linux版本的DOS emulators 下運行你已經存在的程序.DOS emulation使用了 dosemu 和 freedos ,在x86系統上工作得非常好,同時 bochs 和 freedos在非x86類Unix系統上工作的也不錯(但可能有點慢).

    TurboC的特點與不足

    特點
    TurboC 提供了Turbo C的conio.h頭文件控制臺的大部分功能,與相關的ncurses的功能一一對應.(當然,除了scanf之外的conio.h的功能都有提供)
    TurboC提供了Turbo C的graphics.h頭文件"BGI"的大部分功能.到目前為止(2002 06 08),除了臨時缺乏stroked-font的支持,這些特點的實現已經完成的很徹底了.
    TurboC提供了這些丟失的功能諸如strupr和strlwr的功能的很少的東西,
    請確認可提供的方法的完整列表:

    不足
    請參考bugs和issues的完整列表.到目前為止,這個庫文件只是我在特定的我寫的Turbo C的程序所需要的那么完整,隨著我引入的我以前的程序到類Unix 系統的多起來,TurboC的庫大概才會愈來愈完整.到目前為止,本質上conio.h的支持已經完整了,除了顯示文本外,graphics.h的支持也本質上完整了.
    在已經引進的程序里,除非你使用了xterm,要不然文本控制臺的窗口指揮邏輯上自動調好尺寸,并不會physically地去調整.如果你用了諸如KDE控制臺之類的其他控制臺,用戶必須人為地去調整了.
    Borland的Turbo C是16位的編譯器,但是我目標的GNU gcc編譯器是32位的,結果產生了整型的數據類型的差異.TurboC用宏的方法處理了(但愿)更普遍的情況.沒有處理的情況會在編譯的時候報錯,用戶必須手動去修改.在用戶的頁面會被詳細介紹.
    用基于諸如 getcha, cprintf或其他的控制臺來混合基于流的功能(如 getchar, printf,其他),很可能會不工作.你也可以瀏覽usage page.

    下載并安裝TurboC
    下載源代碼
    *Most-current development code (20040218) TurboC-dev.tar.gz
    20020602 snapshot TurboC-20020602.tar.gz
    20020419 snapshot TurboC-20020419.tar.gz
    20020418 snapshot TurboC-20020418.tar.gz
    20020323 snapshot TurboC-20020323.tar.gz
    20020317 snapshot TurboC-20020317.tar.gz
    20020312 snapshot TurboC-20020312.tar.gz

    tarball里包括了一個教TurboC-source的文件夾,你可以簡單的在這個目錄下用make來編譯庫.但必須是GNU gcc或者用gmake(例如在FreeBSD或Mac下)來編譯(提示,在FreeGSD下,你要編輯makefile和注釋/反注釋開頭的若干行,你會很容易看到的),我已經檢驗了最近釋出的snapshot(不是開發者的snapshot)并在以下系統測試了程序:
    Linux Intel 'x86 (SuSE 8.0)
    Linux PowerPC (SuSE 7.3)
    FreeBSD (4.5)
    (早期的TurboC的庫好像在FreeBSD上工作的效果不怎么好,請升級到20020420的版本,并且在運行引入的程序的時候按照下面的步驟).最近釋出的snapshot只在SuSE8.2上測試過.
    把這個庫(libTurboC.a and libTurboCu.a)放在你系統放庫的地方--通常在 /usr/lib.把所有的頭文件放到它應該放的地方--通常是 /usr/include.又或者,你也可以添加它們的鏈接到這些目錄.又或者,把它們放到你喜歡的地方,然后在gcc里用參數 -L和-I來連接它們.
    在我的系統,我是這么做的.
    cd ~
    tar -xzvf TurboC-dev.tar.gz
    cd TurboC-source
    ... 編輯FreeBSD的makefile ...
    make (or gmake)
    su
    ln -s *.h /usr/include
    ln -s libTurboC.a /usr/lib
    exit
    你會發現(例如,在FreeBSD)如果你在你引入的程序力#include了TurboC的頭文件,你的編譯器會報錯:標識符鏈接太深(symbolic links being "too deep").如果是這樣的話,你可以把上邊的ln命令的參數"-s"去掉.
    另外,編譯Makefile當然會假定X-window系統的頭文件和庫;如果這個假定是錯的話,你就要你的編譯器加上參數"-L"和/或者"-I"來調整.X-window系統必須編譯全部的庫,或者你要運行你的程序,如果你要用到graphics.h的功能.如果你不打算使用這些功能,你可以通過編輯Makefile和去掉編譯器參數的"-DWITH_X"在沒有X的系統上引入和編譯你的程序.

    未來的計劃

    嗯,很明顯這種項目是沒什么前途的,它的計劃只不過是從一個古老的編譯器里引入它的代碼.然而,我還是會在我這個項目里根據需要增加一些特性的.我不會浪費精力去寫一些沒有在我Turbo C程序力出現過的功能的,但如果你自己已經寫了而又告訴了我,我是很樂意加進去的(把榮辱加給你).
    當然,很希望你能把TurboC的bug返回給我,(當然在這之前,去看看Buglist有沒有這個問題),我會盡力去改正它們的.

    為什么要用這么可愛的logo呢?

    這是一幅姐妹在談話的圖片,畫家Lynn Rothan的杰作.我試圖表達的意思是,它表現了很相似的c編譯器 Borland Turbo C和GUN gcc的關系.當然拉,lynn有他自己的意思.請參考他的網站.


    評論

    # re: 翻譯:把 Borland Turbo c 的源代碼移植到GNU gcc[未登錄]  回復  更多評論   

    2008-05-02 19:18 by haha
    兄弟,這篇文章是你自己人工翻譯,還是機器翻譯的?
    主站蜘蛛池模板: 精品国产sm捆绑最大网免费站| 日本免费A级毛一片| 国产免费的野战视频| 日韩精品一区二区亚洲AV观看| 国产免费AV片在线观看| 亚洲AV日韩精品久久久久| 国产精品免费观看调教网| 久久久无码精品亚洲日韩蜜臀浪潮| 久9热免费精品视频在线观看| 久久青草亚洲AV无码麻豆| 波多野结衣免费一区视频 | 亚洲第一页日韩专区| 菠萝菠萝蜜在线免费视频| 国产a v无码专区亚洲av| 中文字幕免费在线看线人动作大片 | 亚洲AV无码乱码在线观看性色扶| 免费国产在线精品一区| 精品国产日韩亚洲一区| AAA日本高清在线播放免费观看| 亚洲国产综合专区电影在线| 日韩在线播放全免费| 亚洲人成无码网站在线观看| 免费观看午夜在线欧差毛片| 国产精品永久免费| 久久国产亚洲高清观看| 成年女人免费v片| 一级免费黄色毛片| 亚洲免费视频网站| 成人毛片免费观看视频| 免费一级毛片在线播放视频免费观看永久| 相泽亚洲一区中文字幕| 最近免费中文字幕mv电影| 亚洲av乱码中文一区二区三区| 在线观看亚洲av每日更新| 91麻豆最新在线人成免费观看| 亚洲欧美在线x视频| 亚洲第一极品精品无码久久| 毛片免费全部免费观看| 一本到卡二卡三卡免费高 | 精品久久香蕉国产线看观看亚洲| 免费观看无遮挡www的视频|