我在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,如果它是相关的。
答案 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