Компиляция статического связанного двоичного файла Xvfb
Я трахал мою голову против стены. Я пытаюсь скомпилировать статический связанный двоичный файл виртуального фреймбуффера Xvfb.
Http://manpages.ubuntu.com/manpages/natty/man1/Xvfb.1.html
Прямо сейчас я компилирую из исходного кода вот так:
$ sudo apt-get build-dep xvfb
$ apt-get source Xvfb
$ cd xorg-source
$ ./configure --enable-shared=no
$ make
Это по-прежнему приводит к скомпилированному двоичному файлу, но он все еще динамически связан (я проверяю с помощью этой команды)
find -iname Xvfb -type f -exec file {} ;
Это, вероятно, потому, что мне нужно статически связать все зависимости, но у меня есть неприятности продолжаются.
2 ответа:
Это делает трюк для меня на Ubuntu 12.10 / amd64:
# be sure to build static versions of all included libraries $ ./configure --enable-static $ make $ cd hw/vfb $ make clean # this provides static versions of some functions which are dynamic only in eglibc $ sudo apt-get install libtirpc-dev # LDFLAGS=-all-static asks libtool to do static linking # LD_EXPORT_SYMBOLS_FLAGS= causes --export-dynamic to be omitted # LIBS='...' fills in missing dependencies for static libraries $ make LDFLAGS=-all-static LD_EXPORT_SYMBOLS_FLAG= LIBS='-lfreetype -lgpg-error -lfontenc -ltirpc -lz -lbz2 -lm -lrt -lpthread'
Это немного хак по двум причинам:
Он жестко кодирует зависимости библиотеки (которые могут изменяться в других версиях X)
Он вводит странную зависимость от libtirpc. Без него я получил неразрешенные символы для xdrmem_create(3) и несколько других вещей, которые предоставляются libnsl при динамическом соединении:
/tmp/xorg-server-1.13.0/os/rpcauth.c:79: undefined reference to `xdrmem_create'
Посмотрите на самую последнюю команду link, выброшенную на терминал, и повторно запустите ее самостоятельно (вручную), заменив "shared" на "static" (Возможно ли построить общую библиотеку со статической используемой библиотекой link?)