GCC - 添加库

时间:2017-02-02 20:45:39

标签: c gcc

我想使用文件gmp.h中的头文件mpfr.h/opt/local/include中的函数。

但是当我使用gcc运行-v时,所有搜索路径都类似于/Application/Xcode.app/Contents/etc

我尝试将LD_LIBRARY_PATH="/opt/local/include"添加到.bash_profile,但它不起作用。编译器会告诉我'gmp.h' file not foundUndefined symbols for architecture x86_64

我该怎么办?

1 个答案:

答案 0 :(得分:1)

将评论转换为答案。

您需要添加-I/opt/local/include来编译命令(以指定标题的位置)和-L/opt/local/lib以及-lgmp-lmpfr(可能以相反的顺序 - MPFR之前GMP)链接命令。

  

有效!你介意解释一下这背后的逻辑吗?例如,如果我需要另一个头文件header.h,我应该如何包含它?

您将其包含在#include "header.h"中。您使用-I/directory/containing/header编译代码以查找标头。您可以使用libheader.alibheader.dylib指定库(-L/directory/containing/lib-lheader,因为您似乎位于macOS上) - 或其他任何合适的位置。

  • -I告诉预处理器在命名目录中查找头文件,因此它会查找/directory/containing/header/header.h,例如。

  • -L告诉链接器在哪里找到库(因此它会查找/directory/containing/lib/libheader.dylib等)。

  • -lheader告诉链接器查找库的libheader.alibheader.dylib(或本地等价物)。

除了使用.dylib vs .so vs .dll vs ...(和.a vs .lib vs ...)之外,相同的原则适用于其他系统也是如此。

这可能是重复的。