Я пытаюсь собрать Stepmania (https://github.com/stepmania/stepmania @ master[a09e3477 ]) на OSX 10.10 с Xcode 6.0.1. Другие успешно сделали это на OSX 10.10, хотя из-за даты слияния это было бы должен был быть в более ранней версии инструментов командной строки Xcode, чем были выпущены вчера, которые я использую.
В конце сборки Xcode шаг связывания завершается неудачей:
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang++ -arch i386 -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDK/MacOSX10. 9.sdk -L/Users/nilbus/stepmania -L/Users/nilbus/stepmania/Xcode/build/Debug -L/Users/nilbus/stepmania/Xcode/Libraries -L/Users/nilbus/stepmania/Xcode/.. /extern/mad-0.15.1b/msvc++/Release -L/Users/nilbus/stepmania/Xcode/ffmpeg -L/Users/nilbus/stepmania/Xcode/ffmpeg/lib -F/Users/nilbus/stepmania -F/Applications /Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDK/MacOSX10.9.sdk/System/Library/Frameworks/Accelerate.framework/Versions/A/Frameworks -filelist/Users/nilbus/stepmania/Xcode /build/stepmania.build/Debug/stepmania.build/Objects-normal/i386/StepMania\ (Debug).LinkFileList -mmacosx-version-min=10.6 -dead_strip -no_dead_strip_inits_and_terms -lbz2 -fobjc-link-runtime -framework Ускорение - framework Cocoa -framework Carbon -framework IOKit -framework QuickTime -framework OpenGL -framework CoreFoundation -framework AudioToolbox -framework AudioUnit -framework CoreAudio -framework vecLib -logg_link -ltheora_link -lvorbis_link -llua-5.1-sm5 -ltomcrypt-sm5 -ltommath-sm5 -lz_link -lmad-sm5 -lpng-1.5.1 -sm5 -lglew-sm5 -lpcre-sm5 -ljpeg-sm5 -lavcodec -lavdevice -lavfilter -lavformat -lavutil -lswresample -lswscale -Xlinker -dependency_info -Xlinker /Users/nilbus/stepmania/Xcode/build/stepmania.build/Debug /stepmania.build/Objects-normal/i386/StepMania\ (отладка)_dependency_info.dat -o /Users/nilbus/stepmania/StepMania\ (отладка).app/Contents/MacOS/StepMania\ (отладка)
с этой ошибкой:
ld: can't open file, errno=24 file '/Users/nilbus/stepmania/Xcode/build/stepmania.build/Debug/stepmania.build/Objects-normal/i386/Command.o' for architecture i386
clang: error: linker command failed with exit code 1 (use -v to see invocation)
Иногда я также получаю эту ошибку:
Bus error: 10
Обратите внимание, что связываемый файл (в данном случае Command.o) не является детерминированным, а всегда находится в пределах 5 строк от одной и той же области (около 250-й строки) списка в stepmania/Xcode/build/stepmania.build/Debug/stepmania.build/Objects-normal/i386/StepMania (Debug).LinkFileList
из 400 связываемых файлов.
Согласно /usr/include/sys/errno.h, 24 – это слишком много открытых файлов (в процессе, а не в масштабе всей системы, что равно 23).
Ограничение может быть установлено для оболочки и ее дочерних элементов с помощью ulimit -n
. Увеличить можно только рутом. Итак, как корень:
$ <long clang++ command from above>
ld: can't open file, errno=24 file '/Users/nilbus/stepmania/Xcode/build/stepmania.build/Debug/stepmania.build/Objects-normal/i386/Command.o' for architecture i386
clang: error: linker command failed with exit code 1 (use -v to see invocation)
$ ulimit -n
2560
$ ulimit -n 10000
$ ulimit -n
10000
$ <long clang++ command from above>
ld: can't open file, errno=24 file '/Users/nilbus/stepmania/Xcode/build/stepmania.build/Debug/stepmania.build/Objects-normal/i386/Command.o' for architecture i386
clang: error: linker command failed with exit code 1 (use -v to see invocation)
Настройка ulimit должна применяться к дочерним процессам, и это, безусловно, относится к подоболочкам. Однако увеличение предела файлового дескриптора не влияет на сообщаемое
Делаю ли я какие-то неверные предположения? Что я могу сделать, чтобы выяснить, что может быть фактическим источником этой проблемы?
Чтобы попытаться воспроизвести:
- git clone https://github.com/stepmania/stepmania @ master[a09e3477]
- Откройте stepmania/Xcode как проект Xcode
- Построить проект