我正在试验一些开源代码,但无法将其部署到远程 linux 设备。上传库的软链接时发生错误。我有以下内容:
- Ubuntu 10.04 在 Windows 7 机器上的 VMWare Player 中运行
- 嵌入式linux设备
- Qt 创作者 2.4.1
我在其他 Qt 项目中使用过相同的系统,并且能够部署到远程 linux 目标。这个项目的不同之处在于它使用了一个带有软链接的库。现在我的 *.pro 文件中有以下内容:
# remote deployment of libraries
install_lib.path = /home/name
install_lib.files = ../../lib/*
install_lib.extra = cp ../../lib/* /home/name
# install
target.path = /home/name
sources.path = /home/name
INSTALLS += target sources install_lib
我收到的错误如下:
ln: invalid option -- 'v'
BusyBox v1.19.4 (2012-09-11 06:53:36 PDT) multi-call binary.
Usage: ln [OPTIONS] TARGET... LINK|DIR
Create a link LINK or DIR/TARGET to the specified TARGET(s)
-s Make symlinks instead of hardlinks
-f Remove existing destinations
-n Don't dereference symlinks - treat like normal file
-b Make a backup of the target (if exists) before link operation
-S suf Use suffix instead of ~ when making backup files
12:39:46: Failed to upload file '/home/name/Qt/proj/lib/libq.so'.
12:39:46: Deploy step failed.
在我未经训练的眼睛看来,Qt 似乎试图在我的设备上使用 BusyBox 不支持的命令。有没有更好的方法将文件从我的开发环境移动到设备?我可能不需要更改库中的任何内容,但如果我这样做了,我希望自动上传。
顺便说一句,我也尝试使用 QMAKE_PRE_LINK 和 QMAKE_POST_LINK 没有成功。与尝试在 Qt Creator 中添加部署步骤相同的故事。如果有另一种方法可以将我的项目与库链接,我也愿意尝试。
更新
以下是 Makefile 的部分内容,用于显示 qmake 基于我的 *.pro 文件生成的内容。
INSTALL_PROGRAM = install -m 755 -p
install_install_lib: first FORCE
@$(CHK_DIR_EXISTS) $(INSTALL_ROOT)/home/name/ || $(MKDIR) $(INSTALL_ROOT)/home/name/
cp ../../lib/* /home/name
-$(INSTALL_PROGRAM) (edit)/lib/libqhttpserver.so $(INSTALL_ROOT)/home/name/
-$(INSTALL_PROGRAM) (edit)/lib/libqhttpserver.so.0 $(INSTALL_ROOT)/home/name/
-$(INSTALL_PROGRAM) (edit)/lib/libqhttpserver.so.0.1 $(INSTALL_ROOT)/home/name/
-$(INSTALL_PROGRAM) (edit)/lib/libqhttpserver.so.0.1.0 $(INSTALL_ROOT)/home/name/
老实说, install_lib.extra 字段似乎没有多大作用。