[Racket] On Cygwin. Wow.

恩,正式使用之後會有更多內容。



目前記錄折騰過程。不排除會有更多問題。



為了更好融入 Cygwin ,所以採用手動編譯。 source 包 from GitHub 。



先定義目錄,因為它放得很多,又有些重名,假設當前目錄為 clone 下來的資料夾。



/cygdrive/d/workSpace/github/racket(cloned dir)/racket/src -> 現在在這裡



mkdir build && cd build



../configure



make



make install



基本上 README (看 /cygdrive/d/workSpace/github/racket(cloned dir)/racket/src 下的 README)  寫得算詳細,



可是其中有段 make --unix ,我本機 GNU make 竟然沒有 --unix 此 flag。



可能是這個原因,導致編譯時有些宏定義沒辦法起作用,



所以我直接在 /cygdrive/d/workSpace/github/racket(cloned dir)/racket/src/racket/src 目錄的 .c 檔做 #define 的動作。



因為他寫的 Makefile 我看不太懂,不太敢動他 : P



首先是出現 fatal error libffi.xxxx 沒有安裝,找不到庫等等 ( 問題出在 forign 資料夾編譯時 )



    To run `racket/draw' and `racket/gui' programs, you will need

    Cairo, Pango, and GTk install.  These libraries are not

    distributed with Racket, and they are not needed for compilation,

    except for building documentation that uses `racket/draw'. More

    info about required libs is available at

    http://docs.racket-lang.org/draw/libs.html and

    http://docs.racket-lang.org/gui/libs.html.



    The content of the "foreign" subdirectory may require GNU `make'

    if no installed "libffi" is detected.  If the build fails with

    another variant of `make', please try using GNU `make'.



基本上把它說的 Cairo, Pango, and GTk 三個庫用 Cygwin 的套件管理 lib 找齊,即可排除。



再來就是硬上了。看哪不過改哪邊。非常想唱忐忑。折騰兩個檔案就過了。



$ pwd

[repo dir]/racket/src/racket/src



$ vim file.c

#  define DIRENT_NO_NAMLEN//I added it on line 5486



$ vim string.c

# define SCHEME_PLATFORM_LIBRARY_SUBPATH "i386-cygwin" //I added it on 55

# https://stuff.mit.edu/afs/athena/system/i386_deb50/os/usr/include/plt/sconfig.h

# i386-cygwin 從這裡看來的宏定義,基本上可以說是亂搞。



$ cd ../../../.. && pwd

[repo dir]



$ mkdir build && cd build && ../configure && make && make install



鼓搗完之後,build 資夾 racketcgc 和 racket3m 可以用,不過就是不知道怎麼離開。



都 ctrl-z + kill % 結束它 ( 好慘 )。基本上就先這樣了。



然後輸入介面不友善,所以加個 rlwrap 放在前面。



$ rlwrap racket3m.exe # 注意 racket3m 的路徑



完美。



Thu Feb 23 01:25:39 CST 2017 update



(exit) ; 就可以離開啦 冏rz



留言

這個網誌中的熱門文章

[Antergos] disable touchpad

[Editor] 入坑 Atom => Markdown 轉 PDF