Ubuntu 编译Xvfb的静态链接二进制文件

Ubuntu 编译Xvfb的静态链接二进制文件,ubuntu,compilation,xvfb,Ubuntu,Compilation,Xvfb,我的头撞在墙上了。我正在尝试编译Xvfb虚拟帧缓冲区的静态链接二进制文件 现在,我从源代码处编译如下: $ sudo apt-get build-dep xvfb $ apt-get source Xvfb $ cd xorg-source $ ./configure --enable-shared=no $ make 这仍然会产生一个已编译的二进制文件,但它仍然是动态链接的(我正在用这个命令检查) 这可能是因为我需要对所有依赖项进行静态链接,但我在继续操作时遇到了问题。查看发送到终端的最后

我的头撞在墙上了。我正在尝试编译Xvfb虚拟帧缓冲区的静态链接二进制文件

现在,我从源代码处编译如下:

$ sudo apt-get build-dep xvfb
$ apt-get source Xvfb
$ cd xorg-source
$ ./configure --enable-shared=no
$ make
这仍然会产生一个已编译的二进制文件,但它仍然是动态链接的(我正在用这个命令检查)


这可能是因为我需要对所有依赖项进行静态链接,但我在继续操作时遇到了问题。

查看发送到终端的最后一个链接命令,然后自己(手动)重新运行它,将“共享”替换为“静态”(

这对我在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'
    

  • 谢谢我不太清楚你的确切意思。我没有看到任何带有“共享”一词的链接命令。链接的帖子也没有什么意义。你介意详细说明一下吗?
    /tmp/xorg-server-1.13.0/os/rpcauth.c:79: undefined reference to `xdrmem_create'