- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试使用 cmake 构建一个 rpm 包。这个包构建了一个库并将其打包好,一切都是 hunky-dory
在下一次迭代中,我使用以下命令添加“soname”
set_property(TARGET ${MY_TARGET} PROPERTY VERSION "${SO_VERSION_STRING}")
set_property(TARGET ${MY_TARGET} PROPERTY SOVERSION "${MAJOR_STRING}")
我使用以下命令安装(在打包到 rpm 之前,我们需要安装)它:
install ( DIRECTORY <PATH_WHERE_LIBS_ARE> DESTINATION <PATH_WHERE_IT_NEEDS_TO_RESIDE> FILES_MATCHING PATTERN "libABC.so*" )
当 rpm 在 Ubuntu 上编译时,它不会显示任何依赖关系
rpm -qpR my-package-x.yy.zz.pppp.x86_64.rpm
/bin/sh
/bin/sh
rpmlib(CompressedFileNames) <= 3.0.4-1
rpmlib(FileDigests) <= 4.6.0-1
rpmlib(PayloadFilesHavePrefix) <= 4.0-1
当它在 CentOS 上编译时,它添加了一个依赖项:
rpm -qpR my-package-x.yy.zz.pppp.x86_64.rpm
/bin/sh
/bin/sh
/bin/sh
/bin/sh
/bin/sh
/bin/sh
libABC.so.1()(64bit)
rpmlib(CompressedFileNames) <= 3.0.4-1
rpmlib(FileDigests) <= 4.6.0-1
rpmlib(PayloadFilesHavePrefix) <= 4.0-1
rpmlib(PayloadIsXz) <= 5.2-1
问题是为什么
libABC.so.1()(64bit) ,是否被 CentOS 添加了依赖项?
"Missing" lib for rpm install when it is present in rpm file
最佳答案
当 RPM 构建包时,它会自动扫描所有已安装的文件并创建一个由包提供的东西(例如,可执行文件、库)的列表,以及所需的依赖项(例如,共享库、系统功能)。
这个想法是工具(如 rpmbuild)可以自动识别至少一些程序依赖项,因此它们应该自动将它们添加为包依赖项。
库有点有趣,因为它们既被视为依赖项,又被视为 RPM 包提供的功能。
AFAIK,一个 so-version 启用了这个特性,因为它向 RPM 的依赖查找器发出信号,表明这是一个其他人可能想要使用的格式良好的库。
你可以做几件事:
libABC.so.1
和 libABC.so.1()(64bit)
列在包装的提供中,就这样吧?它使其他程序更容易最终依赖这个库。AutoReq: no
.关于linux - CentOS rpm 包依赖于它使用 cmake 构建的 lib "soname",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70153198/
如何以一种方式链接二进制文件以与两个现有版本的库兼容,这两个版本具有冲突的 SONAME ?这两个版本不共享相同的 SONAME 前缀。一个是 libcapi10.so.3,另一个是 libcapi1
我正在尝试在 64 位 Ubuntu 12.04 上构建 SLitrani。我已经从源代码构建了 ROOT 5.34.03,我确实弄清楚了如何为 $ROOTDEV 设置 LD_LIBRARY_PATH
如果我创建一个没有像这样的 SONAME 的共享库 gcc -shared libfoo.o -o libfoo.so 并链接到它, 链接器如何找到我的共享库? 是文件名libfoo.so被链接器视为
我正在编译 sipXtapi,我需要用这一行编译 gcc -shared -DPIC .libs/codec_pcmapcmu_la-CodecPcmaWrapper.o .libs/codec_
我制作了一个程序,它使用两个共享库(我编译的)并且放置如下: /home_directory_where_I_compile_and_run_everything -->/lib/libjson_li
我已经编写了一个共享对象来修改 FreeType 的 FT_Load_Glyph 和 FT_Render_Glyph 函数的参数,目前通过将其插入 LD_PRELOAD 和 dlsym。 这工作正常,
我学会了“ Program Library HOWTO ”。它提到使用 soname 来管理版本,如下所示。 gcc -shared -fPIC -Wl,-soname,libfoo.so.1 -o
我正在为一个库制作一个 Debian 包,我称之为 libmystuff。目前版本为 4.0.0,下一个版本将是 4.1.0,并且可能会破坏 API 兼容性。该项目使用 CMake 构建。 这在 so
我正在使用 eclipse cdt 来编译和运行 C++ 应用程序。 My_main_program 特别需要 libjpeg.so.62。 我的 Ubuntu 系统以前在 /usr/local/li
我正在使用 Cmake for Android(使用 Android NDK)编译 libclang。 这是配置文件名和soname的CMake配置部分: set_target_properties(
我想从不同平台上的源代码构建Boost。我已经能够在linux上(在docker镜像上)做到这一点。我也可以在自己的计算机(Mac OS X 10.13 Xcode 9.4.1)上执行此操作,但是当我
我正在尝试在 mysql 5.5 中安装半同步复制并尝试执行以下命令: 安装插件“rpl_semi_sync_master”SONAME“semisync_master.so” 但是这个命令抛出以下错
我正在尝试使用 cmake 构建一个 rpm 包。这个包构建了一个库并将其打包好,一切都是 hunky-dory 在下一次迭代中,我使用以下命令添加“soname” set_property(TARG
据我了解,“/lib/ld-linux.so.2”中的“2”很少更改。有不能与新库一起工作的旧程序,也有不能与旧库一起工作的新程序。但它们都引用/lib/ld-linux.so.2,从而阻止安装这两个
我尝试在 Mac OS X 上使用 CMake 构建我的应用程序,但出现以下错误: Linking CXX shared library libsml.so ld: unknown option: -
我正在用 cmake android 交叉编译 gdcm,直到编译结束,但最后我得到以下错误。你们如何在编译库时在 cmake-gui 或 cmake 中设置 -soname,这样我们就可以避免以下类
我是一名优秀的程序员,十分优秀!