Mingw下編譯安裝 SDL的問題

關於在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得時候就不會出現上邊的情況。
★★:歡迎轉載,引用請標註出處,謝謝!
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章