關於在mingw+msys環境下,編譯SDL所出現的問題!Createprocess 和 ranlib 的相關錯誤
2008-03-25 13:09
還是先貼的圖出來,看看我遇到的錯誤:
請看這句話process_begin:CreateProcess(NULL,/bin/install -c -m 755 sdl-config d:/mingw/bin/sdl-config,...) failed. make (e=3):系統找不到指定的路徑(亂碼內容) 剛開始,發現這個問題的時候,我懷疑是我的環境的問題,在網上也有人說是環境的問題,但是經過多次的確認和測試,證明了我的環境好像沒有問題(根據我個人的判斷),但究竟是什麼問題? 在我沒有找到我環境的問題的時候,我找到了另一種解決問題的方法。不過不夠靈活,但至少可以進行下去。 ★:我的環境是根據網上衆多高手的貼子製作成功的,而且也經過安裝過別的開發包,是沒有問題的。 現在,我們分析一下,錯誤出現的原因。 首先,要知道CreateProcess是幹什麼的? 顧名思義,他是用來建立一個新的process得。他應該是windows得一個API函數,但是要在msys得仿linux命令行裏對他進行調用,但是 這裏給CreateProcess傳遞的參數則是這樣的:“/bin/install -c -m 755 sdl-config d:/mingw/bin/sdl-config”,很顯然,這個參數中"/bin/install"的這個命令用的路徑方法測試linux得方法。但是 windows得API函數能夠認識他的這樣的路徑方法嗎?很顯然,不行!!!那就要想辦法解決這個問題了。 接着,就是尋找/bin/install -c -m 755 sdl-config d:/mingw/bin/sdl-config,這個東西,是如何傳遞過去的? 免不了,要看看SDL的makefile文件了, ★:我是在SDL官方網下載的源代碼,版本是1.2.13 ①,剛開始我執行的配置命令是這樣的: configure --prefix=/mingw ②,編譯命令:make ③,安裝命令:make install 就是在執行安裝的時候出現了錯誤。 問題就出現在Makefile裏,如下: SHELL = D:/msys/bin/sh CC = gcc INCLUDE = -I./include CFLAGS = -g -O2 EXTRA_CFLAGS = -I./include -D_GNU_SOURCE=1 LDFLAGS = EXTRA_LDFLAGS = -lm -luser32 -lgdi32 -lwinmm LIBTOOL = $(SHELL) $(top_builddir)/libtool INSTALL = /bin/install -c #(Makefile的第29行) NASM = -f win32 AR = ar RANLIB = ranlib WINDRES = windres 這個INSTALL文件以後的好多地方都使用到了(凡是有安裝文件的地方),它的直就是傳遞給CreateProcess這個windows的API函數。故此,出現了問題。 最後,問題的解決方法, 可能還有其他的更好的解決方法,但是我現在僅僅找到了,這一種如果那位大俠有別的解決方法,歡迎指教. 把INSTALL = /bin/install -c 改爲INSTALL = D:/msys/1.0/bin/install -c ★:具體install命令的路徑就要看你安裝的環境而定了。 好了,就是這樣的,如此一來你就可以順利安裝了。 不過,我解決這個問題以後,有出來了一個新的問題,我將在下篇文章中說明。 ★★★:最後,有另外的解決方法,我也嘗試是可以的。 如下描述: 在安裝mingw32得時候會有一個mingw32-make.exe文件,但默認是不安裝的。 但在安裝msys得時候也有一個相同功能的make.exe文件。 如果用mingw32-make.exe就會發生上邊所述的錯誤,但是用msys得make得時候就不會出現上邊的情況。 ★★:歡迎轉載,引用請標註出處,謝謝! |