【问题标题】:Creating a binary package of a compiled library创建已编译库的二进制包
【发布时间】:2026-02-03 17:40:01
【问题描述】:

我正在运行 gentoo 并手动编译并安装了 flann 库。我需要创建一个扩展名为 .tar.tbz2 的二进制包,其中包含所有必需的文件。我尝试安装到一个单独的文件夹并压缩它,但它没有被识别为实际的包。 (使用 make install DESTDIR=folder)

我对该文件的尝试包含 usr 作为子目录。

附加信息:我将库打包为交叉编译的一部分。

【问题讨论】:

  • 你有想过这个吗?
  • @user1938107 我不得不使用emerge来安装自动生成二进制文件的包。对于找不到最新 ebuild 的软件包,请按照此处所述创建本地覆盖:wiki.gentoo.org/wiki/Overlay/Local_overlay
  • 我需要一个特定的 boost 库,它在当前的emerge 中不可用,aldebaran 说不要使用emerge --sync。您是否使用叠加层解决了这个问题?

标签: linux package libraries packaging gentoo


【解决方案1】:

--prefix=pathtoinstall添加到./configure,然后执行make和make install并从pathtoinstall

生成tar
./configure --prefix=pathtoinstall
make
make install
tar -cjvf flann.tar.bz2 pathtoinstall

【讨论】:

  • 所以它使用 CMAKE 而不是配置,我运行了这个:cmake CMakeLists.txt -DCMAKE_INSTALL_PREFIX=/home/nao/libraries/flann/pack make make install tar -cjvf flann.tar.bz2 /home/nao/libraries/flann/pack 它成功了,但是当我尝试使用它时,我得到 **[ERROR]: Binary package exception: Unknown package type * * 谢谢你的回答!
  • 你将如何使用 flann.tar.bz2 包我的意思是你正在使用哪个命令?
  • 我正在尝试将其导入qibuild 工具链community.aldebaran-robotics.com/doc/1-14/dev/tools/… 这对于从emerge 安装的软件包来说很好,因为它会自动生成二进制文件。
【解决方案2】:

您可以为您的库编写一个 ebuild 并使用 quickpkg 来执行二进制包。

优点:如果依赖项中断,它会被重建(emerge @preserved-rebuild / revdep-rebuild)

【讨论】: