2014-10-27 3 views
0

Я получаю ошибку libfoo.so: file not recognized: File truncated от make -j 8. Когда я удалить файл и переделать, все работает:"libvw.so: файл не распознан: файл усечен" и "сделать -j 8"

$ make clean 
$ make -j 8 
... 
libvw.so: file not recognized: File truncated 
make: *** [all] Error 2 
$ mv libvw.so libvw.so- 
$ make -j 8 
success 
$ cmp libvw.so libvw.so- 

т.е. libvw.so было хорошо.

с -j 8 он работает сразу:

$ make clean 
$ make 
success 

Итак, как же я использую -j 8 с разделяемыми библиотеками?

(В этом проекте используется GNU Make, поэтому решение, специфичное для GNU, отлично).

ответ

1

Скорее всего, вам не хватает зависимости в одном из ваших правил makefile, и ошибка возникает из-за того, что libw.so все еще строится в то время, когда исполняемый файл пытается связать с ним.

Но обратите внимание также, что существуют некоторые версии make, которые имеют ошибки с зависимостями параллельно. Убедитесь, что вы используете дистрибутив, который исправляет такие вещи.

Смежные вопросы