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

mat*_*ots 41 macos xcode 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.
Run Code Online (Sandbox Code Playgroud)

所以我明确告诉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)
Run Code Online (Sandbox Code Playgroud)

所以我明确告诉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
Run Code Online (Sandbox Code Playgroud)

所以唯一的问题似乎是g++没有承认/usr/local.

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

有没有办法让我默认g++承认这些东西/usr/localhomebrew用户是否有标准方式执行此操作?


我在OS X 10.9.3上使用Xcode 5.1.1以防它相关.

小智 62

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

xcode-select --install

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

如果要确切查看编译器查找头文件的文件夹,可以编写:

cpp -v


Rus*_*wen 10

试试跑步 xcode-select install

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


小智 8

解决方法是:

export C_INCLUDE_PATH=/usr/local/include
export CPLUS_INCLUDE_PATH=/usr/local/include
Run Code Online (Sandbox Code Playgroud)

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