如何在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
根据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/
和它的工作。
我假设软链接也应该工作。
这看起来可能是一个非常简单的解决方案,但花了好几个小时才弄清楚。
您是否使用XCode或其他版本的'gcc'? macOS上的环境变量是DYLD_LIBRARY_PATH。你可以在'/ usr/local/lib'中安装指向已安装库的sum链接吗?你可以在'/ usr/local/include'中为头文件做类似的事情,除非它可能是你安装cfitsio的目录的链接。 –
您可以使用make或cmake或pkg-config [如果您使用brew安装cfitsio](https://heasarc.gsfc.nasa.gov/fitsio/fitsio_macosx.html)。您需要了解您的项目需要进行配置才能编译。因此,我一直需要-I和-L和-l。不要使用环境变量来做到这一点。 – Stargateur
@Stargateur,我没有使用自制软件安装cfitsio,只是使用官方源码包中的make install。 –