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

时间:2016-11-17 15:03:04

标签: c bash gcc osx-mavericks

这不应该是一项艰巨的任务,但是,我几个小时都无法解决问题,所以我在这里发布了这个问题。

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

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

尝试:

我在路径〜/ Applications中下载并安装了cfitsio。 (不是/申请btw)。
然后安装命令是:

sudo ./configure  
sudo make  
sudo make install 

现在,让我们说我有一个程序example.c 编译:{{1​​}}
不起作用。

然而,

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

作品

现在我不想一直使用标志-I和-L。我怎么能这样做?

我用以下几行更新了〜/ .bash_profile:

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

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

如果我给它们的路径提供-I和-L标志就可以了。

我们是否可以在不使用-I和-L命令的情况下执行上述命令的工作?

注意:
我甚至尝试从/ usr / local目录安装cfitsio 我从/ usr / local / cfitsio安装但是我不得不在这些新位置使用-I和-L命令。
我真的很沮丧。

非常感谢帮助和建议!感谢。

更新

我尝试使用DYLD,并在bash_profile中添加了这些行:

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

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

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"

1 个答案:

答案 0 :(得分: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/  

它有效。

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