Невозможно скомпилировать программы на C++ в MacOS [дубликат] ⇐ C++
-
Anonymous
Невозможно скомпилировать программы на C++ в MacOS [дубликат]
Я не уверен, что произошло, вчера потратил много времени на компиляцию проектов из исходного кода и их установку, чтобы попытаться заставить какое-то программное обеспечение работать, последний проект, который я видел, мой ./configure потерпел неудачу, потому что Я не мог запустить программу на C++. Итак, я думаю, что в какой-то момент один из моих запусков sudo make install, возможно, испортил мои системные библиотеки?
Я могу скомпилировать минимальную программу на C++, но получаю ошибку, связанную с rpath для libc++:
% cat test.cpp int main(){} % g++ test.cpp % ./a.out dyld[4441]: библиотека не загружена: @rpath/libc++.1.dylib Ссылка: /Users/my_user/a.out. Причина: LC_RPATH не найден. zsh: прервать ./a.out Совершенно не понимаю, что здесь происходит. У меня есть библиотеки libc++:
% ls /usr/local/lib/libc++* /usr/local/lib/libc++.1.0.dylib /usr/local/lib/libc++.a /usr/local/lib/libc++abi.1.0.dylib /usr/local/lib/libc++abi.a /usr/local/lib/libc++experimental.a /usr/local/lib/libc++.1.dylib /usr/local/lib/libc++.dylib /usr/local/lib/libc++abi.1.dylib /usr/local/lib/libc++abi.dylib И если я вручную задаю путь, это работает:
% g++ test.cpp -o a.out -Wl,-rpath,/usr/local/lib % ./a.out Но мне бы очень хотелось просто вернуться к тому, чтобы мой компилятор мог найти libc++ без моего явного указания ему проверять /usr/local/lib
До сих пор я пробовал обновить MacOS и переустановить инструменты командной строки XCode, но ничего не помогло.
Есть идеи, что происходит и как это исправить?
Обновление: проблема частично решена.
Похоже, возникла проблема с моим dyld, он никогда не выполняет поиск в библиотеках по умолчанию. Если я вручную установил export DYLD_FALLBACK_LIBRARY_PATH=$HOME/lib:/usr/local/lib:/lib:/usr/lib, теперь он ищет пути по умолчанию. Очень странное поведение. Люди мгновенно отмечают каждый вопрос как дубликат, хотя даже не понимают, что вопрос делает stackoverflow довольно бесполезным, кстати.
Я не уверен, что произошло, вчера потратил много времени на компиляцию проектов из исходного кода и их установку, чтобы попытаться заставить какое-то программное обеспечение работать, последний проект, который я видел, мой ./configure потерпел неудачу, потому что Я не мог запустить программу на C++. Итак, я думаю, что в какой-то момент один из моих запусков sudo make install, возможно, испортил мои системные библиотеки?
Я могу скомпилировать минимальную программу на C++, но получаю ошибку, связанную с rpath для libc++:
% cat test.cpp int main(){} % g++ test.cpp % ./a.out dyld[4441]: библиотека не загружена: @rpath/libc++.1.dylib Ссылка: /Users/my_user/a.out. Причина: LC_RPATH не найден. zsh: прервать ./a.out Совершенно не понимаю, что здесь происходит. У меня есть библиотеки libc++:
% ls /usr/local/lib/libc++* /usr/local/lib/libc++.1.0.dylib /usr/local/lib/libc++.a /usr/local/lib/libc++abi.1.0.dylib /usr/local/lib/libc++abi.a /usr/local/lib/libc++experimental.a /usr/local/lib/libc++.1.dylib /usr/local/lib/libc++.dylib /usr/local/lib/libc++abi.1.dylib /usr/local/lib/libc++abi.dylib И если я вручную задаю путь, это работает:
% g++ test.cpp -o a.out -Wl,-rpath,/usr/local/lib % ./a.out Но мне бы очень хотелось просто вернуться к тому, чтобы мой компилятор мог найти libc++ без моего явного указания ему проверять /usr/local/lib
До сих пор я пробовал обновить MacOS и переустановить инструменты командной строки XCode, но ничего не помогло.
Есть идеи, что происходит и как это исправить?
Обновление: проблема частично решена.
Похоже, возникла проблема с моим dyld, он никогда не выполняет поиск в библиотеках по умолчанию. Если я вручную установил export DYLD_FALLBACK_LIBRARY_PATH=$HOME/lib:/usr/local/lib:/lib:/usr/lib, теперь он ищет пути по умолчанию. Очень странное поведение. Люди мгновенно отмечают каждый вопрос как дубликат, хотя даже не понимают, что вопрос делает stackoverflow довольно бесполезным, кстати.
Мобильная версия