在 OpenWrt 包 Makefile 的安装部分,以下代码将从 lib* 文件中删除软链接并将实例复制到 $(1)
在构建/编译部分,我们在 ${PKG_BUILD_DIR} 下构建了 3 个库
${PKG_BUILD_DIR}/libapi.so // -> libapi.so.1.0
${PKG_BUILD_DIR}/libapi.so.1.0 // -> libapi.so.1.0.1
${PKG_BUILD_DIR}/libapi.so.1.0.1
在Build/Installdev和Package/api/install部分,如果使用$(INSTALL_BIN)/$(INSTALL_DATA)将这3个lib从${PKG_BUILD_DIR}复制到$(1)/usr/lib/,则softlik将被删除。
define Package/api/install
$(INSTALL_BIN) $(PKG_BUILD_DIR)/libapi.so $(1)/usr/lib/
$(INSTALL_BIN) $(PKG_BUILD_DIR)/libapi.so.1.0 $(1)/usr/lib/
$(INSTALL_BIN) $(PKG_BUILD_DIR)/libapi.so.1.0.1 $(1)/usr/lib/
endef
我必须使用的唯一方法是 $(CP) 或“cp -f”
但我不确定 $(CP) 是否会保留这些库的 -m0755 标志,因为我需要这些库在目标板上可执行。
define Package/api/install
$(CP) $(PKG_BUILD_DIR)/libapi.so* $(1)/usr/lib/
endef
如何让 $(INSTALL_BIN) 保留软链接?
日志和变量:
INSTALL_BIN = install -m0755
INSTALL_DATA = install -m0644
CP = cp -fpR