如何在bash中为Mac添加默认的Include和Library路径?

问题描述:

这不应该是一个困难的任务,但是,我不能解决这个问题几个小时,所以我在这里发布了这个问题。如何在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。 –

根据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/ 

和它的工作。

我假设软链接也应该工作。
这看起来可能是一个非常简单的解决方案,但花了好几个小时才弄清楚。