2

ここの壁に頭をぶつけています。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 {} \;

すべての依存関係を静的にリンクする必要があるためと思われますが、続行できません。

4

2 に答える 2

1

端末に吐き出された最後のリンクコマンドを見て、「共有」を「静的」に置き換えて、自分で(手動で)再実行します(ライブラリを使用した静的リンクで共有ライブラリを構築できますか?

于 2013-02-13T02:17:39.880 に答える
0

これは、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'

これは、次の 2 つの理由からちょっとしたハックです。

  1. ライブラリの依存関係をハードコーディングします (X の他のバージョンでは変更される可能性があります)。

  2. libtirpc への奇妙な依存関係が導入されます。それがなければ、動的にリンクするときに libnsl によって提供される xdrmem_create(3) およびその他のいくつかの未解決のシンボルを取得しました。

    /tmp/xorg-server-1.13.0/os/rpcauth.c:79: undefined reference to `xdrmem_create'
    
于 2013-03-18T17:54:21.027 に答える