这不应该是一项艰巨的任务,但是,我几个小时都无法解决问题,所以我在这里发布了这个问题。
尝试过的链接如下:
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"
答案 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/
它有效。
我认为软链接也应该有效 这可能看起来是一个非常简单的解决方案,但我花了几个小时才弄明白。