Компиляция VLC2.0 с Intel Compiler - недопустимое использование __builtin_va_arg_pack - PullRequest
2 голосов
/ 27 марта 2012

Я пытаюсь скомпилировать VLC2.0 в Ubuntu 11.10, и я озадачен этой ошибкой. Я уже успешно скомпилировал все зависимости в contrib /, используя последний набор компиляторов Intel. Тем не менее, я получаю сообщение об ошибке при компиляции posix / filesystem.c

Сконфигурированный VLC с: -

../configure --host="x86_64-linux-gnu" --build="x86_64-linux-gnu" --enable-shared --enable-gpl --enable-version3 --enable-nonfree --enable-gnutls --enable-libass --enable-libbluray --enable-libcdio --enable-libdirac --enable-libfaac --enable-libfreetype --enable-libmp3lame --enable-libopenjpeg --enable-libpulse --enable-librtmp --enable-libschroedinger --enable-libspeex --enable-libtheora --enable-libvo-aacenc --enable-libvorbis --enable-libx264 --enable-libxvid --enable-openssl --enable-openal

Я отредактировал некоторые флаги в make-файле; соответствующие флаги теперь:

CC = icc -std=gnu99
CFLAGS = -O3 -ipo -I/usr/local/src/vlc-2.0.0/contrib/x86_64-linux-gnu/include -Wall -Wextra -Wsign-compare -Wpointer-arith -Wbad-function-cast -Wwrite-strings -Wmissing-prototypes -Wvolatile-register-var -Werror-implicit-function-declaration -pipe -fvisibility=hidden  -funroll-loops -fomit-frame-pointer -finline -finline-limit=1000
CPP = icc -E
CPPFLAGS = -I$(top_srcdir)/include -I$(top_builddir)/include  -I/usr/local/src/vlc-2.0.0/contrib/x86_64-linux-gnu/include
CXX = icpc
CXXCPP = icpc -E
CXXFLAGS = -O3 -std=gnu99 -xHost -I/usr/local/src/vlc-2.0.0/contrib/x86_64-linux-gnu/include -Wall -Wextra -Wsign-compare -Wpointer-arith -Wvolatile-register-var -fvisibility=hidden  -funroll-loops -fomit-frame-pointer

На этапе make я получаю эту ошибку:

CC     posix/filesystem.lo
../../src/posix/filesystem.c(300): warning #589: transfer of control bypasses initialization of:
            variable "ln" (declared at line 302)
          goto error;
          ^

/usr/include/bits/fcntl2.h(44): error #18015: invalid use of '__builtin_va_arg_pack_len'
/usr/include/bits/fcntl2.h(57): error #18015: invalid use of '__builtin_va_arg_pack_len'
/usr/include/bits/fcntl2.h(60): error #18015: invalid use of '__builtin_va_arg_pack'
/usr/include/bits/fcntl2.h(120): error #18015: invalid use of '__builtin_va_arg_pack_len'
/usr/include/bits/fcntl2.h(133): error #18015: invalid use of '__builtin_va_arg_pack_len'
/usr/include/bits/fcntl2.h(136): error #18015: invalid use of '__builtin_va_arg_pack'
compilation aborted for ../../src/posix/filesystem.c (code 1)

Посмотрев в Интернете, я увидел пару почтовых списков, в которых упоминались флаги оптимизации, вызывающие эту ошибку с gcc, в частности флаги, связанные с встраиванием, поэтому я добавил -ipo -finline -finline-limit=1000 в CFLAGS. Это, похоже, не решает проблему.

Может кто-нибудь помочь мне решить эту проблему ?? Я попытался выяснить, какая именно команда компиляции использовалась, чтобы скомпилировать файл systemystem.lo вручную, но я не могу найти способ получить make, чтобы напечатать точную используемую команду, даже с make -d. Мне удалось скомпилировать filesystem.c, но он сделал исполняемый 64-битный ELF, а не объектный файл libtool ...

Любая помощь высоко ценится!

пс. Если кто-то еще находится здесь, потому что он хочет попробовать скомпилировать VLC2 с помощью icc, у меня были проблемы с musepack и libvpx, но несколько исправлений Makefile решили это. Я был бы рад поделиться своими изменениями по запросу.

...