2011-08-02 23 views
3

當我想運行make產生它總是使用Sun make位於 在/usr/local/bin/make而不是GNU使可在/usr/sfw/bin/gmake找到一些可執行文件。選擇不同的可執行文件在bash

如何告訴操作系統使用GNU make而不是Sun的?我需要以某種方式覆蓋路徑嗎?

+2

使用2個單獨命名的程序,我很困惑爲什麼有一個問題。如果你在命令行鍵入'make',爲什麼它會運行'gmake'?你是說你輸入了'gmake'並運行'make'? – shellter

回答

5

對於名稱相同的兩個可執行文件,請在PATH變量中重新排序路徑,因爲將使用第一個匹配項。

否則,您~/.profile~/.bashrc文件中定義的別名:

alias make="/usr/sfw/bin/gmake" 

或函數:

make() { /usr/sfw/bin/gmake "[email protected]"; } 

。注意,別名在交互模式下才能正常工作。腳本不會看到它們。在這種情況下使用函數。

2

可以鏈接/ usr/sfw/bin中/只要所在的目錄鏈接它使用gmake到/ usr/bin中的例子是之前在/ usr/local/bin目錄在PATH變量 從而

cd /usr/bin 
    ln -s /usr/sfw/bin/gmake make 

只要確定路徑中沒有製作完成即可。 否則你總是可以打電話給gmake而不是make使用gnu-make併爲sun-version-make留下make。

否則,你可以使用別名作爲在過去後

+1

把額外的東西放到'/ usr/bin'中並不是一個好主意 - 把這個區域留給包管理,有一天可能會選擇在那裏安裝一個'make'。 – reinierpost

1

如果手動運行make命令,然後只需鍵入gmake而不是make。它將運行GNU版本(假設您的PATH)變量設置正確。

如果有一個IDE或其他工具調用make,那麼您需要告訴它使用gmake而不是製作,取決於您使用的是哪種工具。

+0

另一種可能性是:如果你有一個遞歸makefile,稍後調用「make」,即使你用「gmake」啓動它,然後修改makefile以將其中的硬編碼「make」替換爲「$(MAKE) 」。 – slowdog

相關問題