2016-11-17 626 views
0

這不應該是一個困難的任務,但是,我不能解決這個問題幾個小時,所以我在這裏發佈了這個問題。如何在bash中爲Mac添加默認的Include和Library路徑?

的嘗試鏈接如下:
How to include needed C library using gcc?
How to add a default include path for gcc in linux?
http://gcc.gnu.org/onlinedocs/gcc-4.8.1/gcc/Environment-Variables.html#Environment-Variables
how gcc automatically know to include glib library
How to compile gcc with shared library?
http://www.cprogramming.com/tutorial/shared-libraries-linux-gcc.html

我如何可以添加包括和lib路徑cfitsio庫gcc編譯器?

嘗試:

我在路徑〜/應用下載和安裝cfitsio。 (NOT /應用程序btw)。
然後安裝的命令是:

sudo ./configure 
sudo make 
sudo make install 

現在,讓我們說我有一個程序example.c。
編譯:gcc -Wall -O3 example.c -lm -lcfitsio
不起作用。

然而,

gcc -Wall -O3 -o example example.c -I /Users/poudel/Applications/cfitsio/include -L /Users/poudel/Applications/cfitsio/lib -lm -lcfitsio 

作品

現在我不想用標誌-I和-L所有的時間。我該怎麼做?

我更新了我的〜/ .bash_profile中有下面幾行:

export PATH=$PATH:~/Applications/cfitsio/bin 
export LD_LIBRARY_PATH="~/Applications/cfitsio:$LD_LIBRARY_PATH" 
export LD_LIBRARY_PATH="~/Applications/cfitsio/lib:$LD_LIBRARY_PATH" 
export LD_LIBRARY_PATH="~/Applications/cfitsio/lib/pkgconfig:$LD_LIBRARY_PATH" 
export LD_LIBRARY_PATH="~/Applications/cfitsio/zlib:$LD_LIBRARY_PATH" 

要檢查的路徑包括我用運行source ~/.bash_profile後:

echo $LD_LIBRARY_PATH 

這正確顯示添加路徑。

我添加的路徑,但是,這並不工作:

gcc -Wall -O3 -o example example.c -lm -lcfitsio

,如果我給-I和-L標誌與它們的路徑它的工作原理。

我們可以做的事情,上述命令工作,而不使用-I和-L命令所有的時間?

注意:
我甚至嘗試從/ usr/local目錄安裝cfitsio。
我是從/ usr/local/cfitsio安裝的,但我不得不在這些新位置上使用-I和-L命令。
我真的很沮喪。

幫助和建議將不勝感激!謝謝。

更新:

我試圖用dyld的替代和補充中的.bash_profile這些行:

export PATH="$(pwd):~/Applications/cfitsio/bin:$PATH" 
export PATH="$(pwd):~/Applications/cfitsio/include:$PATH" # fitsio.h is here 
export DYLD_LIBRARY_PATH="~/Applications/cfitsio/lib:$DYLD_LIBRARY_PATH" 
export DYLD_LIBRARY_PATH="~/Applications/cfitsio/zlib:$DYLD_LIBRARY_PATH" 

但是,如果我運行這些命令他們返回空輸出,我無法設置dyld的庫路徑這些路徑。

echo $LD_LIBRARY_PATH 
echo $DYLD_LIBRARY_PATH 
+0

您是否使用XCode或其他版本的'gcc'? macOS上的環境變量是DYLD_LIBRARY_PATH。你可以在'/ usr/local/lib'中安裝指向已安裝庫的sum鏈接嗎?你可以在'/ usr/local/include'中爲頭文件做類似的事情,除非它可能是你安裝cfitsio的目錄的鏈接。 –

+0

您可以使用make或cmake或pkg-config [如果您使用brew安裝cfitsio](https://heasarc.gsfc.nasa.gov/fitsio/fitsio_macosx.html)。您需要了解您的項目需要進行配置才能編譯。因此,我一直需要-I和-L和-l。不要使用環境變量來做到這一點。 – Stargateur

+0

@Stargateur,我沒有使用自制軟件安裝cfitsio,只是使用官方源碼包中的make install。 –

回答

0

根據Jonathan Leffler的建議,我找到了解決辦法。
我創建了軟鏈接,它工作。

sudo ln -s ~/Applications/cfitsio/lib/libcfitsio.a /usr/local/lib/libcfitsio.a 

sudo ln -s ~/Applications/cfitsio/include/*.h /usr/local/include/ 

其實,我會將所有的頭文件從

~/Applications/cfitsio/include 

/usr/local/include/ 

和它的工作。

我假設軟鏈接也應該工作。
這看起來可能是一個非常簡單的解決方案,但花了好幾個小時才弄清楚。