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

Почему "Лицо" терпит неудачу на льве?

Я использую make для создания большого проекта на OSX Lion. Скрипты отлично работали на OSX до Snow Leopard, но теперь он терпит неудачу.

Что происходит, так это то, что после создания определенных модулей я получаю ошибку, подобную следующей:

touch my.app/Contents/Resources
touch my.app
make[2]: write error
make[1]: *** [all] Error 1
make: *** [all] Error 1

Если я затем набираю make снова, он возобновляется с того места, где он терпит неудачу, и строит его успешно (пока он не встретит другую такую ​​ошибку). Это всегда происходит для тех же двух модулей проекта, и я не могу для жизни понять, почему.

Пожалуйста, дайте мне знать, если есть дополнительная информация, которую я могу предоставить, что было бы полезно.

Первое обновление

Здесь вывод make -d:

...
     Finished prerequisites of target file `DesktopConn.o'.
     Prerequisite `DesktopConn.cxx' is older than target `DesktopConn.o'.
    No need to remake target `DesktopConn.o'.
    Considering target file `List.o'.
     Looking for an implicit rule for `List.o'.
     Trying pattern rule with stem `List'.
     Trying implicit prerequisite `/bin/sh: line 1:  6733 Segmentation fault: 11  make all
Reaping losing child 0x102d0ae70 PID 6471 
make[1]: *** [all] Error 1
Removing child 0x102d0ae70 PID 6471 from chain.
Reaping losing child 0x10560ee20 PID 6342 
make: *** [all] Error 1
Removing child 0x10560ee20 PID 6342 from chain.

Я положил весь вывод make -d (чрезвычайно подробный) на pastebin.

Второе обновление

Я также загрузил Makefile.

3-е обновление

Я загрузил источник для make, построенный из исходного кода на моей машине. В то же время все еще не удается. Я также попытался использовать двоичный код make из Snow Leopard.

4b9b3361

Ответ 1

Попробуйте взять SEGV по номиналу. make либо разыгрывает указатель вне границ, либо пытается записать память где-то за пределы, либо пытается расширить стек за пределы размера стека процесса. Вы ничего не можете сделать о первых двух без отладки GNU make, но вы можете увеличить лимит стека. Использование bash:

ulimit -s hard

повышает мягкий предел до жесткого предела, предоставляя вам как можно больше пространства стека. Попробуйте и посмотрите, сможет ли make выполнить до конца без сбоев.

Ответ 2

llvm - это, по-моему, компилятор по умолчанию в Lion, но не в предыдущих версиях, о которых вы говорили. Бритва Occam говорит, попробуйте использовать ее:

CC=gcc make

Изменить: Нашел это, что, я думаю, связано. См. Ответ №1, 3 редактирования: здесь. Это относится к созданию Ruby, но я думаю, что основная проблема такая же. Возможно, вам понадобится загрузить другую версию GCC, если это проблема.