[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
留言
張貼留言