【问题标题】:How to compile *only* uuid from linux utils如何从 linux utils 编译 *only* uuid
【发布时间】:2014-04-17 00:57:57
【问题描述】:

我有 linux utils 代码(可以在这里找到:https://www.kernel.org/pub/linux/utils/util-linux/),我只需要 libuuid,没有别的。我尝试设置许多“--disable-”标志,但它似乎仍在编译我不需要的东西。

这是我的实际配置命令:

./configure --disable-libblkid --disable-libmount --disable-mount --disable-losetup --disable-cytune --disable-fsck --disable-partx --disable-uuidd --disable-mountpoint --disable-fallocate --disable-unshare --disable-nsenter --disable-setpriv --disable-eject --disable-agetty --disable-cramfs --disable-bfs --disable-fdformat --disable-hwclock --disable-wdctl --disable-switch_root --disable-pivot_root --disable-kill --disable-last --disable-utmpdump --disable-mesg --disable-raw --disable-rename --disable-login --disable-nologin --disable-sulogin --disable-su --disable-runuser --disable-ul --disable-more --disable-pg --disable-setterm --disable-schedutils --disable-wall --build="$BUILD_ARCH" --host="$HOST_ARCH" --prefix="$outputdir" --exec-prefix="$outputdir" 

这是我的输出:

<...build things including libuuid...>
  CC       fdisks/cfdisk-cfdisk.o
../fdisks/cfdisk.c: In function 'get_string':
../fdisks/cfdisk.c:447:5: warning: implicit declaration of function 'getyx' [-Wimplicit-function-declaration]
../fdisks/cfdisk.c:447:5: warning: nested extern declaration of 'getyx' [-Wnested-externs]
../fdisks/cfdisk.c:447:11: error: 'stdscr' undeclared (first use in this function)
<...>

有没有办法只构建 libuuid?

【问题讨论】:

  • 如果 libuuid 有依赖项,你需要让它们可用或让它编译它们。该错误看起来像是缺少某些东西,可能是您禁用的东西。为什么不让它构建它想要的东西,然后在事后提取库?

标签: linux compilation linux-kernel uuid configure


【解决方案1】:

我只能使用这些参数构建 libuuid:

--disable-all-programs --enable-libuuid

【讨论】:

    【解决方案2】:

    最简单的方法是从您提供的链接中提取最新的linux-utils 压缩包,提取其内容,然后修改根级别的Makefile.am。查找如下所示的部分:


    include tools/Makemodule.am
    include include/Makemodule.am
    include lib/Makemodule.am
    include libuuid/Makemodule.am
    include libblkid/Makemodule.am
    include libmount/Makemodule.am
    include libsmartcols/Makemodule.am
    include libfdisk/Makemodule.am
    
    include schedutils/Makemodule.am
    include text-utils/Makemodule.am
    include term-utils/Makemodule.am
    include login-utils/Makemodule.am
    include sys-utils/Makemodule.am
    include misc-utils/Makemodule.am
    include disk-utils/Makemodule.am
    
    include bash-completion/Makemodule.am
    
    include tests/Makemodule.am
    

    并将其修改为如下所示(仅保留 libuuid 条目未注释):

    #include tools/Makemodule.am
    #include include/Makemodule.am
    #include lib/Makemodule.am
    include libuuid/Makemodule.am
    #include libblkid/Makemodule.am
    #include libmount/Makemodule.am
    #include libsmartcols/Makemodule.am
    #include libfdisk/Makemodule.am
    #
    #include schedutils/Makemodule.am
    #include text-utils/Makemodule.am
    #include term-utils/Makemodule.am
    #include login-utils/Makemodule.am
    #include sys-utils/Makemodule.am
    #include misc-utils/Makemodule.am
    #include disk-utils/Makemodule.am
    #
    #include bash-completion/Makemodule.am
    #
    #include tests/Makemodule.am
    

    最后,从根目录(您提取的存档的),执行以下命令:

    autoconf
    automake
    ./configure
    make
    

    您可能需要运行automake --add-missing 而不是automake,以及autoreconf --force --install 而不是autoconf,具体取决于您系统上安装的autotools 版本。

    现在,只需通过 find . -iname "*libuuid.so*" 找到您构建的库。

    【讨论】:

    • @s-g 我一直在想这个问题会不会被OP再次看到。
    【解决方案3】:

    您可以从https://sourceforge.net/projects/libuuid/ 获取代码并编译它。这应该只构建libuuid ....

    【讨论】:

      猜你喜欢
      • 2021-06-14
      • 1970-01-01
      • 1970-01-01
      • 2023-03-18
      • 2014-01-16
      • 2017-06-05
      • 2018-06-19
      • 1970-01-01
      • 2019-06-14
      相关资源
      最近更新 更多