如何在 bash 的 Macos 中为 gcc 添加默认包含和库路径?

How to add default Include and Library path for gcc in Macos for bash?

这应该不是什么难事,但是,我几个小时都解决不了这个问题,所以我把问题贴在这里。

尝试过的链接如下:
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

http://www.cprogramming.com/tutorial/shared-libraries-linux-gcc.html

如何为 gcc 编译器添加 cfitsio 库的 include 和 lib 路径?

尝试:

我在路径 ~/Applications 中下载并安装了 cfitsio。 (顺便说一句,不是 /Applications)。
那么安装命令为:

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"

检查 运行ning 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"

但是,如果我 运行 这些命令它们 return 空输出,我无法将 dyld 库路径设置为这些路径。

echo $LD_LIBRARY_PATH  
echo $DYLD_LIBRARY_PATH

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

它奏效了。

我认为软链接也应该有效。
这可能看起来是一个非常简单的解决方案,但我花了几个小时才弄明白。