Подтвердить что ты не робот

На 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, если это имеет значение.

4b9b3361

Ответ 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 предназначен для поиска в библиотеке, указанной при связывании