На mac, g++ (clang) не удается выполнить поиск /usr/local/include и/usr/local/lib по умолчанию
Я нахожусь на 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
пользователей сделать это?
Я нахожусь в OS X 10.9.3 с Xcode 5.1.1, если это имеет значение.
Ответы
Ответ 1
Я также использую Homebrew и имею аналогичную проблему в Mac OSX Maverick 10.9.5 и Xcode 6.0.1, но он был разрешен путем запуска:
xcode-select --install
Обратите внимание, что это не работает без двойных дефисов, указанных в предыдущем ответе. Это устанавливает инструменты командной строки, которые также создают /usr/lib/
и /usr/include/
. Я не знаю, почему Homebrew автоматически не проверяет это при установке, так как он проверяет Xcode...
Если вы хотите точно проверить, какие папки ищет ваш компилятор для файлов заголовков, вы можете написать:
cpp -v
Ответ 2
Попробуйте запустить xcode-select install
По крайней мере, на Mavericks, который я обнаружил, если я устанавливаю приложение Xcode без установки инструментов командной строки, тогда инструменты вроде бы доступны, но обычные сборки unix-ey не работают правильно. Одним из симптомов является то, что /usr/local/include
нет в пути поиска включения. Инструменты командной строки, похоже, решают эту проблему.
Ответ 3
Обходной путь:
export C_INCLUDE_PATH=/usr/local/include
export CPLUS_INCLUDE_PATH=/usr/local/include
По крайней мере, это привело к тому, что препроцессор должен был вести себя здесь:)
Ответ 4
У меня есть 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
. Я закончил удаление Xcode из каталога Applications, в результате чего xcode-select -p
вернул /Library/Developer/CommandLineTools
. Эта фиксированная ошибка компилятора для меня.
Ответ 5
Это было полезно для меня:
Используйте последнюю версию. 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
Ответ 6
$ sudo rm -rf Applications/Xcode.app
работал у меня в 10.12.6.
Ответ 7
Если вам нужно решение, предназначенное только для компиляции и запуска, как мне нужно, вы можете использовать
gcc file.c \
-I /usr/local/opt/openssl/include \
-L /usr/local/opt/openssl/lib -lcrypto
-I должен выполнять инкрементную ссылку
-L предназначен для поиска в библиотеке, указанной при связывании