在mac上,默认情况下,g ++(clang)无法搜索/ usr / local / include和/ usr / local / lib

时间:2014-05-28 07:47:15

标签: xcode macos gcc clang

我在Mac上,我使用homebrew安装gmp

Kyumins-iMac:gcjlib math4tots$ g++ main.cpp -lgmp -lgmpxx
In file included from main.cpp:2:
./gcjlib.hpp:4:10: fatal error: 'gmpxx.h' file not found
#include <gmpxx.h>
         ^
1 error generated.

然后我明确告诉g++使用/usr/local/include

Kyumins-iMac:gcjlib math4tots$ g++ main.cpp -lgmp -lgmpxx -I/usr/local/include
ld: library not found for -lgmp
clang: error: linker command failed with exit code 1 (use -v to see invocation)

然后我明确告诉g++使用/usr/local/lib

Kyumins-iMac:gcjlib math4tots$ g++ main.cpp -lgmp -lgmpxx -I/usr/local/include -L/usr/local/lib
Kyumins-iMac:gcjlib math4tots$ ./a.out 
sum is -4444
absolute value is 4444

因此唯一的问题似乎是g++未能确认/usr/local

但是一直输入所有这些是很乏味的,特别是当我只是编写小型单文件程序时。

我有没有办法让g++默认承认/usr/local中的内容? homebrew用户是否采用标准方式执行此操作?


我使用的是X X 5.1.1的OS X 10.9.3,如果它是相关的。

5 个答案:

答案 0 :(得分:60)

我也使用Homebrew并且在Mac OSX Maverick 10.9.5和Xcode 6.0.1上遇到了类似的问题,但它是通过运行来解决的:

xcode-select --install

请注意,如果没有前一个答案给出的双连字符,它就无法工作。这将安装同时创建/usr/lib//usr/include/的命令行工具。我不知道为什么Homebrew在安装时不会自动检查这个,因为它确实检查了Xcode ...

如果你想确切地检查你的编译器正在查找头文件的文件夹,你可以写:

cpp -v

答案 1 :(得分:10)

尝试运行xcode-select install

至少在Mavericks上我发现如果我在没有安装命令行工具的情况下安装XCode应用程序那么这些工具是可用的,但正常的unix-ey构建不能正常工作。一个症状是/usr/local/include不在包含搜索路径上。命令行工具似乎解决了这个问题。

答案 2 :(得分:7)

解决方法是:

export C_INCLUDE_PATH=/usr/local/include
export CPLUS_INCLUDE_PATH=/usr/local/include

至少这欺骗了预处理器在这里表现:)

答案 3 :(得分:3)

我有Yosemite 10.10.5并且正在运行xcode-select --install并没有为我解决问题。该命令返回xcode-select: error: command line tools are already installed, use "Software Update" to install updates

当我运行xcode-select -p时,它显示/Applications/Xcode.app/Contents/Developer。我最终从Applications目录中删除了Xcode,导致xcode-select -p返回/Library/Developer/CommandLineTools。这个固定的编译器错误。

答案 4 :(得分:1)

那对我有帮助:

使用最新版本。 1.0.2o_1只是当前版本。

brew install openssl
ln -s /usr/local/Cellar/openssl/1.0.2o_1/include/openssl /usr/local/include/openssl
ln -s /usr/local/Cellar/openssl/1.0.2o_1/lib /usr/local/lib/openssl