如何在 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/
它奏效了。
我认为软链接也应该有效。
这可能看起来是一个非常简单的解决方案,但我花了几个小时才弄明白。
这应该不是什么难事,但是,我几个小时都解决不了这个问题,所以我把问题贴在这里。
尝试过的链接如下:
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/
它奏效了。
我认为软链接也应该有效。
这可能看起来是一个非常简单的解决方案,但我花了几个小时才弄明白。