GCC-添加库
我想使用头文件GCC-添加库,c,gcc,C,Gcc,我想使用头文件gmp.h和mpfr.h中的函数,它们位于文件/opt/local/include中 但是当我使用-v运行gcc时,所有的搜索路径都类似于/Application/Xcode.app/Contents/etc 我已尝试将LD\u LIBRARY\u PATH=“/opt/local/include”添加到.bash\u profile中,但不起作用。编译器要么告诉我未找到'gmp.h'文件,要么告诉我架构x86\u 64的未定义符号 我该怎么办?将评论转换为答案 您需要添加-I/o
gmp.h
和mpfr.h
中的函数,它们位于文件/opt/local/include
中
但是当我使用-v
运行gcc
时,所有的搜索路径都类似于/Application/Xcode.app/Contents/etc
我已尝试将LD\u LIBRARY\u PATH=“/opt/local/include”
添加到.bash\u profile
中,但不起作用。编译器要么告诉我未找到'gmp.h'文件
,要么告诉我架构x86\u 64的未定义符号
我该怎么办?将评论转换为答案
您需要添加-I/opt/local/include
来编译命令(指定标题的位置)和-L/opt/local/lib
和-lgmp
和-lmpfr
(可能以相反顺序-GMP之前的MPFR)来链接命令
真管用!你能解释一下这背后的逻辑吗?例如,如果我需要另一个头文件header.h
,我应该如何包含它
您可以将其包含在#包含“header.h”
中。您可以使用-I/directory/containing/header
编译代码以查找头。您也可以使用-L/directory/containing/lib
和-lheader
-或任何适当的工具来指定库(libheader.a
或libheader.dylib
,因为您似乎在macOS上)的位置
-I
告诉预处理器在指定目录中查找头文件,因此它会查找/directory/containing/header/header.h
-L
告诉链接器在哪里可以找到库(因此它会查找/directory/containing/lib/libheader.dylib
等)
-lheader
告诉链接器查找库的libheader.a
或libheader.dylib
(或本地等效项)
除了使用.dylib
vs.so
vs.dll
vs…(和.a
vs.lib
vs…)之外,同样的原则也适用于其他系统
这可能是重复的。LD\u LIBRARY\u路径不适用于包含文件。好的,那么正确的方法是什么?我浏览的每一页似乎都告诉我一件不同的事情。我还尝试添加C_INCLUDE_路径,但它不起作用。您需要添加-I/opt/local/INCLUDE
来编译命令(指定标题的位置)和-L/opt/local/lib
和-lgmp
和-lmpfr
(可能与GMP之前的MPFR顺序相反)来链接命令。这很有效!!!非常感谢你。你能解释一下这背后的逻辑吗?例如,如果我需要另一个头文件header.h,我应该如何包含它?您可以使用#include“header.h”
包含它。您可以使用-I/directory/containing/header
编译代码以查找头。您也可以使用-L/directory/containing/lib
和-lheader
-或任何适当的工具来指定库(libheader.a
或libheader.dylib
,因为您似乎在macOS上)的位置。-I
告诉预处理器在指定目录中查找头文件(例如,它查找/directory/containing/header/header.h
)。-L
告诉链接器在哪里可以找到库(因此它会查找/directory/containing/lib/libheader.dylib
等)。