bjam編譯boost失敗及原因
(轉載請注明來源于金慶的專欄)
用bjam在各種環境下編譯Boost , 沒有十次也有八次了,
但是前兩天在一臺XP上編譯時,竟然失敗。
查看輸出,竟然是在創建目錄時失敗。信息如下:
MkDir1 stage
mkdir "stage"
...failed MkDir1 stage...
...skipped stage\lib for lack of stage...
因為是用mingw的gcc編譯,開始時以為是mingw的環境有問題,
實際結果是找錯了方向。
mingw已經有過成功先例,而且新裝一臺機器后編譯也成功了。
Google類似錯誤也沒有什么線索。
變通方法是用bjam -n打印出所有命令到一個批處理文件,
然后執行批處理來編譯。
用該方法創建了所有的目錄,使MkDir1規則通過了,
但是下一個錯誤是common.copy規則,看來所有的命令都會出錯。
但是不甘心用這個方法,不能向錯誤屈服。
最后還是在bjam的源代碼中找到了線索。
原來一條規則會建立一個命令,
然后在NT上會在用戶的Temp目錄下創建一個臨時bat文件,
運行該bat文件執行命令。
使用bjam -d2或-d3,-d4可以打印出1到2、3、4級的調試信息,
在4級信息內可以看到創建并運行的臨時批處理。
因為該機器在很早以前被我設置權限,禁止了在Temp運行程序的權力,
所以產生了這個錯誤。
(禁止Temp運行程序對病毒木馬是否有點作用呢?
還是去掉限制好了,因為有些程序確實會用到。)
放開權限就好了。
(轉載請注明來源于金慶的專欄)
用bjam在各種環境下編譯Boost , 沒有十次也有八次了,
但是前兩天在一臺XP上編譯時,竟然失敗。
查看輸出,竟然是在創建目錄時失敗。信息如下:
MkDir1 stage
mkdir "stage"
...failed MkDir1 stage...
...skipped stage\lib for lack of stage...
因為是用mingw的gcc編譯,開始時以為是mingw的環境有問題,
實際結果是找錯了方向。
mingw已經有過成功先例,而且新裝一臺機器后編譯也成功了。
Google類似錯誤也沒有什么線索。
變通方法是用bjam -n打印出所有命令到一個批處理文件,
然后執行批處理來編譯。
用該方法創建了所有的目錄,使MkDir1規則通過了,
但是下一個錯誤是common.copy規則,看來所有的命令都會出錯。
但是不甘心用這個方法,不能向錯誤屈服。
最后還是在bjam的源代碼中找到了線索。
原來一條規則會建立一個命令,
然后在NT上會在用戶的Temp目錄下創建一個臨時bat文件,
運行該bat文件執行命令。
使用bjam -d2或-d3,-d4可以打印出1到2、3、4級的調試信息,
在4級信息內可以看到創建并運行的臨時批處理。
因為該機器在很早以前被我設置權限,禁止了在Temp運行程序的權力,
所以產生了這個錯誤。
(禁止Temp運行程序對病毒木馬是否有點作用呢?
還是去掉限制好了,因為有些程序確實會用到。)
放開權限就好了。